diff --git a/srcpkgs/elogind-devel b/srcpkgs/elogind-devel new file mode 120000 index 0000000000..49be2e0cf5 --- /dev/null +++ b/srcpkgs/elogind-devel @@ -0,0 +1 @@ +elogind \ No newline at end of file diff --git a/srcpkgs/elogind/files/elogind.wrapper b/srcpkgs/elogind/files/elogind.wrapper new file mode 100644 index 0000000000..9b684d8ba4 --- /dev/null +++ b/srcpkgs/elogind/files/elogind.wrapper @@ -0,0 +1,15 @@ +#!/bin/sh +cgroup=/sys/fs/cgroup/elogind + +mkdir -p "$cgroup" +if ! mountpoint "$cgroup" > /dev/null; then + mount -t cgroup -o none,name=elogind cgroup $cgroup || exit 1 +fi + +for tmpfs in /run/systemd /run/user; do + mountpoint "$tmpfs" > /dev/null && continue + mkdir -p "$tmpfs" + mount -t tmpfs -o nosuid,nodev,noexec,mode=0755 none "$tmpfs" || exit 1 +done + +exec /usr/libexec/elogind/elogind diff --git a/srcpkgs/elogind/patches/allow-unprivileged-calls.patch b/srcpkgs/elogind/patches/allow-unprivileged-calls.patch new file mode 100644 index 0000000000..0fe97cd700 --- /dev/null +++ b/srcpkgs/elogind/patches/allow-unprivileged-calls.patch @@ -0,0 +1,129 @@ +From 1ca40c077cd9a08f96a559ba51e8dba230298c4d Mon Sep 17 00:00:00 2001 +From: Michael Palimaka +Date: Sun, 19 Jun 2016 01:56:56 +1000 +Subject: [PATCH] Update org.freedesktop.login1.conf + +This mirrors an upstream change opening up all of logind's bus calls to +unprivileged users via polkit. + +See systemd/systemd/issues/471. +Closes #3. +--- + src/login/org.freedesktop.login1.conf | 68 +++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +diff --git a/src/login/org.freedesktop.login1.conf b/src/login/org.freedesktop.login1.conf +index 1318328..2e67e3d 100644 +--- src/login/org.freedesktop.login1.conf ++++ src/login/org.freedesktop.login1.conf +@@ -90,6 +90,42 @@ + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + ++ ++ + + ++ ++ + + ++ ++ + + ++ ++ ++ ++ + + ++ ++ + + + ++ ++ ++ ++ + + + diff --git a/srcpkgs/elogind/patches/fix-gcc6.patch b/srcpkgs/elogind/patches/fix-gcc6.patch new file mode 100644 index 0000000000..b7c89e8cdf --- /dev/null +++ b/srcpkgs/elogind/patches/fix-gcc6.patch @@ -0,0 +1,55 @@ +--- src/shared/errno-list.c.orig 2017-01-13 21:53:06.171441950 +0100 ++++ src/shared/errno-list.c 2017-01-13 21:53:44.491417473 +0100 +@@ -25,7 +25,7 @@ + #include "errno-list.h" + + static const struct errno_name* lookup_errno(register const char *str, +- register unsigned int len); ++ register size_t len); + + #include "errno-to-name.h" + #include "errno-from-name.h" +--- src/shared/af-list.c.orig 2017-01-13 21:55:14.941359697 +0100 ++++ src/shared/af-list.c 2017-01-13 21:56:15.967320716 +0100 +@@ -25,7 +25,7 @@ + #include "util.h" + #include "af-list.h" + +-static const struct af_name* lookup_af(register const char *str, register unsigned int len); ++static const struct af_name* lookup_af(register const char *str, register size_t len); + + #include "af-to-name.h" + #include "af-from-name.h" +--- src/shared/cap-list.c.orig 2017-01-13 21:59:05.416212480 +0100 ++++ src/shared/cap-list.c 2017-01-13 21:59:22.154201788 +0100 +@@ -25,7 +25,7 @@ + #include "cap-list.h" + #include "missing.h" + +-static const struct capability_name* lookup_capability(register const char *str, register unsigned int len); ++static const struct capability_name* lookup_capability(register const char *str, register size_t len); + + #include "cap-to-name.h" + #include "cap-from-name.h" +--- src/shared/arphrd-list.c.orig 2017-01-13 22:01:38.040114990 +0100 ++++ src/shared/arphrd-list.c 2017-01-13 22:01:53.482105126 +0100 +@@ -25,7 +25,7 @@ + #include "util.h" + #include "arphrd-list.h" + +-static const struct arphrd_name* lookup_arphrd(register const char *str, register unsigned int len); ++static const struct arphrd_name* lookup_arphrd(register const char *str, register size_t len); + + #include "arphrd-to-name.h" + #include "arphrd-from-name.h" +--- src/login/logind.h.orig 2017-01-13 22:11:22.760741496 +0100 ++++ src/login/logind.h 2017-01-13 22:11:32.259735429 +0100 +@@ -163,7 +163,7 @@ int manager_send_changed(Manager *manage + int manager_dispatch_delayed(Manager *manager); + + /* gperf lookup function */ +-const struct ConfigPerfItem* logind_gperf_lookup(const char *key, unsigned length); ++const struct ConfigPerfItem* logind_gperf_lookup(const char *key, size_t length); + + int manager_watch_busname(Manager *manager, const char *name); + void manager_drop_busname(Manager *manager, const char *name); diff --git a/srcpkgs/elogind/template b/srcpkgs/elogind/template new file mode 100644 index 0000000000..310b67f185 --- /dev/null +++ b/srcpkgs/elogind/template @@ -0,0 +1,41 @@ +# Template file for 'elogind' +pkgname=elogind +version=219.14 +revision=1 +build_style=gnu-configure +hostmakedepends="automake libxslt intltool libtool pkg-config gperf" +makedepends="libcap-devel libmount-devel libseccomp-devel libblkid-devel pam-devel gettext-devel eudev-libudev-devel glib-devel" +depends="dbus" +short_desc="standalone logind fork" +maintainer="Enno Boland " +license="GPL-2, LGPL-2, MIT" +homepage="https://github.com/andywingo/elogind" +distfiles="https://wingolog.org/pub/elogind/elogind-$version.tar.xz" +checksum=9dc150071a3f4c1ad1c989a7a143c2d41a2d571c643b92090e36a5d0396193c9 +LDFLAGS="-lrt" +conf_files="/etc/elogind/logind.conf" + +pre_configure() { + vinstall $FILESDIR/elogind.wrapper 755 usr/libexec/elogind + sed -i -e "s#^Exec=/bin/false#Exec=/usr/libexec/elogind/elogind.wrapper#" \ + src/login/org.freedesktop.login1.service +} + +post_install() { + ln -s libelogind.pc $DESTDIR/usr/lib/pkgconfig/libsystemd.pc + ln -s libelogind.pc $DESTDIR/usr/lib/pkgconfig/libsystemd-logind.pc + vinstall ./src/systemd/sd-id128.h 644 usr/include + vinstall ./src/systemd/_sd-common.h 644 usr/include +} + +elogind-devel_package() { + depends="${sourcepkg}>=${version}_${revision}" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/*.la + vmove usr/lib/*.so + vmove usr/share/man/man3 + vmove usr/lib/pkgconfig + } +}