commit: 8d52408198b8a5b11e319801f7b947b17801178c Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Fri Jan 19 10:38:29 2018 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Fri Jan 19 10:40:13 2018 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8d524081
sys-auth/elogind: Fix boot w/ legacy-cgroupmode Closes: https://bugs.gentoo.org/644834 Package-Manager: Portage-2.3.19, Repoman-2.3.6 sys-auth/elogind/elogind-235.2-r1.ebuild | 128 +++++++++++++++++++++ .../files/elogind-235.2-legacy-cgroupmode.patch | 56 +++++++++ 2 files changed, 184 insertions(+) diff --git a/sys-auth/elogind/elogind-235.2-r1.ebuild b/sys-auth/elogind/elogind-235.2-r1.ebuild new file mode 100644 index 00000000000..eb33bb294c4 --- /dev/null +++ b/sys-auth/elogind/elogind-235.2-r1.ebuild @@ -0,0 +1,128 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +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" +SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="CC0-1.0 LGPL-2.1+ public-domain" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+acl debug doc +pam +policykit selinux" + +COMMON_DEPEND=" + sys-apps/util-linux + sys-libs/libcap + virtual/libudev:= + acl? ( sys-apps/acl ) + pam? ( virtual/pam ) + selinux? ( sys-libs/libselinux ) +" +DEPEND="${COMMON_DEPEND} + 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 + sys-devel/libtool + virtual/pkgconfig +" +RDEPEND="${COMMON_DEPEND} + !sys-apps/systemd +" +PDEPEND=" + sys-apps/dbus + policykit? ( sys-auth/polkit ) +" + +PATCHES=( + "${FILESDIR}/${PN}-235.1-docs.patch" + "${FILESDIR}/${P}-legacy-cgroupmode.patch" +) + +pkg_setup() { + local CONFIG_CHECK="~CGROUPS ~EPOLL ~INOTIFY_USER ~SIGNALFD ~TIMERFD" + + if use kernel_linux; then + linux-info_pkg_setup + fi +} + +src_prepare() { + default + xdg_environment_reset +} + +src_configure() { + local emesonargs cgroupmode rccgroupmode + + rccgroupmode="$(grep rc_cgroup_mode /etc/rc.conf | cut -d '"' -f 2)" + cgroupmode="legacy" + + if [[ "xhybrid" = "x${rccgroupmode}" ]] ; then + cgroupmode="hybrid" + elif [[ "xunified" = "x${rccgroupmode}" ]] ; then + cgroupmode="unified" + fi + + emesonargs=( + -Ddocdir="${EPREFIX}/usr/share/doc/${P}" \ + -Dhtmldir="${EPREFIX}/usr/share/doc/${P}/html" \ + -Dpamlibdir=$(getpam_mod_dir) \ + -Dudevrulesdir="$(get_udevdir)"/rules.d \ + --libdir="${EPREFIX}"/usr/$(get_libdir) \ + -Drootlibdir="${EPREFIX}"/$(get_libdir) \ + -Drootlibexecdir="${EPREFIX}"/$(get_libdir)/elogind \ + -Drootprefix="${EPREFIX}/" \ + -Dsmack=true \ + -Dman=auto \ + -Dhtml=$(usex doc auto false) \ + -Dcgroup-controller=openrc \ + -Ddefault-hierarchy=${cgroupmode} \ + -Ddebug=$(usex debug elogind false) \ + --buildtype $(usex debug debug release) \ + -Dacl=$(usex acl true false) \ + -Dpam=$(usex pam true false) \ + -Dselinux=$(usex selinux true false) \ + -Dbashcompletiondir="${EPREFIX}/usr/share/bash-completion/completions" \ + -Dzsh-completion="${EPREFIX}/usr/share/zsh/site-functions" + ) + meson_src_configure +} + +src_install() { + meson_src_install + + newinitd "${FILESDIR}"/${PN}.init ${PN} + + sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.conf.in > ${PN}.conf || die + newconfd ${PN}.conf ${PN} +} + +pkg_postinst() { + if [ "$(rc-config list boot | grep elogind)" != "" ]; then + ewarn "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 + ewarn "elogind is currently not started from any runlevel." + ewarn "You may add it to the boot runlevel by:" + ewarn "# rc-update add elogind boot" + fi + ewarn "Alternatively you can leave elogind out of any" + ewarn "runlevel. It will then be started automatically" + if use pam; then + ewarn "when the first service calls it via dbus, or the" + ewarn "first user logs into the system." + else + ewarn "when the first service calls it via dbus." + fi +} diff --git a/sys-auth/elogind/files/elogind-235.2-legacy-cgroupmode.patch b/sys-auth/elogind/files/elogind-235.2-legacy-cgroupmode.patch new file mode 100644 index 00000000000..eb86e930f6f --- /dev/null +++ b/sys-auth/elogind/files/elogind-235.2-legacy-cgroupmode.patch @@ -0,0 +1,56 @@ +From 003ece760231aba0c661e2390dfd11075d72a8da Mon Sep 17 00:00:00 2001 +From: Sven Eden <yamakuz...@gmx.net> +Date: Thu, 18 Jan 2018 23:01:12 +0100 +Subject: [PATCH] Prep v235.3 : Fix cgroup hierarchy detection code + +There is no sub-grouping with elogind, so /sys/fs/cgroup/elogind is +not needed to be mounted as cgroup fs in legacy mode. + +Fixes Bug https://bugs.gentoo.org/644834 +--- + src/basic/cgroup-util.c | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c +index 7f86c532c..cb60108ef 100644 +--- a/src/basic/cgroup-util.c ++++ b/src/basic/cgroup-util.c +@@ -2550,28 +2550,31 @@ static int cg_unified_update(void) { + + if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) + unified_cache = CGROUP_UNIFIED_ALL; ++#if 0 /// The handling of cgroups is a bit different with elogind + else if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) { ++#else ++ else if (F_TYPE_EQUAL(fs.f_type, CGROUP_SUPER_MAGIC) ++ || F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) { ++#endif // 0 + if (statfs("/sys/fs/cgroup/unified/", &fs) == 0 && + F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) { + unified_cache = CGROUP_UNIFIED_SYSTEMD; + unified_systemd_v232 = false; + #if 0 /// elogind uses its own name + } else if (statfs("/sys/fs/cgroup/systemd/", &fs) == 0 && +- F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) { +- unified_cache = CGROUP_UNIFIED_SYSTEMD; +- unified_systemd_v232 = true; +- } else { +- if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0) +- return -errno; + #else + } else if (statfs("/sys/fs/cgroup/elogind/", &fs) == 0 && ++#endif // 0 + F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) { + unified_cache = CGROUP_UNIFIED_SYSTEMD; + unified_systemd_v232 = true; + } else { +-#endif // 0 ++#if 0 /// There is no sub-grouping within elogind ++ if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0) ++ return -errno; + if (!F_TYPE_EQUAL(fs.f_type, CGROUP_SUPER_MAGIC)) + return -ENOMEDIUM; ++#endif // 0 + unified_cache = CGROUP_UNIFIED_NONE; + } + } else