Accepting request 457437 from home:kukuk:sysusers

Initial tool package for the new system user proposal

OBS-URL: https://build.opensuse.org/request/show/457437
OBS-URL: https://build.opensuse.org/package/show/Base:System/sysuser-tools?expand=0&rev=1
This commit is contained in:
Ludwig Nussel 2017-02-16 15:08:58 +00:00 committed by Git OBS Bridge
commit 20ab9219b9
8 changed files with 152 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

20
macros.sysusers Normal file
View File

@ -0,0 +1,20 @@
# -*- Mode: makefile; indent-tabs-mode: t -*- */
# RPM macros for packages creating system accounts
#
###
#
# When a package creates a system account, it should use the following macros:
#
# add %sysusers_requires in the package section
#
# add "%sysusers_generate_pre <source file> <account>" to build section
#
# add "%pre -f <account>.pre" to spec file
#
###
# This is for systemctl
%sysusers_requires Requires(pre): systemd
%sysusers_generate_pre() \
%{_prefix}/lib/rpm/sysusers-generate-pre "%1" > "%2".pre

10
sysuser-tools.changes Normal file
View File

@ -0,0 +1,10 @@
-------------------------------------------------------------------
Fri Jan 20 13:04:51 CET 2017 - kukuk@suse.de
- Add macros.sysusers
-------------------------------------------------------------------
Wed Dec 21 16:09:05 UTC 2016 - lnussel@suse.de
- initial package

52
sysuser-tools.spec Normal file
View File

@ -0,0 +1,52 @@
#
# spec file for package sysuser-tools
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: sysuser-tools
Version: 1.1
Release: 0
Summary: Auto provides for system users
License: MIT
Group: System/Packages
Source: sysusers.prov
Source1: sysusers.attr
Source2: sysusers-generate-pre
Source3: macros.sysusers
BuildArch: noarch
%description
Generate auto provides for system users.
%prep
%setup -qcT
%build
%install
install -D -m 755 %{SOURCE0} %{buildroot}%{_prefix}/lib/rpm/sysusers.prov
install -D -m 644 %{SOURCE1} %{buildroot}%{_prefix}/lib/rpm/fileattrs/sysusers.attr
install -D -m 755 %{SOURCE2} %{buildroot}%{_prefix}/lib/rpm/sysusers-generate-pre
install -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/rpm/macros.sysusers
%files
%defattr(-,root,root)
%{_sysconfdir}/rpm/macros.sysusers
%{_prefix}/lib/rpm/sysusers.prov
%{_prefix}/lib/rpm/fileattrs/sysusers.attr
%{_prefix}/lib/rpm/sysusers-generate-pre
%changelog

24
sysusers-generate-pre Normal file
View File

@ -0,0 +1,24 @@
#!/bin/bash
# pass systemd sysusers config files a as argument to this script.
# It will output a shell script that creates those users by
# appending the data to itself.
tmpfile=`mktemp -q -t sysusers.XXXXXX`
cleanup()
{
rm -f "$tmpfile"
}
trap cleanup EXIT
for i in "$@"; do
grep -e '^[ug]' "$i" >> "$tmpfile"
done
lines=`wc -l < "$tmpfile"`
echo '#!/bin/bash'
echo "tail -n $lines \$0 | /usr/bin/systemd-sysusers - || :"
echo "exit 0"
echo '######## data below ########'
cat "$tmpfile"

2
sysusers.attr Normal file
View File

@ -0,0 +1,2 @@
%__sysusers_provides %{_rpmconfigdir}/sysusers.prov
%__sysusers_path ^%{_prefix}/lib/sysusers.d/.*\\.conf$

20
sysusers.prov Normal file
View File

@ -0,0 +1,20 @@
#!/bin/bash
parse()
{
while read line; do
[ "${line:0:1}" != '#' ] || continue
line="${line## *}"
[ -n "$line" ] || continue
set -- $line
if [ "$1" = 'g' ]; then
echo "group($2)"
elif [ "$1" = 'u' ]; then
echo "user($2)"
fi
done
}
while read fn; do
parse < "$fn"
done