summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/dbus')
-rw-r--r--sys-apps/dbus/Manifest3
-rw-r--r--sys-apps/dbus/dbus-1.15.6.ebuild (renamed from sys-apps/dbus/dbus-1.12.16.ebuild)107
-rw-r--r--sys-apps/dbus/dbus-1.15.8.ebuild224
-rw-r--r--sys-apps/dbus/files/80-dbus-r1 (renamed from sys-apps/dbus/files/80-dbus)6
-rw-r--r--sys-apps/dbus/files/dbus-1.15.0-daemon-optional.patch (renamed from sys-apps/dbus/files/dbus-daemon-optional.patch)38
-rw-r--r--sys-apps/dbus/files/dbus-1.15.0-enable-elogind.patch (renamed from sys-apps/dbus/files/dbus-enable-elogind.patch)60
-rw-r--r--sys-apps/dbus/files/dbus-1.15.8-enable-elogind.patch65
-rw-r--r--sys-apps/dbus/files/dbus.initd-r136
-rw-r--r--sys-apps/dbus/metadata.xml4
9 files changed, 401 insertions, 142 deletions
diff --git a/sys-apps/dbus/Manifest b/sys-apps/dbus/Manifest
index f40f9444ba31..5fd11e6318ea 100644
--- a/sys-apps/dbus/Manifest
+++ b/sys-apps/dbus/Manifest
@@ -1 +1,2 @@
-DIST dbus-1.12.16.tar.gz 2093296 BLAKE2B 46c4f0d384d76dffd31c18a2d2df03d0658479d8f5b2d14b1db2bf0941fecdc023307ec035e3f977fde570a9f6493bbabd020ac2cd81b0577597e355f5a72522 SHA512 27ae805170e9515a8bb0fba5f29d414edc70e3b6b28b7b65bbea47035b8eafa9ac4820cdc92645be6035f6748f8aa45679e1ffc84ba74a64859a3056d318b9bb
+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.12.16.ebuild b/sys-apps/dbus/dbus-1.15.6.ebuild
index c32f5abc2930..2dc19ec5f954 100644
--- a/sys-apps/dbus/dbus-1.12.16.ebuild
+++ b/sys-apps/dbus/dbus-1.15.6.ebuild
@@ -1,19 +1,30 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
-PYTHON_COMPAT=( python{2_7,3_{5,6,7}} )
-inherit autotools flag-o-matic linux-info python-any-r1 readme.gentoo-r1 systemd virtualx multilib-minimal
+# 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
+
+# As of 1.15.6, the Meson build system is now recommended upstream, but we
+# can't use it because our elogind patch needs rebasing and submission upstream.
+# See bug #599494.
+inherit autotools flag-o-matic linux-info python-any-r1 readme.gentoo-r1 systemd tmpfiles virtualx multilib-minimal
DESCRIPTION="A message bus system, a simple way for applications to talk to each other"
-HOMEPAGE="https://dbus.freedesktop.org/"
-SRC_URI="https://dbus.freedesktop.org/releases/dbus/${P}.tar.gz"
+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 ~m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
-IUSE="debug doc elogind kernel_linux selinux static-libs systemd test user-session X"
+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"
+IUSE="debug doc elogind selinux static-libs systemd test valgrind X"
+RESTRICT="!test? ( test )"
REQUIRED_USE="?? ( elogind systemd )"
@@ -21,14 +32,17 @@ BDEPEND="
acct-user/messagebus
app-text/xmlto
app-text/docbook-xml-dtd:4.4
- sys-devel/autoconf-archive
+ dev-build/autoconf-archive
virtual/pkgconfig
- doc? ( app-doc/doxygen )
+ doc? ( app-text/doxygen )
"
COMMON_DEPEND="
>=dev-libs/expat-2.1.0
elogind? ( sys-auth/elogind )
- selinux? ( sys-libs/libselinux )
+ selinux? (
+ sys-process/audit
+ sys-libs/libselinux
+ )
systemd? ( sys-apps/systemd:0= )
X? (
x11-libs/libX11
@@ -41,10 +55,13 @@ DEPEND="${COMMON_DEPEND}
${PYTHON_DEPS}
>=dev-libs/glib-2.40:2
)
+ valgrind? ( >=dev-debug/valgrind-3.6 )
+ X? ( x11-base/xorg-proto )
"
RDEPEND="${COMMON_DEPEND}
acct-user/messagebus
selinux? ( sec-policy/selinux-dbus )
+ systemd? ( virtual/tmpfiles )
"
DOC_CONTENTS="
@@ -56,8 +73,8 @@ DOC_CONTENTS="
TBD="${WORKDIR}/${P}-tests-build"
PATCHES=(
- "${FILESDIR}/${PN}-enable-elogind.patch"
- "${FILESDIR}/${PN}-daemon-optional.patch" # bug #653136
+ "${FILESDIR}/dbus-1.15.0-enable-elogind.patch"
+ "${FILESDIR}/dbus-1.15.0-daemon-optional.patch" # bug #653136
)
pkg_setup() {
@@ -70,12 +87,6 @@ pkg_setup() {
}
src_prepare() {
- # Tests were restricted because of this
- sed -i \
- -e 's/.*bus_dispatch_test.*/printf ("Disabled due to excess noise\\n");/' \
- -e '/"dispatch"/d' \
- bus/test-main.c || die
-
default
if [[ ${CHOST} == *-solaris* ]]; then
@@ -85,14 +96,16 @@ src_prepare() {
configure.ac || die
fi
- # required for bug 263909, cross-compile so don't remove eautoreconf
+ # required for bug #263909, cross-compile so don't remove eautoreconf
eautoreconf
}
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
+
multilib-minimal_src_configure
}
@@ -102,7 +115,7 @@ multilib_src_configure() {
# so we can get backtraces from apps
case ${CHOST} in
*-mingw*)
- # error: unrecognized command line option '-rdynamic' wrt #488036
+ # error: unrecognized command line option '-rdynamic', bug #488036
;;
*)
append-flags -rdynamic
@@ -113,8 +126,7 @@ multilib_src_configure() {
# not on an SELinux profile.
myconf=(
--localstatedir="${EPREFIX}/var"
- --docdir="${EPREFIX}/usr/share/doc/${PF}"
- --htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
+ --runstatedir="${EPREFIX}${rundir}"
$(use_enable static-libs static)
$(use_enable debug verbose-mode)
--disable-asserts
@@ -123,10 +135,10 @@ multilib_src_configure() {
$(use_enable selinux libaudit)
--disable-apparmor
$(use_enable kernel_linux inotify)
- $(use_enable kernel_FreeBSD kqueue)
+ --disable-kqueue
$(use_enable elogind)
$(use_enable systemd)
- $(use_enable user-session)
+ $(use_enable systemd user-session)
--disable-embedded-tests
--disable-modular-tests
$(use_enable debug stats)
@@ -134,7 +146,9 @@ multilib_src_configure() {
--with-system-pid-file="${EPREFIX}${rundir}"/dbus.pid
--with-system-socket="${EPREFIX}${rundir}"/dbus/system_bus_socket
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+ --with-systemduserunitdir="$(systemd_get_userunitdir)"
--with-dbus-user=messagebus
+ $(multilib_native_use_with valgrind)
$(use_with X x)
)
@@ -185,7 +199,7 @@ multilib_src_configure() {
multilib_src_compile() {
if multilib_is_native_abi; then
- # after the compile, it uses a selinuxfs interface to
+ # After the compile, it uses a selinuxfs interface to
# check if the SELinux policy has the right support
use selinux && addwrite /selinux/access
@@ -202,14 +216,17 @@ multilib_src_compile() {
}
src_test() {
- DBUS_VERBOSE=1 virtx emake -j1 -C "${TBD}" check
+ # 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 emake -j1 -C "${TBD}" check
+
}
multilib_src_install() {
if multilib_is_native_abi; then
emake DESTDIR="${D}" install
else
- emake DESTDIR="${D}" install-pkgconfigDATA
+ emake DESTDIR="${D}" install-pkgconfigDATA install-cmakeconfigDATA
emake DESTDIR="${D}" -C dbus \
install-libLTLIBRARIES install-dbusincludeHEADERS \
install-nodist_dbusarchincludeHEADERS
@@ -220,22 +237,25 @@ multilib_src_install_all() {
newinitd "${T}"/dbus.initd dbus
if use X; then
- # dbus X session script (#77504)
+ # 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
- doexe "${FILESDIR}"/80-dbus
+ newexe "${FILESDIR}"/80-dbus-r1 80-dbus
fi
- # needs to exist for dbus sessions to launch
+ # 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
+ # 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 ChangeLog NEWS README doc/TODO
+ dodoc AUTHORS NEWS README doc/TODO
readme.gentoo_create_doc
find "${ED}" -name '*.la' -delete || die
@@ -244,9 +264,14 @@ multilib_src_install_all() {
pkg_postinst() {
readme.gentoo_print_elog
- # Ensure unique id is generated and put it in /etc wrt #370451 but symlink
+ 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
@@ -270,16 +295,4 @@ pkg_postinst() {
elog "the following to your environment:"
elog " DBUS_SESSION_BUS_ADDRESS=\"launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET\""
fi
-
- if use user-session; then
- ewarn "You have enabled user-session. Please note this can cause"
- ewarn "bogus behaviors in several dbus consumers that are not prepared"
- ewarn "for this dbus activation method yet."
- ewarn
- ewarn "See the following link for background on this change:"
- ewarn "https://lists.freedesktop.org/archives/systemd-devel/2015-January/027711.html"
- ewarn
- ewarn "Known issues are tracked here:"
- ewarn "https://bugs.gentoo.org/show_bug.cgi?id=576028"
- fi
}
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..31d037ab842d
--- /dev/null
+++ b/sys-apps/dbus/dbus-1.15.8.ebuild
@@ -0,0 +1,224 @@
+# Copyright 1999-2024 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
+ dev-build/autoconf-archive
+ virtual/pkgconfig
+ doc? ( app-text/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-debug/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_native_use_feature elogind)
+ $(meson_native_use_feature systemd)
+ $(meson_use systemd user_session)
+ $(meson_native_use_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_native_use_feature selinux)
+ $(meson_native_use_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
+}
+
+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/80-dbus b/sys-apps/dbus/files/80-dbus-r1
index 5593e2cd7390..3499a6a12eca 100644
--- a/sys-apps/dbus/files/80-dbus
+++ b/sys-apps/dbus/files/80-dbus-r1
@@ -1,13 +1,13 @@
-#!/bin/bash
+#!/bin/sh
# launches a session dbus instance
-dbuslaunch="`which dbus-launch 2>/dev/null`"
+dbuslaunch=$(command -v dbus-launch 2>/dev/null)
if [ -n "$dbuslaunch" ] && [ -x "$dbuslaunch" ] && [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
if [ -n "$command" ]; then
command="$dbuslaunch --exit-with-session $command"
else
- eval `$dbuslaunch --sh-syntax --exit-with-session`
+ eval "$($dbuslaunch --sh-syntax --exit-with-session)"
fi
fi
diff --git a/sys-apps/dbus/files/dbus-daemon-optional.patch b/sys-apps/dbus/files/dbus-1.15.0-daemon-optional.patch
index 353dcb5761be..2b9cd03472d8 100644
--- a/sys-apps/dbus/files/dbus-daemon-optional.patch
+++ b/sys-apps/dbus/files/dbus-1.15.0-daemon-optional.patch
@@ -1,18 +1,13 @@
+https://bugs.gentoo.org/653136
+
From 3c08d28fbae8b0ef3839ef26f8d2a713a9a684f9 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Thu, 21 Feb 2019 23:53:19 +0100
Subject: [PATCH] Make dbus daemon build optional
----
- bus/Makefile.am | 2 ++
- configure.ac | 17 ++++++++++++++++-
- 2 files changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/bus/Makefile.am b/bus/Makefile.am
-index 9ae3071..26a770c 100644
--- a/bus/Makefile.am
+++ b/bus/Makefile.am
-@@ -70,6 +70,7 @@ agentdir=$(LAUNCHD_AGENT_DIR)
+@@ -76,6 +76,7 @@ agentdir=$(LAUNCHD_AGENT_DIR)
agent_DATA=org.freedesktop.dbus-session.plist
endif
@@ -20,19 +15,17 @@ index 9ae3071..26a770c 100644
if DBUS_BUS_ENABLE_KQUEUE
DIR_WATCH_SOURCE=dir-watch-kqueue.c
else
-@@ -241,6 +242,7 @@ test_bus_LDADD = \
- $(top_builddir)/dbus/libdbus-internal.la \
- $(DBUS_BUS_LIBS) \
+@@ -230,6 +231,7 @@ EXTRA_DIST += \
+ tmpfiles.d/dbus.conf.in \
+ tmpfiles.d/meson.build \
$(NULL)
+endif DBUS_DAEMON
- install-data-hook:
- $(mkinstalldirs) $(DESTDIR)$(dbusdatadir)/session.d
-diff --git a/configure.ac b/configure.ac
-index be6b065..854e846 100644
+ if HAVE_SYSTEMD
+ systemdsystemunit_DATA = \
--- a/configure.ac
+++ b/configure.ac
-@@ -202,6 +202,7 @@ AC_ARG_ENABLE([apparmor],
+@@ -211,6 +211,7 @@ AC_ARG_ENABLE([apparmor],
[enable_apparmor=$enableval],
[enable_apparmor=auto])
AC_ARG_ENABLE(libaudit,AS_HELP_STRING([--enable-libaudit],[build audit daemon support for SELinux]),enable_libaudit=$enableval,enable_libaudit=auto)
@@ -40,9 +33,9 @@ index be6b065..854e846 100644
AC_ARG_ENABLE(inotify, AS_HELP_STRING([--enable-inotify],[build with inotify support (linux only)]),enable_inotify=$enableval,enable_inotify=auto)
AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto)
-@@ -830,7 +831,20 @@ AC_CHECK_FUNCS(getpeerucred getpeereid)
-
- AC_CHECK_FUNCS(pipe2 accept4)
+@@ -658,7 +659,20 @@ AC_CHECK_MEMBER([struct unpcbid.unp_pid],
+ [],
+ [[#include <sys/un.h>]])
-PKG_CHECK_MODULES([EXPAT], [expat])
+# dbusdaemon checks
@@ -62,14 +55,11 @@ index be6b065..854e846 100644
save_cflags="$CFLAGS"
save_libs="$LIBS"
-@@ -1824,6 +1838,7 @@ echo "
+@@ -1748,6 +1762,7 @@ echo "
Building bus stats API: ${enable_stats}
Building SELinux support: ${have_selinux}
Building AppArmor support: ${have_apparmor}
+ Building daemon: ${have_daemon}
Building inotify support: ${have_inotify}
Building kqueue support: ${have_kqueue}
- Building systemd support: ${have_systemd}
---
-2.20.1
-
+ Building elogind support: ${have_elogind}
diff --git a/sys-apps/dbus/files/dbus-enable-elogind.patch b/sys-apps/dbus/files/dbus-1.15.0-enable-elogind.patch
index 5cb5d649cd91..a6c0e1bd2153 100644
--- a/sys-apps/dbus/files/dbus-enable-elogind.patch
+++ b/sys-apps/dbus/files/dbus-1.15.0-enable-elogind.patch
@@ -1,35 +1,16 @@
---- a/dbus/dbus-userdb-util.c 2015-09-30 16:48:40.000000000 +0200
-+++ b/dbus/dbus-userdb-util.c 2016-11-03 11:09:42.550520587 +0100
-@@ -32,6 +32,9 @@
- #if HAVE_SYSTEMD
- #include <systemd/sd-login.h>
- #endif
-+#if HAVE_ELOGIND
-+#include <elogind/sd-login.h>
-+#endif
-
- /**
- * @addtogroup DBusInternalsUtils
-@@ -54,7 +57,7 @@
- const DBusUserInfo *info;
- dbus_bool_t result = FALSE;
-
--#ifdef HAVE_SYSTEMD
-+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
- /* check if we have logind */
- if (access ("/run/systemd/seats/", F_OK) >= 0)
- {
---- a/configure.ac 2016-11-03 11:13:58.286528265 +0100
-+++ b/configure.ac 2016-11-03 11:22:11.210543063 +0100
-@@ -185,6 +185,7 @@
+https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/53
+https://bugs.gentoo.org/599494
+--- a/configure.ac
++++ b/configure.ac
+@@ -215,6 +215,7 @@ AC_ARG_ENABLE(inotify, AS_HELP_STRING([--enable-inotify],[build with inotify sup
AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto)
AC_ARG_ENABLE(launchd, AS_HELP_STRING([--enable-launchd],[build with launchd auto-launch support]),enable_launchd=$enableval,enable_launchd=auto)
+AC_ARG_ENABLE(elogind, AS_HELP_STRING([--enable-elogind],[build with elogind user seat support]),enable_elogind=$enableval,enable_elogind=auto)
AC_ARG_ENABLE(systemd, AS_HELP_STRING([--enable-systemd],[build with systemd at_console support]),enable_systemd=$enableval,enable_systemd=auto)
+ AC_ARG_ENABLE(traditional-activation, AS_HELP_STRING([--disable-traditional-activation], [Do not build support for service activation without using SystemdService]), enable_traditional_activation="$enableval", enable_traditional_activation=yes)
- AC_ARG_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install]))
-@@ -1184,6 +1185,24 @@
+@@ -904,6 +905,24 @@ fi
AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
@@ -54,7 +35,7 @@
dnl systemd detection
if test x$enable_systemd = xno ; then
have_systemd=no;
-@@ -1290,7 +1309,7 @@
+@@ -1024,7 +1043,7 @@ if test x$with_valgrind != xno; then
fi
#### Set up final flags
@@ -63,11 +44,32 @@
AC_SUBST([LIBDBUS_LIBS])
### X11 detection
-@@ -1949,6 +1968,7 @@
+@@ -1731,6 +1750,7 @@ echo "
Building AppArmor support: ${have_apparmor}
Building inotify support: ${have_inotify}
Building kqueue support: ${have_kqueue}
+ Building elogind support: ${have_elogind}
Building systemd support: ${have_systemd}
+ Traditional activation: ${enable_traditional_activation}
Building X11 code: ${have_x11}
- Building Doxygen docs: ${enable_doxygen_docs}
+--- a/dbus/dbus-userdb-util.c
++++ b/dbus/dbus-userdb-util.c
+@@ -39,6 +39,9 @@
+ #ifdef HAVE_SYSTEMD
+ #include <systemd/sd-login.h>
+ #endif
++#if HAVE_ELOGIND
++#include <elogind/sd-login.h>
++#endif
+
+ /**
+ * @addtogroup DBusInternalsUtils
+@@ -65,7 +68,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)
+ {
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..543eac5b30f2
--- /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
++#ifdef 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('libelogind', 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',
diff --git a/sys-apps/dbus/files/dbus.initd-r1 b/sys-apps/dbus/files/dbus.initd-r1
deleted file mode 100644
index bd3542381a7a..000000000000
--- a/sys-apps/dbus/files/dbus.initd-r1
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-extra_started_commands="reload"
-
-description="An IPC message bus daemon"
-pidfile="/var/run/dbus.pid"
-command="/usr/bin/dbus-daemon"
-command_args="--system"
-
-dbus_socket="/var/run/dbus/system_bus_socket"
-
-depend() {
- need localmount
- after bootmisc
-}
-
-start_pre() {
- /usr/bin/dbus-uuidgen --ensure=/etc/machine-id
-
- # We need to test if /var/run/dbus exists, since script will fail if it does not
- checkpath -q -d /var/run/dbus
-}
-
-stop_post() {
- [ ! -S "${dbus_socket}" ] || rm -f "${dbus_socket}"
-}
-
-reload() {
- ebegin "Reloading D-BUS messagebus config"
- /usr/bin/dbus-send --print-reply --system --type=method_call \
- --dest=org.freedesktop.DBus \
- / org.freedesktop.DBus.ReloadConfig > /dev/null
- eend $?
-}
diff --git a/sys-apps/dbus/metadata.xml b/sys-apps/dbus/metadata.xml
index a8736a778169..e74554521cbe 100644
--- a/sys-apps/dbus/metadata.xml
+++ b/sys-apps/dbus/metadata.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>freedesktop-bugs@gentoo.org</email>
@@ -7,9 +7,9 @@
<use>
<flag name="elogind">Use <pkg>sys-auth/elogind</pkg> for session tracking.</flag>
<flag name="systemd">Build with <pkg>sys-apps/systemd</pkg> at_console support</flag>
- <flag name="user-session">Enable user-session semantics for session bus under systemd</flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:freedesktop:dbus</remote-id>
+ <remote-id type="freedesktop-gitlab">dbus/dbus</remote-id>
</upstream>
</pkgmetadata>