[packages/greetd] new

atler atler at pld-linux.org
Thu Dec 30 15:05:31 CET 2021


commit 5f727173fde3b40970174e5456e663bbda4d0d11
Author: Jan Palus <atler at pld-linux.org>
Date:   Thu Dec 30 14:45:40 2021 +0100

    new

 create-crates.sh |  69 +++++++++++++++++++++++++++++++++
 greetd.pamd      |  16 ++++++++
 greetd.spec      | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 199 insertions(+)
---
diff --git a/greetd.spec b/greetd.spec
new file mode 100644
index 0000000..d2766b2
--- /dev/null
+++ b/greetd.spec
@@ -0,0 +1,114 @@
+%define		crates_ver	0.8.0
+
+Summary:	A login manager daemon
+Name:		greetd
+Version:	0.8.0
+Release:	1
+License:	GPL v3+
+Group:		Applications
+Source0:	https://git.sr.ht/~kennylevinsen/greetd/archive/%{version}.tar.gz
+# Source0-md5:	6c15717ca4741f5c99bba7c16846481f
+Source1:	%{name}-crates-%{crates_ver}.tar.xz
+# Source1-md5:	f0f984d1ce6075538aaa10025a1b9181
+Source2:	%{name}.pamd
+URL:		https://git.sr.ht/~kennylevinsen/greetd
+BuildRequires:	cargo
+BuildRequires:	pam-devel
+BuildRequires:	pkgconfig
+BuildRequires:	rpmbuild(macros) >= 2.004
+BuildRequires:	rust
+BuildRequires:	scdoc
+BuildRequires:	tar >= 1:1.22
+BuildRequires:	xz
+Requires(postun):	/usr/sbin/userdel
+Requires(pre):	/bin/id
+Requires(pre):	/usr/sbin/useradd
+Requires:	/bin/sh
+Requires:	greetd(greeter)
+Provides:	user(greetd-greeter)
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+greetd is a minimal and flexible login manager daemon that makes no
+assumptions about what you want to launch.
+
+%package greeter-agreety
+Summary:	Simple, text-based greeter for greetd
+Requires:	%{name} = %{version}-%{release}
+Provides:	greetd(greeter)
+
+%description greeter-agreety
+Simple, text-based greeter for greetd.
+
+%prep
+%setup -q -a1
+
+%{__mv} %{name}-%{crates_ver}/* .
+sed -i -e 's/@@VERSION@@/%{version}/' Cargo.lock
+
+export CARGO_HOME="$(pwd)/.cargo"
+
+mkdir -p "$CARGO_HOME"
+cat >.cargo/config <<EOF
+[source.crates-io]
+registry = 'https://github.com/rust-lang/crates.io-index'
+replace-with = 'vendored-sources'
+
+[source.vendored-sources]
+directory = '$PWD/vendor'
+EOF
+
+%build
+export CARGO_HOME="$(pwd)/.cargo"
+%cargo_build --frozen
+
+%{__make} -C man
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+install -d $RPM_BUILD_ROOT{/etc/{greetd,pam.d},%{_bindir},%{systemdunitdir}}
+
+cp -p target/release/{greetd,agreety} $RPM_BUILD_ROOT%{_bindir}
+sed -e 's/^\([#[:space:]]*\)\?user[[:space:]]*=.*/user = greetd-greeter/' config.toml > $RPM_BUILD_ROOT/etc/greetd/config.toml
+cp -p greetd.service $RPM_BUILD_ROOT%{systemdunitdir}
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/greetd
+
+%{__make} -C man install \
+	DESTDIR=$RPM_BUILD_ROOT \
+	MANDIR=%{_mandir}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%pre
+%useradd -u 343 -r -d /usr/share/empty -s /bin/sh -c "greetd greeter user" -g nobody -G video greetd-greeter
+
+%post
+%systemd_post %{name}.service
+
+%preun
+%systemd_preun %{name}.service
+
+%postun
+if [ "$1" = "0" ]; then
+	%userremove greetd-greeter
+fi
+%systemd_reload
+
+%files
+%defattr(644,root,root,755)
+%doc README.md
+%dir /etc/greetd
+%config(noreplace) %verify(not md5 mtime size) /etc/greetd/config.toml
+%config(noreplace) %verify(not md5 mtime size) /etc/pam.d/greetd
+%attr(755,root,root) %{_bindir}/%{name}
+%{systemdunitdir}/%{name}.service
+%{_mandir}/man1/greetd.1*
+%{_mandir}/man5/greetd.5*
+%{_mandir}/man7/greetd-ipc.7*
+
+%files greeter-agreety
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/agreety
+%{_mandir}/man1/agreety.1*
diff --git a/create-crates.sh b/create-crates.sh
new file mode 100755
index 0000000..297913a
--- /dev/null
+++ b/create-crates.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+for cmd in bsdtar rpm-specdump cargo perl; do
+  if ! command -v $cmd > /dev/null 2> /dev/null; then
+    not_installed="$not_installed$cmd "
+  fi
+done
+
+if [ -n "$not_installed" ]; then
+  echo "ERROR: required commands not found: $not_installed" >&2
+  exit 1
+fi
+
+pkg_dir=$(readlink -f $(dirname "$0"))
+pkg_name=$(basename "$pkg_dir")
+
+if [ ! -f "$pkg_dir/$pkg_name.spec" ]; then
+  echo "ERROR: unable to determine package name" >&2
+  exit 1
+fi
+
+spec_dump=$(rpm-specdump "$pkg_dir/$pkg_name.spec")
+pkg_version=$(echo "$spec_dump" | grep PACKAGE_VERSION | cut -f3 -d' ')
+pkg_src=$(basename $(echo "$spec_dump" | grep SOURCEURL0 | cut -f3- -d' '))
+crates_file="$pkg_name-crates-$pkg_version.tar.xz"
+cargo_package=${force_cargo_package:-$pkg_name}
+
+if [ -e "$pkg_dir/$crates_file" ]; then
+  echo "ERROR: crates file $crates_file already exists" >&2
+  exit 1
+fi
+
+if [ ! -f "$pkg_dir/$pkg_src" ]; then
+  echo "ERROR: source file $pkg_src not found" >&2
+  exit 1
+fi
+
+tmpdir=$(mktemp -d)
+
+rm_tmpdir() {
+  if [ -n "$tmpdir" -a -d "$tmpdir" ]; then
+    rm -rf "$tmpdir"
+  fi
+}
+
+trap rm_tmpdir EXIT INT HUP
+
+cd "$tmpdir"
+bsdtar xf "$pkg_dir/$pkg_src"
+src_dir=$(ls)
+if [ $(echo "$src_dir" | wc -l) -ne 1 ]; then
+  echo "ERROR: unexpected source structure:\n$src_dir" >&2
+  exit 1
+fi
+
+cd "$src_dir"
+cargo vendor
+if [ $? -ne 0 ]; then
+  echo "ERROR: cargo vendor failed" >&2
+  exit 1
+fi
+
+# replace cargo package version with @@VERSION@@
+perl -pi -e 'BEGIN { undef $/;} s/(\[\[package\]\]\nname\s*=\s*"'"$cargo_package"'"\nversion\s*=\s*")[^"]+/$1\@\@VERSION\@\@/m' Cargo.lock
+
+cd ..
+tar cJf "$pkg_dir/$crates_file" "$src_dir"/{Cargo.lock,vendor}
+
+# vim: expandtab shiftwidth=2 tabstop=2
diff --git a/greetd.pamd b/greetd.pamd
new file mode 100644
index 0000000..9fc1c6b
--- /dev/null
+++ b/greetd.pamd
@@ -0,0 +1,16 @@
+#%PAM-1.0
+auth		include		system-auth
+auth		optional	pam_gnome_keyring.so
+
+account		required	pam_shells.so
+account		required	pam_nologin.so
+account		required	pam_access.so
+account		include		system-auth
+
+password	include		system-auth
+
+session		optional	pam_keyinit.so force revoke
+session		optional	pam_console.so
+session		optional	pam_gnome_keyring.so auto_start
+-session	optional	pam_ck_connector.so
+session		include		system-auth
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/greetd.git/commitdiff/5f727173fde3b40970174e5456e663bbda4d0d11



More information about the pld-cvs-commit mailing list