commit: 265054dc933b168d0ac4c71961ea1d0b1170f5f1 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Thu Nov 14 19:38:49 2024 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Thu Nov 14 19:47:46 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=265054dc
sys-auth/elogind: Revert s2idle default, build w/ xen Switch RemoveIPC default to "no". Bug: https://bugs.gentoo.org/939042 Closes: https://bugs.gentoo.org/939673 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> sys-auth/elogind/elogind-255.5-r1.ebuild | 179 +++++++++++++++++++++ .../elogind-255.5-no-fchmod_and_chown-tty.patch | 29 ++++ .../elogind-255.5-part-revert-header-cleanup.patch | 41 +++++ .../files/elogind-255.5-revert-s2idle.patch | 138 ++++++++++++++++ 4 files changed, 387 insertions(+) diff --git a/sys-auth/elogind/elogind-255.5-r1.ebuild b/sys-auth/elogind/elogind-255.5-r1.ebuild new file mode 100644 index 000000000000..22ad55a76fc2 --- /dev/null +++ b/sys-auth/elogind/elogind-255.5-r1.ebuild @@ -0,0 +1,179 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) + +if [[ ${PV} = *9999* ]]; then + EGIT_BRANCH="v255-stable" + EGIT_REPO_URI="https://github.com/elogind/elogind.git" + inherit git-r3 +else + SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +fi + +inherit linux-info meson pam python-any-r1 udev xdg-utils + +DESCRIPTION="The systemd project's logind, extracted to a standalone package" +HOMEPAGE="https://github.com/elogind/elogind" + +LICENSE="CC0-1.0 LGPL-2.1+ public-domain" +SLOT="0" +IUSE="+acl audit cgroup-hybrid debug doc +pam +policykit selinux test" +RESTRICT="!test? ( test )" + +BDEPEND=" + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-util/gperf + virtual/pkgconfig + $(python_gen_any_dep 'dev-python/jinja2[${PYTHON_USEDEP}]') + $(python_gen_any_dep 'dev-python/lxml[${PYTHON_USEDEP}]') +" +DEPEND=" + audit? ( sys-process/audit ) + sys-apps/util-linux + sys-libs/libcap + virtual/libudev:= + acl? ( sys-apps/acl ) + pam? ( sys-libs/pam ) + selinux? ( sys-libs/libselinux ) +" +RDEPEND="${DEPEND} + !sys-apps/systemd +" +PDEPEND=" + sys-apps/dbus + policykit? ( sys-auth/polkit ) +" + +DOCS=( README.md ) + +PATCHES=( + # all downstream patches: + "${FILESDIR}/${PN}-252.9-nodocs.patch" + "${FILESDIR}/${P}-part-revert-header-cleanup.patch" # bug 939673 + # See also: + # https://github.com/elogind/elogind/issues/285 + "${FILESDIR}/${P}-revert-s2idle.patch" # bug 939042 + # See also: https://github.com/systemd/systemd/issues/10103 + "${FILESDIR}/${P}-no-fchmod_and_chown-tty.patch" # thx to Devuan +) + +python_check_deps() { + python_has_version "dev-python/jinja2[${PYTHON_USEDEP}]" && + python_has_version "dev-python/lxml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + local CONFIG_CHECK="~CGROUPS ~EPOLL ~INOTIFY_USER ~SIGNALFD ~TIMERFD" + + use kernel_linux && linux-info_pkg_setup +} + +src_prepare() { + default + xdg_environment_reset + + # don't cleanup /dev/shm/ on logout on logout + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=949698 + sed -e "s/#RemoveIPC=yes/RemoveIPC=no/" \ + -i src/login/logind.conf.in || die +} + +src_configure() { + if use cgroup-hybrid; then + cgroupmode="hybrid" + else + cgroupmode="unified" + fi + + python_setup + + EMESON_BUILDTYPE="$(usex debug debug release)" + + local emesonargs=( + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -Dhtmldir="${EPREFIX}/usr/share/doc/${PF}/html" + -Dudevrulesdir="${EPREFIX}$(get_udevdir)"/rules.d + --libexecdir="lib/elogind" + --localstatedir="${EPREFIX}"/var + -Dbashcompletiondir="${EPREFIX}/usr/share/bash-completion/completions" + -Dman=auto + -Dsmack=true + -Dcgroup-controller=openrc + -Ddefault-hierarchy=${cgroupmode} + -Ddefault-kill-user-processes=false + -Dacl=$(usex acl enabled disabled) + -Daudit=$(usex audit enabled disabled) + -Dhtml=$(usex doc auto disabled) + -Dpam=$(usex pam enabled disabled) + -Dpamlibdir="$(getpam_mod_dir)" + -Dselinux=$(usex selinux enabled disabled) + -Dtests=$(usex test true false) + -Dutmp=$(usex elibc_musl false true) + -Dmode=release + ) + + meson_src_configure +} + +src_install() { + meson_src_install + keepdir /var/lib/elogind + + newinitd "${FILESDIR}"/${PN}.init-r1 ${PN} + + newconfd "${FILESDIR}"/${PN}.conf ${PN} +} + +pkg_postinst() { + udev_reload + if ! use pam; then + ewarn "${PN} will not be managing user logins/seats without USE=\"pam\"!" + ewarn "In other words, it will be useless for most applications." + ewarn + fi + if ! use policykit; then + ewarn "loginctl will not be able to perform privileged operations without" + ewarn "USE=\"policykit\"! That means e.g. no suspend or hibernate." + ewarn + fi + if [[ "$(rc-config list boot | grep elogind)" != "" ]]; then + elog "elogind is currently started from boot runlevel." + elif [[ "$(rc-config list default | grep elogind)" != "" ]]; then + ewarn "elogind is currently started from default runlevel." + ewarn "Please remove elogind from the default runlevel and" + ewarn "add it to the boot runlevel by:" + ewarn "# rc-update del elogind default" + ewarn "# rc-update add elogind boot" + else + elog "elogind is currently not started from any runlevel." + elog "You may add it to the boot runlevel by:" + elog "# rc-update add elogind boot" + elog + elog "Alternatively, you can leave elogind out of any" + elog "runlevel. It will then be started automatically" + if use pam; then + elog "when the first service calls it via dbus, or" + elog "the first user logs into the system." + else + elog "when the first service calls it via dbus." + fi + fi + + for version in ${REPLACING_VERSIONS}; do + if ver_test "${version}" -lt 252.9; then + elog "Starting with release 252.9 the sleep configuration is now done" + elog "in the /etc/elogind/sleep.conf. Should you use non-default sleep" + elog "configuration remember to migrate those to new configuration file." + fi + done +} + +pkg_postrm() { + udev_reload +} diff --git a/sys-auth/elogind/files/elogind-255.5-no-fchmod_and_chown-tty.patch b/sys-auth/elogind/files/elogind-255.5-no-fchmod_and_chown-tty.patch new file mode 100644 index 000000000000..9a88c8d27c83 --- /dev/null +++ b/sys-auth/elogind/files/elogind-255.5-no-fchmod_and_chown-tty.patch @@ -0,0 +1,29 @@ +From 04354be1094d2010349700932327aa5cb965fc0a Mon Sep 17 00:00:00 2001 +From: Mark Hindley <[email protected]> +Date: Thu, 9 Nov 2023 18:37:54 +0000 +Subject: [PATCH] Don't chown and chmod tty on VT reset. + +Elogind doesn't allocate VTs and shouldn't change those setup by login(1). + +Fixes: https://github.com/systemd/systemd/issues/10103 +--- + src/basic/terminal-util.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/src/basic/terminal-util.c ++++ b/src/basic/terminal-util.c +@@ -1487,12 +1487,14 @@ + q = -errno; + } + ++#if 0 /// UNNEEDED by elogind + r = fchmod_and_chown(fd, TTY_MODE, 0, GID_INVALID); + if (r < 0) { + log_debug_errno(r, "Failed to chmod()/chown() VT, ignoring: %m"); + if (q >= 0) + q = r; + } ++#endif // 0 + + return q; + } diff --git a/sys-auth/elogind/files/elogind-255.5-part-revert-header-cleanup.patch b/sys-auth/elogind/files/elogind-255.5-part-revert-header-cleanup.patch new file mode 100644 index 000000000000..385042792cdd --- /dev/null +++ b/sys-auth/elogind/files/elogind-255.5-part-revert-header-cleanup.patch @@ -0,0 +1,41 @@ +From fe9e67ac72039cf5482a1f40b4b3016610ac84b6 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <[email protected]> +Date: Thu, 14 Nov 2024 20:04:16 +0100 +Subject: [PATCH] Partially revert "Comment out all unused includes in shared/" + +Gentoo-Bug: https://bugs.gentoo.org/939673 + +This reverts commit e1827812fc8f5b9a1aab6ed9bc056df0a2c74c48. +--- + src/shared/reboot-util.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/shared/reboot-util.c b/src/shared/reboot-util.c +index 079db294a..c5eba45cb 100644 +--- a/src/shared/reboot-util.c ++++ b/src/shared/reboot-util.c +@@ -1,8 +1,8 @@ + /* SPDX-License-Identifier: LGPL-2.1-or-later */ + + #include <errno.h> +-//#include <stdint.h> +-//#include <sys/ioctl.h> ++#include <stdint.h> ++#include <sys/ioctl.h> + #include <sys/mman.h> + #include <unistd.h> + +@@ -14,8 +14,8 @@ + #endif + + #include "alloc-util.h" +-//#include "errno-util.h" +-//#include "fd-util.h" ++#include "errno-util.h" ++#include "fd-util.h" + #include "fileio.h" + #include "log.h" + //#include "proc-cmdline.h" +-- +2.47.0 + diff --git a/sys-auth/elogind/files/elogind-255.5-revert-s2idle.patch b/sys-auth/elogind/files/elogind-255.5-revert-s2idle.patch new file mode 100644 index 000000000000..a429d374729b --- /dev/null +++ b/sys-auth/elogind/files/elogind-255.5-revert-s2idle.patch @@ -0,0 +1,138 @@ +From 2b522bb0cd3872107335459d82b92f73f6a50bf7 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <[email protected]> +Date: Tue, 12 Nov 2024 23:43:16 +0100 +Subject: [PATCH 1/2] Revert "Re-Add sleep mode configuration" + +This reverts commit 7707a30dfb2496a4c9c5939f0dd8bb39baebfecd. +--- + src/shared/sleep-config.c | 8 -------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index 053e908e6..5ddcb006f 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -42,11 +42,7 @@ static char* const* const sleep_default_state_table[_SLEEP_OPERATION_CONFIG_MAX] + }; + + static char* const* const sleep_default_mode_table[_SLEEP_OPERATION_CONFIG_MAX] = { +-#if 0 /// elogind supports suspend modes (deep s2idle) so we need defaults, too + /* Not used by SLEEP_SUSPEND */ +-#else // 0 +- [SLEEP_SUSPEND] = STRV_MAKE("s2idle", "deep"), +-#endif // 0 + [SLEEP_HIBERNATE] = STRV_MAKE("platform", "shutdown"), + [SLEEP_HYBRID_SLEEP] = STRV_MAKE("suspend"), + }; +@@ -172,11 +168,7 @@ int parse_sleep_config(SleepConfig **ret) { + { "Sleep", "AllowHybridSleep", config_parse_tristate, 0, &allow_hybrid_sleep }, + + { "Sleep", "SuspendState", config_parse_strv, 0, sc->states + SLEEP_SUSPEND }, +-#if 0 /// elogind does support suspend modes + { "Sleep", "SuspendMode", config_parse_warn_compat, DISABLED_LEGACY, NULL }, +-#else // 0 +- { "Sleep", "SuspendMode", config_parse_sleep_mode, 0, sc->modes + SLEEP_SUSPEND }, +-#endif // 0 + + { "Sleep", "HibernateState", config_parse_warn_compat, DISABLED_LEGACY, NULL }, + { "Sleep", "HibernateMode", config_parse_sleep_mode, 0, sc->modes + SLEEP_HIBERNATE }, +-- +2.47.0 + + +From 10a451df4259113738f0839e09041742dd8ccbc2 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <[email protected]> +Date: Tue, 12 Nov 2024 23:47:19 +0100 +Subject: [PATCH 2/2] Revert "Re-add elogind additions to sleep.conf loading + and split those into sleep.donf.d/10-elogind.conf" + +This reverts commit c5e7ba0c47ae95e2cf6fd48dc9353e8f333200c4. +--- + src/shared/sleep-config.c | 9 --------- + src/sleep/10-elogind.conf | 22 ---------------------- + src/sleep/meson.build | 4 ---- + src/sleep/sleep.conf | 9 +++++++++ + 4 files changed, 9 insertions(+), 35 deletions(-) + delete mode 100644 src/sleep/10-elogind.conf + +diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c +index 5ddcb006f..097c203ca 100644 +--- a/src/shared/sleep-config.c ++++ b/src/shared/sleep-config.c +@@ -153,15 +153,6 @@ int parse_sleep_config(SleepConfig **ret) { + #endif // 0 + + const ConfigTableItem items[] = { +-#if 1 /// Additional options for elogind +- { "Sleep", "AllowPowerOffInterrupts", config_parse_bool, 0, &sc->allow_poweroff_interrupts }, +- { "Sleep", "BroadcastPowerOffInterrupts", config_parse_bool, 0, &sc->broadcast_poweroff_interrupts }, +- { "Sleep", "AllowSuspendInterrupts", config_parse_bool, 0, &sc->allow_suspend_interrupts }, +- { "Sleep", "BroadcastSuspendInterrupts", config_parse_bool, 0, &sc->broadcast_suspend_interrupts }, +- { "Sleep", "HandleNvidiaSleep", config_parse_bool, 0, &sc->handle_nvidia_sleep }, +- { "Sleep", "SuspendByUsing", config_parse_strv, 0, &sc->suspend_by_using }, +- { "Sleep", "HibernateByUsing", config_parse_strv, 0, &sc->hibernate_by_using }, +-#endif // 1 + { "Sleep", "AllowSuspend", config_parse_tristate, 0, &allow_suspend }, + { "Sleep", "AllowHibernation", config_parse_tristate, 0, &allow_hibernate }, + { "Sleep", "AllowSuspendThenHibernate", config_parse_tristate, 0, &allow_s2h }, +diff --git a/src/sleep/10-elogind.conf b/src/sleep/10-elogind.conf +deleted file mode 100644 +index b8b3350b1..000000000 +--- a/src/sleep/10-elogind.conf ++++ /dev/null +@@ -1,22 +0,0 @@ +-# This file is part of elogind. +-# +-# elogind is free software; you can redistribute it and/or modify it under the +-# terms of the GNU Lesser General Public License as published by the Free +-# Software Foundation; either version 2.1 of the License, or (at your option) +-# any later version. +-# +-# Entries in this file show the compile time defaults specific to eloging. +-# Local configuration should be created here with a higher leading number so +-# they are parsed later overriding the defaults. +-# +-# See sleep.conf(5) for details. +- +-[Sleep] +-#AllowPowerOffInterrupts=no +-#AllowSuspendInterrupts=no +-#BroadcastPowerOffInterrupts=yes +-#BroadcastSuspendInterrupts=yes +-#HandleNvidiaSleep=no +-#HibernateByUsing= +-#SuspendByUsing= +-#SuspendMode=s2idle deep +diff --git a/src/sleep/meson.build b/src/sleep/meson.build +index c711a1b5c..3b06a6e91 100644 +--- a/src/sleep/meson.build ++++ b/src/sleep/meson.build +@@ -28,8 +28,4 @@ sleep_files = files( + if install_sysconfdir_samples + install_data('sleep.conf', + install_dir : pkgconfigfiledir) +-#if 1 /// elogind comes with a first drop-in representing its defaults +- install_data('10-elogind.conf', +- install_dir : pkgconfigfiledir / 'sleep.conf.d' ) +-#endif // 1 + endif +diff --git a/src/sleep/sleep.conf b/src/sleep/sleep.conf +index ea048892b..b71790711 100644 +--- a/src/sleep/sleep.conf ++++ b/src/sleep/sleep.conf +@@ -23,3 +23,12 @@ + #HibernateMode=platform shutdown + #HibernateDelaySec= + #SuspendEstimationSec=60min ++ ++# elogind additions ++#AllowPowerOffInterrupts=no ++#BroadcastPowerOffInterrupts=yes ++#AllowSuspendInterrupts=no ++#BroadcastSuspendInterrupts=yes ++#SuspendByUsing= ++#HibernateByUsing= ++#HandleNvidiaSleep=no +-- +2.47.0 +
