sys-apps/dbus: Sync with Gentoo

It's from Gentoo commit a21da5c01565a48fe2432afa8d96f8921065cb4b.
This commit is contained in:
Krzesimir Nowak 2025-04-03 15:12:43 +02:00
parent 6eb6363aeb
commit 9b4e5b3463
13 changed files with 1087 additions and 461 deletions

View File

@ -1 +1,3 @@
DIST dbus-1.14.4.tar.xz 1368196 BLAKE2B 7da5cd8f09eaef7a64f35f8ccbeb81c5687b3fad02d6ac05dd4c232e0f731dbcf4c76c36b615e6216815c8f8631bf9cb32543665440153a1199b1b35922cdda4 SHA512 7c8ce95b8a4c63cf51cc9f10bebbc19e66d6a96c4806befad48c3fe73b4468bb2b50f9570b73fe05ff12223e5e6815032139d316995eb670c28b23c028f293d6
DIST dbus-1.15.8.tar.xz 1149088 BLAKE2B 7c1962dfccc6a1b6250e80b0706d7f44536fabeff009013865ec4b1edaec6d4b47dcbe8f78caa61ef7aef4bac6b79f0e2027dd16bbb2baae328429e648bf8b8c SHA512 84b8ac194ede3bf300f4501395b7253538469a4f9d59ea4adaf800282e359ef43494d81941b338081d3704317d39f0aba14906c6490419f04f946eb9d815f46c
DIST dbus-1.16.0.tar.xz 1114680 BLAKE2B a5a3ebe777c1c0296ba7240f9ed29ad329a6578a05baf10a469ce8c7d243791d35aca42a70d04cdd88feea238d081c3c8b0db444df24abcf7ce5ffe9187a0440 SHA512 9206bf4e41575f379e4c615212d137600967311f3c8feac94692aadf4dca9df9169ae52c404ec8ed31a9b2bc718792be920ac0130f1159f082e4b6c66f3f233e
DIST dbus-1.16.2.tar.xz 1115644 BLAKE2B ddca8abdd5df70b24d51293a262cda3f9e69681b31ae8bb560a6286ca6f2dc0c420dc5322a61bb142a77b2b5f86bdafcc6bf84b0d78af9610af7a78763b8b8fb SHA512 5c26f52d85984bb9ae1dde8d7e73921eacbdf020a61ff15f00a4c240cb38a121553ee04bd66e62b28425ff9bc50f4f5e15135166573ac0888332a01a0db1faa2

View File

@ -1,15 +0,0 @@
Modifications done in this fork:
- Disable user sessions. We don't need them in Flatcar. At some point
Gentoo dropped the dedicated USE flag for it and enables user
sessions with systemd USE flag.
- Drop the dependency on sec-policy/selinux-dbus which is brought by
the selinux USE flag. We enable the flag because we still want DBus
to be selinux-aware, but for some reason we didn't want to pull in
the `sec-policy/selinux-dbus` package. We may want to revisit this
with our SELinux work.
- Drop /etc/machine-id generation. We do it elsewhere (bootengine?).
- Mark it as stable for amd64 and arm64.

View File

@ -1,297 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
TMPFILES_OPTIONAL=1
# At least at the moment, while a CMake port exists, it's not recommended
# for distributions.
# https://gitlab.freedesktop.org/dbus/dbus/-/blob/master/CONTRIBUTING.md#L189
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://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"
# Flatcar: Mark it as stable for amd64 and arm64.
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="debug doc elogind selinux static-libs systemd test X"
RESTRICT="!test? ( test )"
REQUIRED_USE="?? ( elogind systemd )"
BDEPEND="
acct-user/messagebus
app-text/xmlto
app-text/docbook-xml-dtd:4.4
dev-build/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:0= )
X? (
x11-libs/libX11
x11-libs/libXt
)
"
DEPEND="${COMMON_DEPEND}
dev-libs/expat
test? (
${PYTHON_DEPS}
>=dev-libs/glib-2.40:2
)
"
# Flatcar: Drop the following dependency to avoid pulling in
# unnecessary ebuilds into rootfs:
#
# selinux? ( sec-policy/selinux-dbus )
#
# We may want to revisit that, actually.
RDEPEND="${COMMON_DEPEND}
acct-user/messagebus
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.
"
# out of sources build dir for make check
TBD="${WORKDIR}/${P}-tests-build"
PATCHES=(
"${FILESDIR}/dbus-enable-elogind.patch"
"${FILESDIR}/dbus-daemon-optional.patch" # bug #653136
)
pkg_setup() {
use test && python-any-r1_pkg_setup
if use kernel_linux; then
CONFIG_CHECK="~EPOLL"
linux-info_pkg_setup
fi
}
src_prepare() {
default
if [[ ${CHOST} == *-solaris* ]]; then
# fix standards conflict, due to gcc being c99 by default nowadays
sed -i \
-e 's/_XOPEN_SOURCE=500/_XOPEN_SOURCE=600/' \
configure.ac || die
fi
# 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
}
multilib_src_configure() {
local docconf myconf testconf
# so we can get backtraces from apps
case ${CHOST} in
*-mingw*)
# error: unrecognized command line option '-rdynamic', bug #488036
;;
*)
append-flags -rdynamic
;;
esac
# libaudit is *only* used in DBus wrt SELinux support, so disable it, if
# not on an SELinux profile.
myconf=(
--localstatedir="${EPREFIX}/var"
--runstatedir="${EPREFIX}${rundir}"
$(use_enable static-libs static)
$(use_enable debug verbose-mode)
--disable-asserts
--disable-checks
$(use_enable selinux)
$(use_enable selinux libaudit)
--disable-apparmor
$(use_enable kernel_linux inotify)
--disable-kqueue
$(use_enable elogind)
$(use_enable systemd)
$(use_enable systemd user-session)
--disable-embedded-tests
--disable-modular-tests
$(use_enable debug stats)
--with-session-socket-dir="${EPREFIX}"/tmp
--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
$(use_with X x)
)
if [[ ${CHOST} == *-darwin* ]]; then
myconf+=(
--enable-launchd
--with-launchd-agent-dir="${EPREFIX}"/Library/LaunchAgents
)
fi
if multilib_is_native_abi; then
docconf=(
--enable-xml-docs
$(use_enable doc doxygen-docs)
)
else
docconf=(
--disable-xml-docs
--disable-doxygen-docs
)
myconf+=(
--disable-daemon
--disable-selinux
--disable-libaudit
--disable-elogind
--disable-systemd
--without-x
)
fi
einfo "Running configure in ${BUILD_DIR}"
ECONF_SOURCE="${S}" econf "${myconf[@]}" "${docconf[@]}"
if multilib_is_native_abi && use test; then
mkdir "${TBD}" || die
cd "${TBD}" || die
testconf=(
$(use_enable test asserts)
$(use_enable test checks)
$(use_enable test embedded-tests)
$(use_enable test stats)
$(has_version dev-libs/dbus-glib && echo --enable-modular-tests)
)
einfo "Running configure in ${TBD}"
ECONF_SOURCE="${S}" econf "${myconf[@]}" "${testconf[@]}"
fi
}
multilib_src_compile() {
if multilib_is_native_abi; then
# After the compile, it uses a selinuxfs interface to
# check if the SELinux policy has the right support
use selinux && addwrite /selinux/access
einfo "Running make in ${BUILD_DIR}"
emake
if use test; then
einfo "Running make in ${TBD}"
emake -C "${TBD}"
fi
else
emake -C dbus libdbus-1.la
fi
}
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 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}" -C dbus \
install-libLTLIBRARIES install-dbusincludeHEADERS \
install-nodist_dbusarchincludeHEADERS
fi
}
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
find "${ED}" -name '*.la' -delete || die
}
pkg_postinst() {
readme.gentoo_print_elog
# Flatcar: Drop machine-id generation.
# if use systemd; then
# tmpfiles_process dbus.conf
# fi
#
# # Ensure unique id is generated and put it in /etc bug wrt #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
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
}

View File

@ -0,0 +1,223 @@
# Copyright 1999-2025 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 ~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="
${PYTHON_DEPS}
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? ( >=dev-libs/glib-2.40:2[${MULTILIB_USEDEP}] )
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() {
# Python interpeter required unconditionally (bug #932517)
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
}

View File

@ -0,0 +1,223 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Be careful with packaging odd-version-number branches!
# We should at the very 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..13} )
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 ~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="
${PYTHON_DEPS}
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? ( >=dev-libs/glib-2.40:2[${MULTILIB_USEDEP}] )
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.16.0-enable-elogind.patch # bug #599494
)
pkg_setup() {
# Python interpeter required unconditionally (bug #932517)
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)
-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
-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
exeinto /etc/user/init.d
newexe "${FILESDIR}/dbus.user.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
}

View File

@ -0,0 +1,221 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Be careful with packaging odd-version-number branches!
# We should at the very 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..13} )
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 ~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="
${PYTHON_DEPS}
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? ( >=dev-libs/glib-2.40:2[${MULTILIB_USEDEP}] )
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.16.0-enable-elogind.patch # bug #599494
)
pkg_setup() {
# Python interpeter required unconditionally (bug #932517)
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)
-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
-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
}

View File

@ -0,0 +1,223 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Be careful with packaging odd-version-number branches!
# We should at the very 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..13} )
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 ~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="
${PYTHON_DEPS}
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? ( >=dev-libs/glib-2.40:2[${MULTILIB_USEDEP}] )
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.16.0-enable-elogind.patch # bug #599494
)
pkg_setup() {
# Python interpeter required unconditionally (bug #932517)
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)
-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
-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
exeinto /etc/user/init.d
newexe "${FILESDIR}/dbus.user.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
}

View File

@ -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',

View File

@ -0,0 +1,103 @@
https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/509
From a10cfc2ed95b04063826911111819fff5e837d6f Mon Sep 17 00:00:00 2001
From: Dudemanguy <random342@airmail.cc>
Date: Fri, 20 Dec 2024 10:53:28 -0600
Subject: [PATCH] build: add elogind support
Checking the uid of the user seat also works if elogind is used. Add
this as an option to the build and make it mutually exclusive with
enabling systemd.
---
dbus/dbus-userdb-util.c | 6 +++++-
dbus/meson.build | 1 +
meson.build | 12 ++++++++++++
meson_options.txt | 7 +++++++
4 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/dbus/dbus-userdb-util.c b/dbus/dbus-userdb-util.c
index 736244955..a7b611309 100644
--- a/dbus/dbus-userdb-util.c
+++ b/dbus/dbus-userdb-util.c
@@ -42,6 +42,10 @@
#include <systemd/sd-login.h>
#endif
+#ifdef HAVE_ELOGIND
+#include <elogind/sd-login.h>
+#endif
+
/**
* @addtogroup DBusInternalsUtils
* @{
@@ -67,7 +71,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/dbus/meson.build b/dbus/meson.build
index d2acd0594..0e543069e 100644
--- a/dbus/meson.build
+++ b/dbus/meson.build
@@ -24,6 +24,7 @@ dbus_dependencies = [
adt_libs,
network_libs,
systemd,
+ elogind,
valgrind.partial_dependency(compile_args: true),
]
diff --git a/meson.build b/meson.build
index 97d14593f..5f24ba3af 100644
--- a/meson.build
+++ b/meson.build
@@ -519,6 +519,17 @@ else
endif
data_config.set('SYSTEMCTL', systemctl)
+elogind_opt = get_option('elogind')
+if use_systemd
+ if elogind_opt.enabled()
+ error('-Dsystemd and -Delogind are mutually exclusive')
+ endif
+ elogind = dependency('', required: false)
+else
+ elogind = dependency('libelogind', version: '>=209', required: elogind_opt)
+endif
+use_elogind = elogind.found()
+config.set('HAVE_ELOGIND', use_elogind)
use_traditional_activation = message_bus and get_option('traditional_activation')
@@ -1361,6 +1372,7 @@ summary_dict += {
'Building inotify support': use_inotify,
'Building kqueue support': use_kqueue,
'Building systemd support': use_systemd,
+ 'Building elogind support': use_elogind,
'Traditional activation': use_traditional_activation,
'Building X11 code': config.get('DBUS_BUILD_X11'),
'Building Doxygen docs': doxygen.found(),
diff --git a/meson_options.txt b/meson_options.txt
index 1bd00579f..9a56fb825 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -95,6 +95,13 @@ option(
description: 'Enable tests that require insecure extra code in the library and binaries'
)
+option(
+ 'elogind',
+ type: 'feature',
+ value: 'disabled',
+ description: 'Use elogind for detecting user sessions'
+)
+
option(
'epoll',
type: 'feature',
--
GitLab

View File

@ -1,75 +0,0 @@
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)
agent_DATA=org.freedesktop.dbus-session.plist
endif
+if DBUS_DAEMON
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) \
$(NULL)
+endif DBUS_DAEMON
install-data-hook:
$(mkinstalldirs) $(DESTDIR)$(dbusdatadir)/session.d
diff --git a/configure.ac b/configure.ac
index be6b065..854e846 100644
--- a/configure.ac
+++ b/configure.ac
@@ -202,6 +202,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)
+AC_ARG_ENABLE(daemon, AS_HELP_STRING([--enable-daemon],[build with the dbus daemon]),enable_daemon=$enableval,enable_daemon=yes)
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)
-PKG_CHECK_MODULES([EXPAT], [expat])
+# dbusdaemon checks
+if test x$enable_daemon = xno ; then
+ have_daemon=no
+else
+ have_daemon=yes
+fi
+
+dnl check if daemon shall be built
+if test x$have_daemon = xyes; then
+ AC_DEFINE(DBUS_DAEMON,1,[Use daemon])
+ PKG_CHECK_MODULES([EXPAT], [expat])
+fi
+
+AM_CONDITIONAL(DBUS_DAEMON, test x$have_daemon = xyes)
save_cflags="$CFLAGS"
save_libs="$LIBS"
@@ -1824,6 +1838,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

View File

@ -1,73 +0,0 @@
--- 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 @@
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_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install]))
@@ -1184,6 +1185,24 @@
AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
+dnl elogind detection
+if test x$enable_elogind = xno ; then
+ have_elogind=no;
+else
+ PKG_CHECK_MODULES([ELOGIND],
+ [libelogind >= 209],
+ [have_elogind=yes],
+ [have_elogind=no])
+fi
+
+if test x$have_elogind = xyes; then
+ AC_DEFINE(HAVE_ELOGIND,1,[Have elogind])
+fi
+
+if test x$enable_elogind = xyes -a x$have_elogind != xyes ; then
+ AC_MSG_ERROR([Explicitly requested elogind support, but libelogind not found])
+fi
+
dnl systemd detection
if test x$enable_systemd = xno ; then
have_systemd=no;
@@ -1290,7 +1309,7 @@
fi
#### Set up final flags
-LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs $SYSTEMD_LIBS"
+LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs $SYSTEMD_LIBS $ELOGIND_LIBS"
AC_SUBST([LIBDBUS_LIBS])
### X11 detection
@@ -1949,6 +1968,7 @@
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}
Building X11 code: ${have_x11}
Building Doxygen docs: ${enable_doxygen_docs}

View File

@ -0,0 +1,25 @@
#!/sbin/openrc-run
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License, v2 or later
supervisor=supervise-daemon
dbus_socket="${XDG_RUNTIME_DIR}/bus"
export DBUS_SESSION_BUS_ADDRESS="unix:path=$dbus_socket"
description="An IPC message bus daemon"
command="/usr/bin/dbus-daemon"
command_args="--session --syslog --nofork --address ${DBUS_SESSION_BUS_ADDRESS}"
extra_started_commands="reload"
stop_post() {
[ ! -S "${dbus_socket}" ] || rm -f "${dbus_socket}"
}
reload() {
ebegin "Reloading D-BUS messagebus config"
dbus-send --print-reply --system --type=method_call \
--dest=org.freedesktop.DBus \
/ org.freedesktop.DBus.ReloadConfig > /dev/null
eend $?
}

View File

@ -10,5 +10,6 @@
</use>
<upstream>
<remote-id type="cpe">cpe:/a:freedesktop:dbus</remote-id>
<remote-id type="freedesktop-gitlab">dbus/dbus</remote-id>
</upstream>
</pkgmetadata>