You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-cpp/sdbus-c++/sdbus-c++-0.9.0-r4.ebuild

142 lines
3.5 KiB

# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..10} )
inherit python-any-r1 meson cmake
SDP="systemd-stable-251.4"
MUSL_PATCHSET="251.2"
DESCRIPTION="High-level C++ D-Bus library"
HOMEPAGE="https://github.com/Kistler-Group/sdbus-cpp"
SRC_URI="https://github.com/Kistler-Group/sdbus-cpp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
!systemd? (
https://github.com/systemd/${SDP%-*}/archive/v${SDP##*-}/${SDP}.tar.gz
elibc_musl? (
https://dev.gentoo.org/~floppym/distfiles/systemd-musl-patches-${MUSL_PATCHSET}.tar.gz
https://dev.gentoo.org/~gyakovlev/distfiles/systemd-musl-patches-${MUSL_PATCHSET}.tar.gz
https://dev.gentoo.org/~soap/distfiles/systemd-musl-patches-${MUSL_PATCHSET}.tar.gz
)
)"
LICENSE="LGPL-2.1+ Nokia-Qt-LGPL-Exception-1.1" # Nothing to do with Qt but exception text is exactly the same.
SLOT="0/0"
KEYWORDS="~amd64"
IUSE="doc systemd test tools"
RESTRICT="!test? ( test )"
RDEPEND="
!systemd? ( sys-libs/libcap )
systemd? ( >=sys-apps/systemd-236:= )
tools? ( dev-libs/expat )
"
# util-linux is needed for libmount when building libsystemd, but sdbus-c++
# doesn't need it when subsequently linking libsystemd statically.
DEPEND="
${RDEPEND}
!systemd? ( sys-apps/util-linux )
test? ( >=dev-cpp/gtest-1.10.0 )
"
BDEPEND="
virtual/pkgconfig
doc? ( app-doc/doxygen[dot] )
!systemd? (
${PYTHON_DEPS}
$(python_gen_any_dep 'dev-python/jinja[${PYTHON_USEDEP}]')
)
"
python_check_deps() {
has_version -b "dev-python/jinja[${PYTHON_USEDEP}]"
}
S="${WORKDIR}/sdbus-cpp-${PV}"
SDS="${WORKDIR}/${SDP}"
SDB="${WORKDIR}/systemd-build"
pkg_setup() {
use systemd || python-any-r1_pkg_setup
}
src_prepare() {
if ! use systemd; then
pushd "${SDS}" || die
use elibc_musl && eapply "${WORKDIR}"/musl-patches
eapply "${FILESDIR}"/${PN}-static-libsystemd.patch
popd || die
fi
cmake_src_prepare
}
src_configure() {
if ! use systemd; then
EMESON_SOURCE=${SDS} \
BUILD_DIR=${SDB} \
meson_src_configure \
--prefix "${WORKDIR}" \
--includedir "${SDP}/src" \
-Drootlibdir="${SDB}" \
-Dselinux=false \
-Dstatic-libsystemd=pic \
-Dgshadow=false \
-Dsmack=false \
-Dutmp=false
# systemd doesn't generate the needed pkg-config file during configure.
BUILD_DIR=${SDB} \
meson_src_compile libsystemd.pc
# Need this present otherwise CMake generates the wrong linker args.
touch "${SDB}"/libsystemd.a || die
fi
local mycmakeargs=(
-DBUILD_CODE_GEN=$(usex tools)
-DBUILD_DOC=yes
-DBUILD_DOXYGEN_DOC=$(usex doc)
-DBUILD_LIBSYSTEMD=no
-DBUILD_TESTS=$(usex test)
)
PKG_CONFIG_PATH=${SDB}/src/libsystemd:${PKG_CONFIG_PATH} \
cmake_src_configure
}
src_compile() {
if ! use systemd; then
BUILD_DIR=${SDB} \
meson_src_compile version.h systemd:static_library
fi
cmake_src_compile all $(usev doc)
}
src_test() {
if ! cmp -s {"${S}"/tests/integrationtests/files,/etc/dbus-1/system.d}/org.sdbuscpp.integrationtests.conf; then
ewarn "Not running the tests as a D-Bus configuration file has not been"
ewarn "installed yet or has changed since. The tests can be run after"
ewarn "the package has been merged."
return
elif [[ ! -S /run/dbus/system_bus_socket ]]; then
ewarn "Not running the tests as the system-wide D-Bus daemon is unavailable."
return
fi
cmake_src_test
}
src_install() {
cmake_src_install
rm -v "${ED}"/usr/share/doc/${PF}/COPYING || die
if use test; then
# Delete installed test binaries.
rm -rv "${ED}"/opt || die
fi
}