summaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2024-04-19 19:36:17 +0000
committer Eric Hameleers <alien@slackware.com>2024-04-19 21:59:51 +0200
commited81ac8ddaafd71f8b94096a87aae978c25c65c8 (patch)
tree7e0ad100feb83dca52e14828cbf0655c7058b7e0 /testing
parentf924be94d261d8f6594c864c8bef34eae5970b64 (diff)
downloadcurrent-ed81ac8ddaafd71f8b94096a87aae978c25c65c8.tar.gz
current-ed81ac8ddaafd71f8b94096a87aae978c25c65c8.tar.xz
Fri Apr 19 19:36:17 UTC 202420240419193617
a/elogind-252.23-x86_64-3.txz: Rebuilt. All right, it's time to stop the bleeding (edge). This has been verified as the last working version of elogind, so we'll revert for now while moving the newer sources into /testing. We didn't actually *need* the 255 branch for libgudev (I was mistakenly under that impression), so this will be fine for now. We'll keep an eye on upstream and move forward when things settle down. d/vala-0.56.17-x86_64-1.txz: Upgraded. l/gdk-pixbuf2-2.42.11-x86_64-1.txz: Upgraded. l/gtk4-4.14.3-x86_64-1.txz: Upgraded. l/polkit-124-x86_64-2.txz: Rebuilt. Recompiled against elogind-252.23. l/python-sphinx-7.3.7-x86_64-1.txz: Upgraded. n/NetworkManager-1.46.0-x86_64-2.txz: Rebuilt. Build with meson instead of autotools, since setting session_tracking to elogind is ignored with autotools, and is set to consolekit instead. While this didn't seem to make a difference in practice, better to get this right now and rule it out as part of the issue. Thanks to marav and LuckyCyborg for the options hints. x/xdg-desktop-portal-1.18.4-x86_64-1.txz: Upgraded. xap/freerdp-2.11.6-x86_64-1.txz: Upgraded. This release is a security release and addresses multiple issues: [Low] OutOfBound Read in zgfx_decompress_segment. [Moderate] Integer overflow & OutOfBound Write in clear_decompress_residual_data. [Low] integer underflow in nsc_rle_decode. [Low] OutOfBound Read in planar_skip_plane_rle. [Low] OutOfBound Read in ncrush_decompress. [Low] OutOfBound Read in interleaved_decompress. For more information, see: https://www.cve.org/CVERecord?id=CVE-2024-32041 https://www.cve.org/CVERecord?id=CVE-2024-32039 https://www.cve.org/CVERecord?id=CVE-2024-32040 https://www.cve.org/CVERecord?id=CVE-2024-32458 https://www.cve.org/CVERecord?id=CVE-2024-32459 https://www.cve.org/CVERecord?id=CVE-2024-32460 (* Security fix *)
Diffstat (limited to 'testing')
-rw-r--r--testing/source/elogind/10-enable-elogind-power.rules12
-rw-r--r--testing/source/elogind/11-prefer-deep-suspend.patch8
-rw-r--r--testing/source/elogind/doinst.sh39
-rwxr-xr-xtesting/source/elogind/elogind.SlackBuild208
-rw-r--r--testing/source/elogind/elogind.nobody.nogroup.99.99.diff174
-rw-r--r--testing/source/elogind/elogind.url1
-rw-r--r--testing/source/elogind/rc.elogind65
-rw-r--r--testing/source/elogind/slack-desc19
8 files changed, 526 insertions, 0 deletions
diff --git a/testing/source/elogind/10-enable-elogind-power.rules b/testing/source/elogind/10-enable-elogind-power.rules
new file mode 100644
index 000000000..db4992062
--- /dev/null
+++ b/testing/source/elogind/10-enable-elogind-power.rules
@@ -0,0 +1,12 @@
+polkit.addRule(
+ function(action, subject) {
+ if ( (action.id == "org.freedesktop.login1.reboot" ||
+ action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
+ action.id == "org.freedesktop.login1.power-off" ||
+ action.id == "org.freedesktop.login1.power-off-multiple-sessions")
+ && subject.isInGroup("power") ) {
+ return polkit.Result.YES;
+ }
+ }
+);
+
diff --git a/testing/source/elogind/11-prefer-deep-suspend.patch b/testing/source/elogind/11-prefer-deep-suspend.patch
new file mode 100644
index 000000000..c3d3d23b5
--- /dev/null
+++ b/testing/source/elogind/11-prefer-deep-suspend.patch
@@ -0,0 +1,8 @@
+--- ./src/sleep/10-elogind.conf.orig 2024-04-16 02:21:44.000000000 -0500
++++ ./src/sleep/10-elogind.conf 2024-04-16 13:32:01.046025234 -0500
+@@ -19,4 +19,4 @@
+ #HandleNvidiaSleep=no
+ #HibernateByUsing=
+ #SuspendByUsing=
+-#SuspendMode=s2idle deep
++SuspendMode=deep s2idle
diff --git a/testing/source/elogind/doinst.sh b/testing/source/elogind/doinst.sh
new file mode 100644
index 000000000..e39e2aee3
--- /dev/null
+++ b/testing/source/elogind/doinst.sh
@@ -0,0 +1,39 @@
+# Handle the incoming configuration files:
+config() {
+ for infile in $1; do
+ NEW="$infile"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+ done
+}
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname ${NEW})/$(basename ${NEW} .new)"
+ if [ -e ${OLD} ]; then
+ cp -a ${OLD} ${NEW}.incoming
+ cat ${NEW} > ${NEW}.incoming
+ mv ${NEW}.incoming ${NEW}
+ fi
+ config ${NEW}
+}
+
+#
+# Preserve permissions while moving into place:
+preserve_perms etc/rc.d/rc.elogind.new
+config etc/elogind/logind.conf.new
+config etc/elogind/sleep.conf.new
+config etc/elogind/sleep.conf.d/10-elogind.conf.new
+config etc/pam.d/elogind-user.new
+
+# Reload elogind-daemon:
+if pgrep -f elogind-daemon 1> /dev/null 2> /dev/null ; then
+ pkill -HUP -f elogind-daemon
+fi
+
diff --git a/testing/source/elogind/elogind.SlackBuild b/testing/source/elogind/elogind.SlackBuild
new file mode 100755
index 000000000..494eddc53
--- /dev/null
+++ b/testing/source/elogind/elogind.SlackBuild
@@ -0,0 +1,208 @@
+#!/bin/bash
+
+# Copyright 2016, 2017, 2020 Eric Hameleers, Eindhoven, NL
+# Copyright 2020, 2023, 2024 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=elogind
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) readelf /usr/bin/file -A | grep -E -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) ARCH=$(uname -m) ;;
+ esac
+ export ARCH
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+NUMJOBS=${NUMJOBS:-" -j $(expr $(nproc) + 1) "}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "armv7hl" ]; then
+ SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
+ LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+# Once upon a time we were encouraged to go against long-standing UNIX
+# traditions and use 99:99 for nobody:nogroup.
+# This may have been a bad idea.
+# But since to change this we'll have to dig through the system and make
+# sure that nothing hardcodes 99:99, we'll leave it as-is for now.
+# It's more than likely on the TODO list to change these back to
+# 65534:65534, however.
+# Meanwhile we'll at least change this from a sed to a patch.
+# Always hated sed in these situations because the underlying code can change
+# but sed will still happily scribble all over everything.
+cat $CWD/elogind.nobody.nogroup.99.99.diff | patch -p1 --verbose || exit 1
+
+# Don't prefer s2idle, as it doesn't seem to work:
+cat $CWD/11-prefer-deep-suspend.patch | patch -p1 --verbose || exit 1
+
+# Configure, build, and install:
+export CFLAGS="$SLKCFLAGS"
+export CXXFLAGS="$SLKCFLAGS"
+mkdir meson-build
+cd meson-build
+meson setup \
+ --buildtype=release \
+ --prefix=/usr \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --libexecdir=/lib${LIBDIRSUFFIX}/elogind \
+ -Dpkgconfiglibdir=/usr/lib${LIBDIRSUFFIX}/pkgconfig \
+ -Dpamlibdir=/lib${LIBDIRSUFFIX}/security \
+ -Dudevrulesdir="/lib/udev/rules.d" \
+ -Ddocdir="/usr/doc/$PKGNAM-$VERSION" \
+ -Dhtmldir="/usr/doc/$PKGNAM-$VERSION/html" \
+ -Dmandir="/usr/man" \
+ -Dman=enabled \
+ -Dhtml=disabled \
+ -Dbashcompletiondir="/usr/share/bash-completion/completions" \
+ -Dnobody-user=nobody \
+ -Dnobody-group=nogroup \
+ -Dpam=enabled \
+ -Dpamconfdir="/etc/pam.d" \
+ -Dacl=enabled \
+ -Dsmack=false \
+ -Dutmp=true \
+ -Ddefault-hierarchy=legacy \
+ -Dcgroup-controller=elogind \
+ -Dhalt-path=/sbin/halt \
+ -Dpoweroff-path=/sbin/poweroff \
+ -Dreboot-path=/sbin/reboot \
+ -Ddefault-kill-user-processes=false \
+ -Dmode=release \
+ .. || exit 1
+ "${NINJA:=ninja}" $NUMJOBS || exit 1
+ DESTDIR=$PKG $NINJA install || exit 1
+cd ..
+
+# Create symlinks for elogind binaries to /bin/:
+mkdir -p $PKG/bin
+ln -sf /usr/bin/elogind-inhibit $PKG/bin/elogind-inhibit
+ln -sf /usr/bin/loginctl $PKG/bin/loginctl
+
+# Make sure we do not overwrite the user's customizations:
+mv -i $PKG/etc/elogind/logind.conf{,.new}
+mv -i $PKG/etc/elogind/sleep.conf{,.new}
+mv -i $PKG/etc/elogind/sleep.conf.d/10-elogind.conf{,.new}
+mv -i $PKG/etc/pam.d/elogind-user{,.new}
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress manual pages:
+find $PKG/usr/man -type f -exec gzip -9 {} \+
+for i in $( find $PKG/usr/man -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz
+ rm $i
+done
+
+# Add an rc script:
+mkdir -p $PKG/etc/rc.d
+cat $CWD/rc.elogind \
+ | sed -e "s/@LIBDIRSUFFIX@/${LIBDIRSUFFIX}/g" \
+ > $PKG/etc/rc.d/rc.elogind.new
+chmod 755 $PKG/etc/rc.d/rc.elogind.new
+
+# Create supported dirs in /etc/elogind/ (local config)
+mkdir -p $PKG/etc/elogind/logind.conf.d/ $PKG/etc/elogind/sleep.conf.d/
+
+# Add login1 policy file that allows users in the 'power' group
+# to shutdown/reboot the computer:
+mkdir -p $PKG/usr/share/polkit-1/rules.d
+zcat $CWD/10-enable-elogind-power.rules.gz > $PKG/usr/share/polkit-1/rules.d/10-enable-session-power.rules
+
+# We don't need the hidden files to make inferior package managers keep dirs:
+find $PKG -type f -name ".keep_dir" -exec rm -f {} \;
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS* ChangeLog CHANGES COPYING* LICENSE* NEWS* README* THANKS* TODO* \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/testing/source/elogind/elogind.nobody.nogroup.99.99.diff b/testing/source/elogind/elogind.nobody.nogroup.99.99.diff
new file mode 100644
index 000000000..e1930ef52
--- /dev/null
+++ b/testing/source/elogind/elogind.nobody.nogroup.99.99.diff
@@ -0,0 +1,174 @@
+diff -u -r --new-file elogind-252.23.orig/meson.build elogind-252.23/meson.build
+--- elogind-252.23.orig/meson.build 2024-03-10 03:24:27.000000000 -0500
++++ elogind-252.23/meson.build 2024-03-12 13:22:28.571004872 -0500
+@@ -1031,40 +1031,40 @@
+ nobody_group = get_option('nobody-group')
+
+ if not meson.is_cross_build()
+- getent_result = run_command('getent', 'passwd', '65534', check : false)
++ getent_result = run_command('getent', 'passwd', '99', check : false)
+ if getent_result.returncode() == 0
+ name = getent_result.stdout().split(':')[0]
+ if name != nobody_user
+ warning('\n' +
+- 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
++ 'The local user with the UID 99 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
+ 'Your build will result in an user table setup that is incompatible with the local system.')
+ endif
+ endif
+ id_result = run_command('id', '-u', nobody_user, check : false)
+ if id_result.returncode() == 0
+ id = id_result.stdout().strip().to_int()
+- if id != 65534
++ if id != 99
+ warning('\n' +
+- 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
++ 'The local user with the configured user name "@0@" of the nobody user does not have UID 99 (it has @1@).\n'.format(nobody_user, id) +
+ 'Your build will result in an user table setup that is incompatible with the local system.')
+ endif
+ endif
+
+- getent_result = run_command('getent', 'group', '65534', check : false)
++ getent_result = run_command('getent', 'group', '99', check : false)
+ if getent_result.returncode() == 0
+ name = getent_result.stdout().split(':')[0]
+ if name != nobody_group
+ warning('\n' +
+- 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
++ 'The local group with the GID 99 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
+ 'Your build will result in an group table setup that is incompatible with the local system.')
+ endif
+ endif
+ id_result = run_command('id', '-g', nobody_group, check : false)
+ if id_result.returncode() == 0
+ id = id_result.stdout().strip().to_int()
+- if id != 65534
++ if id != 99
+ warning('\n' +
+- 'The local group with the configured group name "@0@" of the nobody group does not have GID 65534 (it has @1@).\n'.format(nobody_group, id) +
++ 'The local group with the configured group name "@0@" of the nobody group does not have GID 99 (it has @1@).\n'.format(nobody_group, id) +
+ 'Your build will result in an group table setup that is incompatible with the local system.')
+ endif
+ endif
+diff -u -r --new-file elogind-252.23.orig/meson_options.txt elogind-252.23/meson_options.txt
+--- elogind-252.23.orig/meson_options.txt 2024-03-10 03:24:27.000000000 -0500
++++ elogind-252.23/meson_options.txt 2024-03-12 13:22:28.571004872 -0500
+@@ -308,10 +308,10 @@
+ option('wheel-group', type : 'boolean',
+ description : 'the ACL for wheel group should be added')
+ option('nobody-user', type : 'string',
+- description : 'The name of the nobody user (the one with UID 65534)',
++ description : 'The name of the nobody user (the one with UID 99)',
+ value : 'nobody')
+ option('nobody-group', type : 'string',
+- description : 'The name of the nobody group (the one with GID 65534)',
++ description : 'The name of the nobody group (the one with GID 99)',
+ value : 'nobody')
+ #if 0 /// UNNEEDED by elogind
+ # option('adm-gid', type : 'integer', value : 0,
+diff -u -r --new-file elogind-252.23.orig/src/basic/user-util.c elogind-252.23/src/basic/user-util.c
+--- elogind-252.23.orig/src/basic/user-util.c 2024-03-10 03:24:27.000000000 -0500
++++ elogind-252.23/src/basic/user-util.c 2024-03-12 13:22:28.571004872 -0500
+@@ -178,7 +178,7 @@
+ const char **shell,
+ UserCredsFlags flags) {
+
+- /* We enforce some special rules for uid=0 and uid=65534: in order to avoid NSS lookups for root we hardcode
++ /* We enforce some special rules for uid=0 and uid=99: in order to avoid NSS lookups for root we hardcode
+ * their user record data. */
+
+ if (STR_IN_SET(*username, "root", "0")) {
+@@ -198,7 +198,7 @@
+ return 0;
+ }
+
+- if (STR_IN_SET(*username, NOBODY_USER_NAME, "65534") &&
++ if (STR_IN_SET(*username, NOBODY_USER_NAME, "99") &&
+ synthesize_nobody()) {
+ *username = NOBODY_USER_NAME;
+
+@@ -344,7 +344,7 @@
+ return 0;
+ }
+
+- if (STR_IN_SET(*groupname, NOBODY_GROUP_NAME, "65534") &&
++ if (STR_IN_SET(*groupname, NOBODY_GROUP_NAME, "99") &&
+ synthesize_nobody()) {
+ *groupname = NOBODY_GROUP_NAME;
+
+@@ -940,7 +940,7 @@
+ bool synthesize_nobody(void) {
+ /* Returns true when we shall synthesize the "nobody" user (which we do by default). This can be turned off by
+ * touching /etc/systemd/dont-synthesize-nobody in order to provide upgrade compatibility with legacy systems
+- * that used the "nobody" user name and group name for other UIDs/GIDs than 65534.
++ * that used the "nobody" user name and group name for other UIDs/GIDs than 99.
+ *
+ * Note that we do not employ any kind of synchronization on the following caching variable. If the variable is
+ * accessed in multi-threaded programs in the worst case it might happen that we initialize twice, but that
+diff -u -r --new-file elogind-252.23.orig/src/basic/user-util.h elogind-252.23/src/basic/user-util.h
+--- elogind-252.23.orig/src/basic/user-util.h 2024-03-10 03:24:27.000000000 -0500
++++ elogind-252.23/src/basic/user-util.h 2024-03-12 13:22:28.571004872 -0500
+@@ -78,8 +78,8 @@
+ #define UID_INVALID ((uid_t) -1)
+ #define GID_INVALID ((gid_t) -1)
+
+-#define UID_NOBODY ((uid_t) 65534U)
+-#define GID_NOBODY ((gid_t) 65534U)
++#define UID_NOBODY ((uid_t) 99U)
++#define GID_NOBODY ((gid_t) 99U)
+
+ /* If REMOUNT_IDMAPPING_HOST_ROOT is set for remount_idmap() we'll include a mapping here that maps the host
+ * root user accessing the idmapped mount to the this user ID on the backing fs. This is the last valid UID in
+diff -u -r --new-file elogind-252.23.orig/src/test/test-fs-util.c elogind-252.23/src/test/test-fs-util.c
+--- elogind-252.23.orig/src/test/test-fs-util.c 2024-03-10 03:24:27.000000000 -0500
++++ elogind-252.23/src/test/test-fs-util.c 2024-03-12 13:22:28.571004872 -0500
+@@ -591,8 +591,8 @@
+ usec_t test_mtime;
+ int r;
+
+- test_uid = geteuid() == 0 ? 65534 : getuid();
+- test_gid = geteuid() == 0 ? 65534 : getgid();
++ test_uid = geteuid() == 0 ? 99 : getuid();
++ test_gid = geteuid() == 0 ? 99 : getgid();
+
+ test_mtime = usec_sub_unsigned(now(CLOCK_REALTIME), USEC_PER_WEEK);
+
+diff -u -r --new-file elogind-252.23.orig/src/test/test-user-util.c elogind-252.23/src/test/test-user-util.c
+--- elogind-252.23.orig/src/test/test-user-util.c 2024-03-10 03:24:27.000000000 -0500
++++ elogind-252.23/src/test/test-user-util.c 2024-03-12 13:22:28.571004872 -0500
+@@ -230,7 +230,7 @@
+ assert_se(!valid_user_group_name("", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+ assert_se(valid_user_group_name("0", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+ assert_se(valid_user_group_name("1", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+- assert_se(valid_user_group_name("65534", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
++ assert_se(valid_user_group_name("99", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+ assert_se(!valid_user_group_name("65535", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+ assert_se(valid_user_group_name("65536", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+ assert_se(!valid_user_group_name("-1", VALID_USER_ALLOW_NUMERIC|VALID_USER_RELAX));
+@@ -266,7 +266,7 @@
+ assert_se(!valid_user_group_name("", VALID_USER_ALLOW_NUMERIC));
+ assert_se(valid_user_group_name("0", VALID_USER_ALLOW_NUMERIC));
+ assert_se(valid_user_group_name("1", VALID_USER_ALLOW_NUMERIC));
+- assert_se(valid_user_group_name("65534", VALID_USER_ALLOW_NUMERIC));
++ assert_se(valid_user_group_name("99", VALID_USER_ALLOW_NUMERIC));
+ assert_se(!valid_user_group_name("65535", VALID_USER_ALLOW_NUMERIC));
+ assert_se(valid_user_group_name("65536", VALID_USER_ALLOW_NUMERIC));
+ assert_se(!valid_user_group_name("-1", VALID_USER_ALLOW_NUMERIC));
+@@ -350,7 +350,7 @@
+ test_get_user_creds_one("root", "root", 0, 0, "/root", DEFAULT_USER_SHELL);
+ test_get_user_creds_one("0", "root", 0, 0, "/root", DEFAULT_USER_SHELL);
+ test_get_user_creds_one(NOBODY_USER_NAME, NOBODY_USER_NAME, UID_NOBODY, GID_NOBODY, "/", NOLOGIN);
+- test_get_user_creds_one("65534", NOBODY_USER_NAME, UID_NOBODY, GID_NOBODY, "/", NOLOGIN);
++ test_get_user_creds_one("99", NOBODY_USER_NAME, UID_NOBODY, GID_NOBODY, "/", NOLOGIN);
+ }
+
+ #if 0 /// UNNEEDED by elogind
+@@ -375,7 +375,7 @@
+ test_get_group_creds_one("root", "root", 0);
+ test_get_group_creds_one("0", "root", 0);
+ test_get_group_creds_one(NOBODY_GROUP_NAME, NOBODY_GROUP_NAME, GID_NOBODY);
+- test_get_group_creds_one("65534", NOBODY_GROUP_NAME, GID_NOBODY);
++ test_get_group_creds_one("99", NOBODY_GROUP_NAME, GID_NOBODY);
+ }
+
+ TEST(make_salt) {
diff --git a/testing/source/elogind/elogind.url b/testing/source/elogind/elogind.url
new file mode 100644
index 000000000..b8940789e
--- /dev/null
+++ b/testing/source/elogind/elogind.url
@@ -0,0 +1 @@
+https://github.com/elogind/elogind
diff --git a/testing/source/elogind/rc.elogind b/testing/source/elogind/rc.elogind
new file mode 100644
index 000000000..62884784a
--- /dev/null
+++ b/testing/source/elogind/rc.elogind
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# /etc/rc.d/rc.elogind
+# Initializes the elogind service on Slackware.
+# There is no need to explicitly start a daemon; this will be taken
+# care of automatically by dbus when that starts.
+#
+# Author:
+# Eric Hameleers <alien@slackware.com> 2016
+# Widya Walesa 2020
+#
+# Description:
+# We use elogind (standalone subset extracted from systemd) instead of
+# systemd itself; so we need to initialize a systemd-like state.
+#
+# Note:
+# Slackware has a tmpfs mounted on /run (see rc.S).
+#
+
+start_elogind() {
+ if [ -x /lib@LIBDIRSUFFIX@/elogind/elogind ]; then
+ if [ ! -d /run/user ]; then
+ mkdir -p /run/user
+ fi
+ if [ ! -d /run/systemd ]; then
+ mkdir -p /run/elogind /sys/fs/cgroup/elogind
+ ( cd /run; rm -rf systemd; ln -sf elogind systemd; )
+ ( cd /sys/fs/cgroup; rm -rf systemd; ln -sf elogind systemd; )
+ fi
+ if pgrep -l -F /run/elogind.pid 2>/dev/null | grep -q elogind; then
+ echo "Elogind is already running"
+ else
+ echo -n "Starting elogind: "
+ rm -f /run/elogind.pid
+ /lib@LIBDIRSUFFIX@/elogind/elogind --daemon
+ echo "/lib@LIBDIRSUFFIX@/elogind/elogind --daemon"
+ fi
+ fi
+}
+
+stop_elogind() {
+ if pgrep -l -F /run/elogind.pid 2>/dev/null | grep -q elogind; then
+ echo -n "Stopping elogind: "
+ pkill -F /run/elogind.pid 2>/dev/null
+ echo "DONE"
+ else
+ echo "Elogind is not running"
+ fi
+}
+
+case "$1" in
+ start)
+ start_elogind
+ ;;
+ stop)
+ stop_elogind
+ ;;
+ restart)
+ stop_elogind
+ sleep 1
+ start_elogind
+ ;;
+ *)
+ echo "Usage: $0 start|stop|restart"
+esac
diff --git a/testing/source/elogind/slack-desc b/testing/source/elogind/slack-desc
new file mode 100644
index 000000000..507776d5f
--- /dev/null
+++ b/testing/source/elogind/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+elogind: elogind (logind extracted from systemd)
+elogind:
+elogind: elogind is the systemd project's logind, extracted to a standalone
+elogind: package.
+elogind:
+elogind: Homepage: https://github.com/elogind/elogind
+elogind:
+elogind:
+elogind:
+elogind:
+elogind: