blob: 9e5abbf648df1df767d1ec92b460dd2adc03c482 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..12} )
inherit python-any-r1 meson cmake flag-o-matic
SDP="systemd-stable-253.7"
MUSL_PATCHSET="systemd-musl-patches-253.3"
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
}
|