commit:     1423841eb6ef3c5fa2363cc38e04665ef4e06fe9
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 20 10:38:31 2022 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun Mar 20 10:38:31 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1423841e

dev-cpp/sdbus-c++: New package

Including older 0.9.0 version for msalsdk-dbusclient.

Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 dev-cpp/sdbus-c++/Manifest                         |   3 +
 dev-cpp/sdbus-c++/files/sdbus-c++-gtest-1.11.patch |  58 ++++++++++
 .../files/sdbus-c++-static-libsystemd.patch        |  10 ++
 dev-cpp/sdbus-c++/metadata.xml                     |  12 +++
 dev-cpp/sdbus-c++/sdbus-c++-0.9.0.ebuild           | 115 ++++++++++++++++++++
 dev-cpp/sdbus-c++/sdbus-c++-1.1.0.ebuild           | 119 +++++++++++++++++++++
 6 files changed, 317 insertions(+)

diff --git a/dev-cpp/sdbus-c++/Manifest b/dev-cpp/sdbus-c++/Manifest
new file mode 100644
index 000000000000..fd0c4fb8f9c5
--- /dev/null
+++ b/dev-cpp/sdbus-c++/Manifest
@@ -0,0 +1,3 @@
+DIST sdbus-c++-0.9.0.tar.gz 198979 BLAKE2B 
31cda7ce97aad05f93a015ca0f8bd93aa095f6abb6bc513343767c7221d2aeacc96ee2b6a1b0ecf50850f17506fc97aa3a9fead0332687d57bdbddf806502826
 SHA512 
8695d3efac5654cb28998cdd69c16f251654b2c95e0dc2a2f5a4b01b24dae7b04e1a1f2e9bc9fb96b99f099dd4a130ca980cb672f74829565fd0d48162a581c5
+DIST sdbus-c++-1.1.0.tar.gz 201532 BLAKE2B 
3dac74cb7fc6717db9d25463ddfb9122db54edcd3bc9d1e71d18c132ede1efaf12b514f335c3978f51277afff7e6ab5533cfd02241759f7e3d24cede8aa29c6d
 SHA512 
ba6230c0d1019875d92a92f793278c528a01692dc70e7acee8bb289af5dae65c1ad7b1c139f859cb7a960c7b48501178bfdf755163c2bc4d3766e67f3aa9b883
+DIST systemd-stable-250.4.tar.gz 11132786 BLAKE2B 
8fdfe1bad76e572dc1be0955f3d1c4080f2beb81a2f9670f80827899f5406ab8ed8675400c2f5e8ccef44cf1bceff42ceae12a42e1b67d46c0deb523e6495f25
 SHA512 
307ed0920da660b6c45d909fea66864fb98db8b2f6905d629fb2012fc4bf64dd25fd61168c22bf4098200be541be9b0e815fbde98806a99c85cb33d49d8b63d0

diff --git a/dev-cpp/sdbus-c++/files/sdbus-c++-gtest-1.11.patch 
b/dev-cpp/sdbus-c++/files/sdbus-c++-gtest-1.11.patch
new file mode 100644
index 000000000000..e6d3622ee11f
--- /dev/null
+++ b/dev-cpp/sdbus-c++/files/sdbus-c++-gtest-1.11.patch
@@ -0,0 +1,58 @@
+From 7f437a6e06d2ec3abd3e2fd1101ab6aab386bc44 Mon Sep 17 00:00:00 2001
+From: Stanislav Angelovic <stanislav.angelo...@siemens.com>
+Date: Thu, 27 Jan 2022 13:38:19 +0100
+Subject: [PATCH] fix(tests): printer for std::chrono in googletest v1.11.0
+
+---
+ tests/CMakeLists.txt          |  2 +-
+ tests/integrationtests/Defs.h | 22 ++++++++++------------
+ 2 files changed, 11 insertions(+), 13 deletions(-)
+
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index fbf198c..ec42e55 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -19,7 +19,7 @@ if (NOT TARGET GTest::gmock)
+     if (NOT TARGET GTest::gmock)
+         include(FetchContent)
+ 
+-        message("Fetching googletest...")
++        message("Fetching googletest v${GOOGLETEST_VERSION}...")
+         FetchContent_Declare(googletest
+                             GIT_REPOSITORY ${GOOGLETEST_GIT_REPO}
+                             GIT_TAG        release-${GOOGLETEST_VERSION}
+diff --git a/tests/integrationtests/Defs.h b/tests/integrationtests/Defs.h
+index 2f129a4..2bfc7c9 100644
+--- a/tests/integrationtests/Defs.h
++++ b/tests/integrationtests/Defs.h
+@@ -56,20 +56,18 @@ const bool DEFAULT_BLOCKING_VALUE{true};
+ 
+ constexpr const double DOUBLE_VALUE{3.24L};
+ 
+-/** Duration stream operator for human readable gtest value output.
+- *
+- * Note that the conversion to double is lossy if the input type has 64 or 
more bits.
+- * This is ok for our integration tests because they don't have very
+- * accurate timing requirements.
+- *
+- * @return human readable duration in seconds
+- */
++}}
++
++namespace testing::internal {
++
++// Printer for std::chrono::duration types.
++// This is a workaround, since it's not a good thing to add this to std 
namespace.
+ template< class Rep, class Period >
+-static std::ostream& operator<<(std::ostream& os, const 
std::chrono::duration<Rep, Period>& d)
+-{
++void PrintTo(const ::std::chrono::duration<Rep, Period>& d, ::std::ostream* 
os) {
+     auto seconds = 
std::chrono::duration_cast<std::chrono::duration<double>>(d);
+-    return os << seconds.count() << " s";
++    *os << seconds.count() << "s";
++}
++
+ }
+-}}
+ 
+ #endif /* SDBUS_CPP_INTEGRATIONTESTS_DEFS_H_ */

diff --git a/dev-cpp/sdbus-c++/files/sdbus-c++-static-libsystemd.patch 
b/dev-cpp/sdbus-c++/files/sdbus-c++-static-libsystemd.patch
new file mode 100644
index 000000000000..d6f018fda175
--- /dev/null
+++ b/dev-cpp/sdbus-c++/files/sdbus-c++-static-libsystemd.patch
@@ -0,0 +1,10 @@
+systemd does not include pkg-config dependencies for static linking.
+
+diff -Naur a/src/libsystemd/libsystemd.pc.in b/src/libsystemd/libsystemd.pc.in
+--- a/src/libsystemd/libsystemd.pc.in  2022-01-18 11:35:43.000000000 +0000
++++ b/src/libsystemd/libsystemd.pc.in  2022-03-05 21:24:47.139338880 +0000
+@@ -18,3 +18,4 @@
+ Version: {{PROJECT_VERSION}}
+ Libs: -L${libdir} -lsystemd
+ Cflags: -I${includedir}
++Requires: libcap

diff --git a/dev-cpp/sdbus-c++/metadata.xml b/dev-cpp/sdbus-c++/metadata.xml
new file mode 100644
index 000000000000..3bd4943a1267
--- /dev/null
+++ b/dev-cpp/sdbus-c++/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>ch...@gentoo.org</email>
+               <name>James Le Cuirot</name>
+       </maintainer>
+       <use>
+               <flag name="systemd">Use external libsystemd instead of 
statically-linked build</flag>
+               <flag name="tools">Install interface stub code generator</flag>
+       </use>
+</pkgmetadata>

diff --git a/dev-cpp/sdbus-c++/sdbus-c++-0.9.0.ebuild 
b/dev-cpp/sdbus-c++/sdbus-c++-0.9.0.ebuild
new file mode 100644
index 000000000000..2e96c31113c1
--- /dev/null
+++ b/dev-cpp/sdbus-c++/sdbus-c++-0.9.0.ebuild
@@ -0,0 +1,115 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson cmake
+
+SDP="systemd-stable-250.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/systemd/archive/v${SDP##*-}/${SDP}.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] )
+"
+
+S="${WORKDIR}/sdbus-cpp-${PV}"
+SDS="${WORKDIR}/${SDP}"
+SDB="${WORKDIR}/systemd-build"
+
+src_prepare() {
+       if ! use systemd; then
+               pushd "${SDS}" || die
+               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
+
+               # 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
+}

diff --git a/dev-cpp/sdbus-c++/sdbus-c++-1.1.0.ebuild 
b/dev-cpp/sdbus-c++/sdbus-c++-1.1.0.ebuild
new file mode 100644
index 000000000000..454cc5196d10
--- /dev/null
+++ b/dev-cpp/sdbus-c++/sdbus-c++-1.1.0.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson cmake
+
+SDP="systemd-stable-250.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/systemd/archive/v${SDP##*-}/${SDP}.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/1"
+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] )
+"
+
+S="${WORKDIR}/sdbus-cpp-${PV}"
+SDS="${WORKDIR}/${SDP}"
+SDB="${WORKDIR}/systemd-build"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-gtest-1.11.patch
+)
+
+src_prepare() {
+       if ! use systemd; then
+               pushd "${SDS}" || die
+               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
+
+               # 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
+}

Reply via email to