commit:     030030e9b669fa92b24c2e84b009b6b0c7282608
Author:     callmetango <callmetango <AT> users <DOT> noreply <DOT> github 
<DOT> com>
AuthorDate: Fri Jul  3 10:52:24 2020 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Thu Jul  9 17:07:31 2020 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=030030e9

sys-auth/elogind: make it compile on musl with SELinux

* remove non-POSIX mallinfo from debug outputs

Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>

 sys-auth/elogind/Manifest                          |   1 +
 sys-auth/elogind/elogind-243.7.ebuild              | 137 +++++++++++++++++++++
 .../elogind/files/elogind-241.4-broken-test.patch  |  15 +++
 .../files/elogind-243.7-musl-mallinfo.patch        |  35 ++++++
 sys-auth/elogind/files/elogind-243.7-nodocs.patch  |  29 +++++
 sys-auth/elogind/files/elogind.conf.in             |   7 ++
 sys-auth/elogind/files/elogind.init                |  25 ++++
 sys-auth/elogind/metadata.xml                      |  13 ++
 8 files changed, 262 insertions(+)

diff --git a/sys-auth/elogind/Manifest b/sys-auth/elogind/Manifest
new file mode 100644
index 0000000..8bb9d4b
--- /dev/null
+++ b/sys-auth/elogind/Manifest
@@ -0,0 +1 @@
+DIST elogind-243.7.tar.gz 1338186 BLAKE2B 
f3efc2af50f56c2cda18d721c18f4d88ca608fb35b2c7e2ebb35c3f3f743124dcf17efcc9db47810a13093397b1c1bc82cb42e017b3db493af5d2bb70bcf0eff
 SHA512 
fd17c5016d083d63805f9ed0326ee32597870f6c48c9c246712cb09a77db775036b0fd0f4258b6557e189a1eceb4b50f4ae2e9e7881f4d9759b87a0b49ce3472

diff --git a/sys-auth/elogind/elogind-243.7.ebuild 
b/sys-auth/elogind/elogind-243.7.ebuild
new file mode 100644
index 0000000..82580b7
--- /dev/null
+++ b/sys-auth/elogind/elogind-243.7.ebuild
@@ -0,0 +1,137 @@
+# Copyright 1999-2020 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 ~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 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="
+       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}/${P}-nodocs.patch"
+       "${FILESDIR}/${PN}-241.4-broken-test.patch" # bug 699116
+       "${FILESDIR}/${PN}-243.7-musl-mallinfo.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)
+               --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 ${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
+               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/files/elogind-241.4-broken-test.patch 
b/sys-auth/elogind/files/elogind-241.4-broken-test.patch
new file mode 100644
index 0000000..d273582
--- /dev/null
+++ b/sys-auth/elogind/files/elogind-241.4-broken-test.patch
@@ -0,0 +1,15 @@
+--- a/src/test/meson.build     2019-11-15 08:59:47.000000000 +0100
++++ b/src/test/meson.build     2019-11-30 13:04:45.051316140 +0100
+@@ -1014,9 +1014,9 @@
+ #          '', 'timeout=120'],
+ #endif // 0
+ 
+-        [['src/libelogind/sd-login/test-login.c'],
+-         [],
+-         []],
++#         [['src/libelogind/sd-login/test-login.c'],
++#          [],
++#          []],
+ 
+         [['src/libelogind/sd-device/test-sd-device.c'],
+          [],

diff --git a/sys-auth/elogind/files/elogind-243.7-musl-mallinfo.patch 
b/sys-auth/elogind/files/elogind-243.7-musl-mallinfo.patch
new file mode 100644
index 0000000..b9b1700
--- /dev/null
+++ b/sys-auth/elogind/files/elogind-243.7-musl-mallinfo.patch
@@ -0,0 +1,35 @@
+diff -Naur elogind-243.7.orig/src/basic/selinux-util.c 
elogind-243.7/src/basic/selinux-util.c
+--- elogind-243.7.orig/src/basic/selinux-util.c        2020-03-12 
20:33:40.000000000 +0100
++++ elogind-243.7/src/basic/selinux-util.c     2020-07-03 12:29:16.140181565 
+0200
+@@ -63,7 +63,6 @@
+ 
+ #if HAVE_SELINUX
+         usec_t before_timestamp, after_timestamp;
+-        struct mallinfo before_mallinfo, after_mallinfo;
+ 
+         if (label_hnd)
+                 return 0;
+@@ -71,7 +70,6 @@
+         if (!mac_selinux_use())
+                 return 0;
+ 
+-        before_mallinfo = mallinfo();
+         before_timestamp = now(CLOCK_MONOTONIC);
+ 
+         label_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0);
+@@ -83,13 +81,9 @@
+                 int l;
+ 
+                 after_timestamp = now(CLOCK_MONOTONIC);
+-                after_mallinfo = mallinfo();
+ 
+-                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);
++                log_debug("Successfully loaded SELinux database in %s",
++                          format_timespan(timespan, sizeof(timespan), 
after_timestamp - before_timestamp, 0));
+         }
+ #endif
+ 

diff --git a/sys-auth/elogind/files/elogind-243.7-nodocs.patch 
b/sys-auth/elogind/files/elogind-243.7-nodocs.patch
new file mode 100644
index 0000000..0ec0aa3
--- /dev/null
+++ b/sys-auth/elogind/files/elogind-243.7-nodocs.patch
@@ -0,0 +1,29 @@
+We don't want the build system to install to docdir for us.
+
+--- a/meson.build      2020-03-12 20:33:40.000000000 +0100
++++ b/meson.build      2020-03-12 22:46:08.020716935 +0100
+@@ -3352,15 +3352,11 @@
+ # install_data('modprobe.d/systemd.conf',
+ #              install_dir : modprobedir)
+ #endif // 0
+-install_data('LICENSE.GPL2',
+-             'LICENSE.LGPL2.1',
+ #if 0 /// elogind has upgraded to markdown, and the NEWS file is useless
+ #              'NEWS',
+ #              'README',
+ #else // 0
+-             'README.md',
+ #endif // 0
+-             'docs/CODING_STYLE.md',
+ #if 0 /// irrelevant for elogind
+ #              'docs/DISTRO_PORTING.md',
+ #              'docs/ENVIRONMENT.md',
+@@ -3369,8 +3365,6 @@
+ #              'docs/TRANSLATORS.md',
+ #              'docs/UIDS-GIDS.md',
+ #endif // 0
+-             'src/libelogind/sd-bus/GVARIANT-SERIALIZATION',
+-             install_dir : docdir)
+ 
+ #if 0 /// UNNEEDED by elogind
+ # meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))

diff --git a/sys-auth/elogind/files/elogind.conf.in 
b/sys-auth/elogind/files/elogind.conf.in
new file mode 100644
index 0000000..7b05b35
--- /dev/null
+++ b/sys-auth/elogind/files/elogind.conf.in
@@ -0,0 +1,7 @@
+# /etc/conf.d/elogind: config file for /etc/init.d/elogind
+
+# this is the elogind executable
+ELOGIND_EXEC="/@libdir@/elogind/elogind"
+
+# this is where elogind will store its pid file
+ELOGIND_PIDFILE="/run/elogind.pid"

diff --git a/sys-auth/elogind/files/elogind.init 
b/sys-auth/elogind/files/elogind.init
new file mode 100644
index 0000000..019c3af
--- /dev/null
+++ b/sys-auth/elogind/files/elogind.init
@@ -0,0 +1,25 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+       need dbus
+
+       # Make sure elogind is up before xdm starts any dm
+       before xdm
+}
+
+start() {
+       ebegin "Starting elogind"
+
+       start-stop-daemon --start --quiet \
+               --pidfile "${ELOGIND_PIDFILE}" \
+               --exec "${ELOGIND_EXEC}" -- --daemon
+       eend $?
+}
+
+stop() {
+       ebegin "Stopping elogind"
+       start-stop-daemon --stop --quiet --pidfile "${ELOGIND_PIDFILE}"
+       eend $?
+}

diff --git a/sys-auth/elogind/metadata.xml b/sys-auth/elogind/metadata.xml
new file mode 100644
index 0000000..c28bf0a
--- /dev/null
+++ b/sys-auth/elogind/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>[email protected]</email>
+       </maintainer>
+       <maintainer type="person">
+               <email>[email protected]</email>
+       </maintainer>
+       <upstream>
+               <remote-id type="github">elogind/elogind</remote-id>
+       </upstream>
+</pkgmetadata>

Reply via email to