commit:     c4f4edf10c8483631a77948a50f2b9308adf5cef
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Sep  2 16:14:01 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Sep  2 16:17:12 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c4f4edf1

sys-apps/dbus: add 1.15.8

Upstream have dropped non-meson support, so here we go!

Rebased the elogind patch reluctantly, but I've dropped the REQUIRED_USE
for one-of systemd/elogind, given floppym's analysis on the bug. The 
functionality
provided by elogind here is pretty minimal and it doesn't appear required at 
all,
so it doesn't make sense to force it.

Bug: https://bugs.gentoo.org/599494
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-apps/dbus/Manifest                             |   1 +
 sys-apps/dbus/dbus-1.15.8.ebuild                   | 232 +++++++++++++++++++++
 .../dbus/files/dbus-1.15.8-enable-elogind.patch    |  65 ++++++
 3 files changed, 298 insertions(+)

diff --git a/sys-apps/dbus/Manifest b/sys-apps/dbus/Manifest
index e0263135e574..38dd813835d5 100644
--- a/sys-apps/dbus/Manifest
+++ b/sys-apps/dbus/Manifest
@@ -1,2 +1,3 @@
 DIST dbus-1.15.4.tar.xz 1404576 BLAKE2B 
6007be414497ef95f1e6a7e937c6a0a9b590c163b6b3a1c3e61b6726b988192728aa85a328d89472f34613d48ca1bb6844e86bee997acb4f377a228b2072fbce
 SHA512 
53a5b7161940c5d4432b902c3c0ac1f1965978e3791a640d1a71f2d819474b727497f7a13c95d7c5850baef659062f1434296a3f5e56701383cc573dfbf187ee
 DIST dbus-1.15.6.tar.xz 1406672 BLAKE2B 
5c2b876ede784a82c43096e82c3fa4b905cab26aa8f27e5553d07c53bde6120854cd9b109f3f179e9b47ecd7e2b69c08655b96d821c7790c1c9f52bb6356d331
 SHA512 
8c2e207d98245d5f8d358e9824be9e8646af8147958e8bd56e18d478e8976e58a6645ee1aba62451fcc58443157e2a39c4a6ed9c2e440e7b6b05053d022f0113
+DIST dbus-1.15.8.tar.xz 1149088 BLAKE2B 
7c1962dfccc6a1b6250e80b0706d7f44536fabeff009013865ec4b1edaec6d4b47dcbe8f78caa61ef7aef4bac6b79f0e2027dd16bbb2baae328429e648bf8b8c
 SHA512 
84b8ac194ede3bf300f4501395b7253538469a4f9d59ea4adaf800282e359ef43494d81941b338081d3704317d39f0aba14906c6490419f04f946eb9d815f46c

diff --git a/sys-apps/dbus/dbus-1.15.8.ebuild b/sys-apps/dbus/dbus-1.15.8.ebuild
new file mode 100644
index 000000000000..c783689b9742
--- /dev/null
+++ b/sys-apps/dbus/dbus-1.15.8.ebuild
@@ -0,0 +1,232 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Be careful with packaging odd-version-number branches!
+# After >1.15, we should at least keep stable as an upstream stable branch,
+# possibly even ~arch too, given the note about security releases on their 
website.
+# See https://www.freedesktop.org/wiki/Software/dbus/#download.
+
+PYTHON_COMPAT=( python3_{10..12} )
+TMPFILES_OPTIONAL=1
+
+inherit linux-info meson-multilib python-any-r1 readme.gentoo-r1 systemd 
tmpfiles virtualx
+
+DESCRIPTION="A message bus system, a simple way for applications to talk to 
each other"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/dbus/";
+SRC_URI="https://dbus.freedesktop.org/releases/dbus/${P}.tar.xz";
+
+LICENSE="|| ( AFL-2.1 GPL-2 )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos 
~x64-solaris"
+# TODO: USE=daemon
+IUSE="debug doc elogind selinux static-libs systemd test valgrind X"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+       acct-user/messagebus
+       app-text/xmlto
+       app-text/docbook-xml-dtd:4.4
+       sys-devel/autoconf-archive
+       virtual/pkgconfig
+       doc? ( app-doc/doxygen )
+"
+COMMON_DEPEND="
+       >=dev-libs/expat-2.1.0
+       elogind? ( sys-auth/elogind )
+       selinux? (
+               sys-process/audit
+               sys-libs/libselinux
+       )
+       systemd? ( sys-apps/systemd:= )
+       X? (
+               x11-libs/libX11
+               x11-libs/libXt
+       )
+"
+DEPEND="
+       ${COMMON_DEPEND}
+       dev-libs/expat
+       test? (
+               ${PYTHON_DEPS}
+               >=dev-libs/glib-2.40:2
+       )
+       valgrind? ( >=dev-util/valgrind-3.6 )
+       X? ( x11-base/xorg-proto )
+"
+RDEPEND="
+       ${COMMON_DEPEND}
+       acct-user/messagebus
+       selinux? ( sec-policy/selinux-dbus )
+       systemd? ( virtual/tmpfiles )
+"
+
+DOC_CONTENTS="
+       Some applications require a session bus in addition to the system
+       bus. Please see \`man dbus-launch\` for more information.
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.15.8-enable-elogind.patch # bug #599494
+)
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+
+       if use kernel_linux; then
+               CONFIG_CHECK="~EPOLL"
+               linux-info_pkg_setup
+       fi
+}
+
+src_configure() {
+       local rundir=$(usex kernel_linux /run /var/run)
+
+       sed -e "s;@rundir@;${EPREFIX}${rundir};g" "${FILESDIR}"/dbus.initd.in \
+               > "${T}"/dbus.initd || die
+
+       meson-multilib_src_configure
+}
+
+multilib_src_configure() {
+       local emesonargs=(
+               --localstatedir="${EPREFIX}/var"
+               -Druntime_dir="${EPREFIX}${rundir}"
+
+               -Ddefault_library=$(multilib_native_usex static-libs both 
shared)
+
+               -Dapparmor=disabled
+               -Dasserts=false # TODO
+               -Dchecks=false # TODO
+               $(meson_use debug stats)
+               $(meson_use debug verbose_mode)
+               -Dcontainers=false
+               -Ddbus_user=messagebus
+               -Dkqueue=disabled
+               $(meson_feature kernel_linux inotify)
+               $(meson_native_use_feature doc doxygen_docs)
+               $(meson_native_enabled xml_docs) # Controls man pages
+
+               -Dembedded_tests=false
+               -Dinstalled_tests=false
+               $(meson_native_true message_bus) # TODO: USE=daemon?
+               $(meson_feature test modular_tests)
+               -Dqt_help=disabled
+
+               $(meson_native_true tools)
+
+               $(meson_feature elogind)
+               $(meson_feature systemd)
+               $(meson_use systemd user_session)
+               $(meson_feature X x11_autolaunch)
+               $(meson_native_use_feature valgrind)
+
+               # libaudit is *only* used in DBus wrt SELinux support, so 
disable it if
+               # not on an SELinux profile.
+               $(meson_feature selinux)
+               $(meson_feature selinux libaudit)
+
+               -Dsession_socket_dir="${EPREFIX}"/tmp
+               -Dsystem_pid_file="${EPREFIX}${rundir}"/dbus.pid
+               -Dsystem_socket="${EPREFIX}${rundir}"/dbus/system_bus_socket
+               -Dsystemd_system_unitdir="$(systemd_get_systemunitdir)"
+               -Dsystemd_user_unitdir="$(systemd_get_userunitdir)"
+       )
+
+       if [[ ${CHOST} == *-darwin* ]] ; then
+               emesonargs+=(
+                       -Dlaunchd=enabled
+                       -Dlaunchd_agent_dir="${EPREFIX}"/Library/LaunchAgents
+               )
+       fi
+
+       meson_src_configure
+}
+
+amultilib_src_configure() {
+       myconf=(
+               $(use_enable static-libs static)
+       )
+
+       # $(has_version dev-libs/dbus-glib && echo --enable-modular-tests)
+}
+
+multilib_src_compile() {
+       # After the compile, it uses a selinuxfs interface to
+       # check if the SELinux policy has the right support
+       use selinux && addwrite /selinux/access
+
+       meson_src_compile
+}
+
+multilib_src_test() {
+       # DBUS_TEST_MALLOC_FAILURES=0 to avoid huge test logs
+       # 
https://gitlab.freedesktop.org/dbus/dbus/-/blob/master/CONTRIBUTING.md#L231
+       DBUS_TEST_MALLOC_FAILURES=0 DBUS_VERBOSE=1 virtx meson_src_test
+
+}
+
+multilib_src_install_all() {
+       newinitd "${T}"/dbus.initd dbus
+
+       if use X; then
+               # dbus X session script (bug #77504)
+               # turns out to only work for GDM (and startx). has been merged 
into
+               # other desktop (kdm and such scripts)
+               exeinto /etc/X11/xinit/xinitrc.d
+               newexe "${FILESDIR}"/80-dbus-r1 80-dbus
+       fi
+
+       # Needs to exist for dbus sessions to launch
+       keepdir /usr/share/dbus-1/services
+       keepdir /etc/dbus-1/{session,system}.d
+       # machine-id symlink from pkg_postinst()
+       keepdir /var/lib/dbus
+       # Let the init script create the /var/run/dbus directory
+       rm -rf "${ED}"/{,var/}run
+
+       # bug #761763
+       rm -rf "${ED}"/usr/lib/sysusers.d
+
+       dodoc AUTHORS NEWS README doc/TODO
+       readme.gentoo_create_doc
+
+       mv "${ED}"/usr/share/doc/dbus/* "${ED}"/usr/share/doc/${PF}/ || die
+       rm -rf "${ED}"/usr/share/doc/dbus || die
+}
+
+pkg_postinst() {
+       readme.gentoo_print_elog
+
+       if use systemd; then
+               tmpfiles_process dbus.conf
+       fi
+
+       # Ensure unique id is generated and put it in /etc wrt bug #370451 but 
symlink
+       # for DBUS_MACHINE_UUID_FILE (see tools/dbus-launch.c) and reverse
+       # dependencies with hardcoded paths (although the known ones got fixed 
already)
+       # TODO: should be safe to remove at least the ln because of the above 
tmpfiles_process?
+       dbus-uuidgen --ensure="${EROOT}"/etc/machine-id
+       ln -sf "${EPREFIX}"/etc/machine-id "${EROOT}"/var/lib/dbus/machine-id
+
+       if [[ ${CHOST} == *-darwin* ]]; then
+               local plist="org.freedesktop.dbus-session.plist"
+               elog
+               elog "For MacOS/Darwin we now ship launchd support for dbus."
+               elog "This enables autolaunch of dbus at session login and 
makes"
+               elog "dbus usable under MacOS/Darwin."
+               elog
+               elog "The launchd plist file ${plist} has been"
+               elog "installed in ${EPREFIX}/Library/LaunchAgents."
+               elog "For it to be used, you will have to do all of the 
following:"
+               elog " + cd ~/Library/LaunchAgents"
+               elog " + ln -s ${EPREFIX}/Library/LaunchAgents/${plist}"
+               elog " + logout and log back in"
+               elog
+               elog "If your application needs a proper 
DBUS_SESSION_BUS_ADDRESS"
+               elog "specified and refused to start otherwise, then export the"
+               elog "the following to your environment:"
+               elog " 
DBUS_SESSION_BUS_ADDRESS=\"launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET\""
+       fi
+}

diff --git a/sys-apps/dbus/files/dbus-1.15.8-enable-elogind.patch 
b/sys-apps/dbus/files/dbus-1.15.8-enable-elogind.patch
new file mode 100644
index 000000000000..1cf9094990e6
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.15.8-enable-elogind.patch
@@ -0,0 +1,65 @@
+https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/53
+https://bugs.gentoo.org/599494
+
+Especially see https://bugs.gentoo.org/599494#c21 - this functionality isn't
+particularly required. The only known consumer at the moment is hplip.
+--- a/dbus/dbus-userdb-util.c
++++ b/dbus/dbus-userdb-util.c
+@@ -41,6 +41,9 @@
+ #ifdef HAVE_SYSTEMD
+ #include <systemd/sd-login.h>
+ #endif
++#if HAVE_ELOGIND
++#include <elogind/sd-login.h>
++#endif
+ 
+ /**
+  * @addtogroup DBusInternalsUtils
+@@ -67,7 +70,7 @@ dbus_bool_t
+ _dbus_is_console_user (dbus_uid_t uid,
+                      DBusError *error)
+ {
+-#ifdef HAVE_SYSTEMD
++#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
+   /* check if we have logind */
+   if (access ("/run/systemd/seats/", F_OK) >= 0)
+     {
+--- a/dbus/meson.build
++++ b/dbus/meson.build
+@@ -23,6 +23,7 @@ dbus_dependencies = [
+     threads,
+     network_libs,
+     systemd,
++    elogind,
+     valgrind.partial_dependency(compile_args: true),
+ ]
+ 
+--- a/meson.build
++++ b/meson.build
+@@ -478,6 +478,10 @@ if use_launchd
+     endif
+ endif
+ 
++elogind = dependency('elogind', version: '>=209', required: 
get_option('elogind'))
++use_elogind = elogind.found()
++config.set('HAVE_ELOGIND', use_elogind)
++
+ systemd = dependency('libsystemd', version: '>=209', required: 
get_option('systemd'))
+ use_systemd = systemd.found()
+ config.set('HAVE_SYSTEMD', use_systemd)
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -244,6 +244,13 @@ option(
+   description: 'Systemd at_console support'
+ )
+ 
++option(
++  'elogind',
++  type: 'feature',
++  value: 'auto',
++  description: 'elogind at_console support'
++)
++
+ option(
+   'test_socket_dir',
+   type: 'string',

Reply via email to