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.
149 lines
3.6 KiB
149 lines
3.6 KiB
# Copyright 1999-2023 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
PYTHON_COMPAT=( python3_{9..11} )
|
|
inherit python-any-r1 meson cmake flag-o-matic
|
|
|
|
SDP="systemd-stable-252.6"
|
|
MUSL_PATCHSET="systemd-musl-patches-252.4"
|
|
|
|
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/${MUSL_PATCHSET}.tar.gz
|
|
https://dev.gentoo.org/~gyakovlev/distfiles/${MUSL_PATCHSET}.tar.gz
|
|
https://dev.gentoo.org/~soap/distfiles/${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() {
|
|
python_has_version -b "dev-python/jinja[${PYTHON_USEDEP}]"
|
|
}
|
|
|
|
S="${WORKDIR}/sdbus-cpp-${PV}"
|
|
SDS="${WORKDIR}/${SDP}"
|
|
SDB="${WORKDIR}/systemd-build"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-pc-reqs.patch
|
|
)
|
|
|
|
pkg_setup() {
|
|
use systemd || python-any-r1_pkg_setup
|
|
}
|
|
|
|
src_prepare() {
|
|
if ! use systemd; then
|
|
pushd "${SDS}" || die
|
|
use elibc_musl && eapply "${WORKDIR}/${MUSL_PATCHSET}"
|
|
eapply "${FILESDIR}"/${PN}-static-libsystemd.patch
|
|
popd || die
|
|
fi
|
|
|
|
cmake_src_prepare
|
|
}
|
|
|
|
src_configure() {
|
|
if ! use systemd; then
|
|
# Avoid redefinition of struct ethhdr.
|
|
use elibc_musl && append-cppflags -D__UAPI_DEF_ETHHDR=0
|
|
|
|
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
|
|
}
|