sys-apps/dbus: add 1.16.0

Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2025-02-09 08:20:15 +00:00
parent 81eaccf8b1
commit 45c607a6f6
3 changed files with 325 additions and 0 deletions

View File

@@ -1 +1,2 @@
DIST dbus-1.15.8.tar.xz 1149088 BLAKE2B 7c1962dfccc6a1b6250e80b0706d7f44536fabeff009013865ec4b1edaec6d4b47dcbe8f78caa61ef7aef4bac6b79f0e2027dd16bbb2baae328429e648bf8b8c SHA512 84b8ac194ede3bf300f4501395b7253538469a4f9d59ea4adaf800282e359ef43494d81941b338081d3704317d39f0aba14906c6490419f04f946eb9d815f46c
DIST dbus-1.16.0.tar.xz 1114680 BLAKE2B a5a3ebe777c1c0296ba7240f9ed29ad329a6578a05baf10a469ce8c7d243791d35aca42a70d04cdd88feea238d081c3c8b0db444df24abcf7ce5ffe9187a0440 SHA512 9206bf4e41575f379e4c615212d137600967311f3c8feac94692aadf4dca9df9169ae52c404ec8ed31a9b2bc718792be920ac0130f1159f082e4b6c66f3f233e

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