summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-auth/elogind')
-rw-r--r--sys-auth/elogind/elogind-246.10-r1.ebuild149
-rw-r--r--sys-auth/elogind/elogind-246.10-r3.ebuild (renamed from sys-auth/elogind/elogind-246.10-r2.ebuild)4
-rw-r--r--sys-auth/elogind/files/elogind-246.10-musl-selinux.patch99
3 files changed, 101 insertions, 151 deletions
diff --git a/sys-auth/elogind/elogind-246.10-r1.ebuild b/sys-auth/elogind/elogind-246.10-r1.ebuild
deleted file mode 100644
index 545f56aa84e4..000000000000
--- a/sys-auth/elogind/elogind-246.10-r1.ebuild
+++ /dev/null
@@ -1,149 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-if [[ ${PV} = *9999* ]]; then
- EGIT_BRANCH="v241-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 ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-fi
-
-inherit linux-info meson pam 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 debug doc +pam +policykit selinux"
-
-BDEPEND="
- app-text/docbook-xml-dtd:4.2
- app-text/docbook-xml-dtd:4.5
- app-text/docbook-xsl-stylesheets
- dev-util/gperf
- dev-util/intltool
- virtual/pkgconfig
-"
-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 src/libelogind/sd-bus/GVARIANT-SERIALIZATION )
-
-PATCHES=(
- "${FILESDIR}/${PN}-243.7-nodocs.patch"
- "${FILESDIR}/${PN}-241.4-broken-test.patch" # bug 699116
- "${FILESDIR}/${P}-revert-polkit-automagic.patch"
-)
-
-pkg_setup() {
- local CONFIG_CHECK="~CGROUPS ~EPOLL ~INOTIFY_USER ~SIGNALFD ~TIMERFD"
-
- use kernel_linux && linux-info_pkg_setup
-}
-
-src_prepare() {
- default
- xdg_environment_reset
-}
-
-src_configure() {
- local rccgroupmode="$(grep rc_cgroup_mode "${EPREFIX}"/etc/rc.conf | cut -d '"' -f 2)"
- local cgroupmode="legacy"
-
- if [[ "xhybrid" = "x${rccgroupmode}" ]] ; then
- cgroupmode="hybrid"
- elif [[ "xunified" = "x${rccgroupmode}" ]] ; then
- cgroupmode="unified"
- fi
-
- local emesonargs=(
- -Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
- -Dhtmldir="${EPREFIX}/usr/share/doc/${PF}/html"
- -Dpamlibdir=$(getpam_mod_dir)
- -Dudevrulesdir="${EPREFIX}$(get_udevdir)"/rules.d
- --libdir="${EPREFIX}"/usr/$(get_libdir)
- -Drootlibdir="${EPREFIX}"/$(get_libdir)
- -Drootlibexecdir="${EPREFIX}"/$(get_libdir)/elogind
- -Drootprefix="${EPREFIX}/"
- -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 true false)
- -Daudit=$(usex audit true false)
- --buildtype $(usex debug debug release)
- -Dhtml=$(usex doc auto false)
- -Dpam=$(usex pam true false)
- -Dselinux=$(usex selinux true false)
- -Dutmp=$(usex elibc_musl false true)
- )
-
- meson_src_configure
-}
-
-src_install() {
- DOCS+=( src/libelogind/sd-bus/GVARIANT-SERIALIZATION )
-
- meson_src_install
-
- newinitd "${FILESDIR}"/${PN}.init-r1 ${PN}
-
- sed -e "s|@libdir@|$(get_libdir)|" "${FILESDIR}"/${PN}.conf.in > ${PN}.conf || die
- newconfd ${PN}.conf ${PN}
-}
-
-pkg_postinst() {
- 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
-}
diff --git a/sys-auth/elogind/elogind-246.10-r2.ebuild b/sys-auth/elogind/elogind-246.10-r3.ebuild
index 614ab85f2f98..532c0142c6d7 100644
--- a/sys-auth/elogind/elogind-246.10-r2.ebuild
+++ b/sys-auth/elogind/elogind-246.10-r3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -27,7 +27,6 @@ BDEPEND="
app-text/docbook-xml-dtd:4.5
app-text/docbook-xsl-stylesheets
dev-util/gperf
- dev-util/intltool
virtual/pkgconfig
"
DEPEND="
@@ -55,6 +54,7 @@ PATCHES=(
"${FILESDIR}/${P}-revert-polkit-automagic.patch"
"${FILESDIR}/${P}-clang-undefined-symbol.patch"
"${FILESDIR}/${P}-loong.patch"
+ "${FILESDIR}/${P}-musl-selinux.patch"
)
pkg_setup() {
diff --git a/sys-auth/elogind/files/elogind-246.10-musl-selinux.patch b/sys-auth/elogind/files/elogind-246.10-musl-selinux.patch
new file mode 100644
index 000000000000..c36861b983e2
--- /dev/null
+++ b/sys-auth/elogind/files/elogind-246.10-musl-selinux.patch
@@ -0,0 +1,99 @@
+https://bugs.gentoo.org/888912
+https://github.com/elogind/elogind/commit/ab72a46f3104f44a32ef7bec7439aa9d3b5f0fdc
+
+Rebased version to apply to 246.10 by concord@.
+
+From ab72a46f3104f44a32ef7bec7439aa9d3b5f0fdc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 9 Oct 2020 16:48:03 +0200
+Subject: [PATCH] basic/selinux: work around mallinfo deprecation
+
+Latest glibc has deprecated mallinfo(), so it might become unavailable at some point
+in the future. There is malloc_info(), but it returns XML, ffs. I think the information
+that we get from mallinfo() is quite useful, so let's use mallinfo() if available, and
+not otherwise.
+--- a/meson.build
++++ b/meson.build
+@@ -617,6 +617,7 @@ foreach ident : [
+ #include <unistd.h>
+ #include <signal.h>
+ #include <sys/wait.h>'''],
++ ['mallinfo', '''#include <malloc.h>'''],
+ ]
+
+ have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
+--- a/src/basic/macro.h
++++ b/src/basic/macro.h
+@@ -93,6 +93,10 @@
+ #endif
+
+ /* Temporarily disable some warnings */
++#define DISABLE_WARNING_DEPRECATED_DECLARATIONS \
++ _Pragma("GCC diagnostic push"); \
++ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
++
+ #define DISABLE_WARNING_FORMAT_NONLITERAL \
+ _Pragma("GCC diagnostic push"); \
+ _Pragma("GCC diagnostic ignored \"-Wformat-nonliteral\"")
+--- a/src/basic/selinux-util.c
++++ b/src/basic/selinux-util.c
+@@ -72,12 +72,21 @@ void mac_selinux_retest(void) {
+ #endif
+ }
+
++#if HAVE_MALLINFO
++static struct mallinfo mallinfo_nowarn(void) {
++ /* glibc has deprecated mallinfo(), but the replacement malloc_info() returns an XML blob ;=[ */
++DISABLE_WARNING_DEPRECATED_DECLARATIONS
++ return mallinfo();
++REENABLE_WARNING
++}
++#else
++# warning "mallinfo() is missing, add mallinfo2() support instead."
++#endif
++
+ int mac_selinux_init(void) {
+ #if HAVE_SELINUX
+ usec_t before_timestamp, after_timestamp;
+- struct mallinfo before_mallinfo, after_mallinfo;
+ char timespan[FORMAT_TIMESPAN_MAX];
+- int l;
+
+ selinux_set_callback(SELINUX_CB_POLICYLOAD, (union selinux_callback) mac_selinux_reload);
+
+@@ -87,7 +96,9 @@ int mac_selinux_init(void) {
+ if (!mac_selinux_use())
+ return 0;
+
+- before_mallinfo = mallinfo();
++#if HAVE_MALLINFO
++ struct mallinfo before_mallinfo = mallinfo_nowarn();
++#endif
+ before_timestamp = now(CLOCK_MONOTONIC);
+
+ label_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0);
+@@ -95,14 +107,17 @@ int mac_selinux_init(void) {
+ return log_enforcing_errno(errno, "Failed to initialize SELinux labeling handle: %m");
+
+ after_timestamp = now(CLOCK_MONOTONIC);
+- after_mallinfo = mallinfo();
+-
+- l = after_mallinfo.uordblks > before_mallinfo.uordblks ? after_mallinfo.uordblks - before_mallinfo.uordblks : 0;
++#if HAVE_MALLINFO
++ struct mallinfo after_mallinfo = mallinfo_nowarn();
++ int l = after_mallinfo.uordblks > before_mallinfo.uordblks ? after_mallinfo.uordblks - before_mallinfo.uordblks : 0;
+
+ log_debug("Successfully loaded SELinux database in %s, size on heap is %iK.",
+ format_timespan(timespan, sizeof(timespan), after_timestamp - before_timestamp, 0),
+- (l+1023)/1024);
+-
++ DIV_ROUND_UP(l, 1024));
++#else
++ log_debug("Successfully loaded SELinux database in %s.",
++ format_timespan(timespan, sizeof(timespan), after_timestamp - before_timestamp, 0));
++#endif
+ #endif
+ return 0;
+ }
+--
+2.40.1