commit d97de60b2a77534f2ce31bb40d9f048e4e2bde82 Author: Toshaan Bharvani Date: Thu May 16 14:01:19 2024 +0200 initial package creation Signed-off-by: Toshaan Bharvani diff --git a/SOURCES/greetd-0.10.0-Unbundle-greetd_ipc.patch b/SOURCES/greetd-0.10.0-Unbundle-greetd_ipc.patch new file mode 100644 index 0000000..c285dfc --- /dev/null +++ b/SOURCES/greetd-0.10.0-Unbundle-greetd_ipc.patch @@ -0,0 +1,63 @@ +From 6e7b5a796afb2342150c7995d57a817eae1bb939 Mon Sep 17 00:00:00 2001 +From: Aleksei Bavshin +Date: Sat, 20 Apr 2024 10:25:41 -0700 +Subject: [PATCH greetd] Unbundle greetd_ipc + +--- + Cargo.toml | 2 +- + agreety/Cargo.toml | 2 +- + fakegreet/Cargo.toml | 2 +- + greetd/Cargo.toml | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Cargo.toml b/Cargo.toml +index 6ce029c..35fa7f0 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -9,4 +9,4 @@ incremental = false + codegen-units = 1 + + [workspace] +-members = ["inish", "greetd_ipc", "greetd", "agreety", "fakegreet"] ++members = ["inish", "greetd", "agreety", "fakegreet"] +diff --git a/agreety/Cargo.toml b/agreety/Cargo.toml +index 31457e1..ce49e4c 100644 +--- a/agreety/Cargo.toml ++++ b/agreety/Cargo.toml +@@ -8,7 +8,7 @@ homepage = "https://kl.wtf/projects/agreety" + repository = "https://git.sr.ht/~kennylevinsen/greetd/" + + [dependencies] +-greetd_ipc = { path = "../greetd_ipc", features = ["sync-codec"]} ++greetd_ipc = { version = "0.10.0", features = ["sync-codec"]} + inish = { path = "../inish"} + rpassword = "5.0" + getopts = "0.2" +diff --git a/fakegreet/Cargo.toml b/fakegreet/Cargo.toml +index a2e7e75..79fd76b 100644 +--- a/fakegreet/Cargo.toml ++++ b/fakegreet/Cargo.toml +@@ -9,6 +9,6 @@ repository = "https://git.sr.ht/~kennylevinsen/greetd/" + + [dependencies] + serde = { version = "1.0", features = ["derive"] } +-greetd_ipc = { path = "../greetd_ipc", features = ["tokio-codec"] } ++greetd_ipc = { version = "0.10.0", features = ["tokio-codec"] } + tokio = { version = "1.5", features = ["process", "macros", "time", "net", "rt"] } + thiserror = "1.0" +diff --git a/greetd/Cargo.toml b/greetd/Cargo.toml +index ec0c6e6..73d32ef 100644 +--- a/greetd/Cargo.toml ++++ b/greetd/Cargo.toml +@@ -15,7 +15,7 @@ nix = { version = "0.27", features = ["ioctl", "signal", "user", "fs", "mman"] } + pam-sys = "0.5.6" + serde = { version = "1.0", features = ["derive"] } + serde_json = "1.0" +-greetd_ipc = { path = "../greetd_ipc", features = ["tokio-codec"] } ++greetd_ipc = { version = "0.10.0", features = ["tokio-codec"] } + inish = { path = "../inish" } + libc = "0.2" + tokio = { version = "1", features = ["net", "sync", "macros", "signal", "rt", "io-util", "time"] } +-- +2.44.0 + diff --git a/SPECS/greetd.spec b/SPECS/greetd.spec new file mode 100644 index 0000000..d0cda27 --- /dev/null +++ b/SPECS/greetd.spec @@ -0,0 +1,251 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.6.3) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 1; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +%global doc_commit 1bbd4fec +%global username greetd +%global selinuxtype targeted +%global forgeurl https://git.sr.ht/~kennylevinsen/greetd + +%bcond_without check +%bcond_without selinux + +Name: greetd +Version: 0.10.0 +Release: %autorelease +Summary: A generic greeter daemon + +# Apache-2.0 +# Apache-2.0 OR BSL-1.0 +# Apache-2.0 OR MIT +# GPL-3.0-only +# MIT +# MIT OR Apache-2.0 +# Unlicense +License: GPL-3.0-only AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND MIT AND Unlicense +URL: https://kl.wtf/projects/greetd +Source0: %{forgeurl}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +# Better offline documentation file +Source1: %{forgeurl}-docs/blob/%{doc_commit}/index.md#/%{name}-docs-%{doc_commit}.md + +# SELinux file labels +Source100: %{name}.fc +# Pam configs for greeter and user sessions +Source101: %{name}.pam +Source102: %{name}-greeter.pam +# User definition +Source103: %{name}.sysusers +# /var/lib/greetd contents and ownership +Source104: %{name}.tmpfiles + +Patch: greetd-0.10.0-Unbundle-greetd_ipc.patch + +Provides: service(graphical-login) = greetd + +BuildRequires: cargo-rpm-macros >= 24 +BuildRequires: make +BuildRequires: scdoc >= 1.10 +BuildRequires: sed +BuildRequires: systemd-rpm-macros +%{?sysusers_requires_compat} + +%if %{with selinux} +# This ensures that the *-selinux package and all it’s dependencies are not pulled +# into containers and other systems that do not use SELinux +Requires: (%{name}-selinux = %{version}-%{release} if selinux-policy-%{selinuxtype}) +%endif + +%description +greetd is a minimal and flexible login manager daemon +that makes no assumptions about what you want to launch. + + +%package fakegreet +Summary: Test utility for greeter development + +%description fakegreet +fakegreet is a test utility that allows launching greeters +without greetd daemon. + + +%if %{with selinux} +# SELinux subpackage +%package selinux +Summary: SELinux policy for %{name} +BuildArch: noarch +Requires: selinux-policy-%{selinuxtype} +Requires(post): selinux-policy-%{selinuxtype} +BuildRequires: selinux-policy-devel +%{?selinux_requires} + +%description selinux +Custom SELinux policy module for %{name} +%endif + +%prep +%autosetup -p1 +%cargo_prep +# patch greetd daemon user +sed -i 's/"greeter"/"%{username}"/' config.toml +# replace README with a better documentation file +cp %{SOURCE1} README.md + + +%generate_buildrequires +%cargo_generate_buildrequires + + +%build +%cargo_build +%{cargo_license_summary} +%{cargo_license} > LICENSE.dependencies +%make_build -C man + +%if %{with selinux} +# SELinux policy +mkdir selinux +pushd selinux +# generate the type enforcement file as it has no other content +echo 'policy_module(%{name},1.0)' >%{name}.te +cp %{SOURCE100} %{name}.fc +make -f %{_datadir}/selinux/devel/Makefile %{name}.pp +bzip2 -9 %{name}.pp +popd +%endif + + +%install +for name in greetd agreety fakegreet; do + install -D -m755 -vp target/release/$name %{buildroot}%{_bindir}/$name +done +%make_install PREFIX=%{_prefix} -C man +install -D -m644 -vp greetd.service %{buildroot}%{_unitdir}/%{name}.service +install -D -m644 -vp config.toml %{buildroot}%{_sysconfdir}/%{name}/config.toml +install -D -m644 -vp %{SOURCE101} %{buildroot}%{_sysconfdir}/pam.d/%{name} +install -D -m644 -vp %{SOURCE102} %{buildroot}%{_sysconfdir}/pam.d/%{name}-greeter +install -D -m644 -vp %{SOURCE103} %{buildroot}%{_sysusersdir}/%{name}.conf +install -D -m644 -vp %{SOURCE104} %{buildroot}%{_tmpfilesdir}/%{name}.conf +install -d -m750 -vp %{buildroot}%{_sharedstatedir}/%{name} + +%if %{with selinux} +install -D -m 0644 -vp selinux/%{name}.pp.bz2 \ + %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 +%endif + + +%if %{with check} +%check +%cargo_test +%endif + + +%pre +%sysusers_create_compat %{SOURCE103} + +%post +%systemd_post %{name}.service +# block unwanted systemd user services for greetd user +XDG_CONFIG_DIR=%{_sharedstatedir}/%{name}/.config +if [ ! -d $XDG_CONFIG_DIR/systemd ]; then + mkdir -p $XDG_CONFIG_DIR/systemd/user + ln -sf /dev/null $XDG_CONFIG_DIR/systemd/user/xdg-desktop-portal.service + chown -R %{username}:%{username} $XDG_CONFIG_DIR +fi +exit 0 + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun %{name}.service + +%if %{with selinux} +%pre selinux +# SELinux contexts are saved so that only affected files can be +# relabeled after the policy module installation +%selinux_relabel_pre -s %{selinuxtype} + +%post selinux +%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 +%selinux_relabel_post -s %{selinuxtype} + +%postun selinux +if [ $1 -eq 0 ]; then + %selinux_modules_uninstall -s %{selinuxtype} %{name} + %selinux_relabel_post -s %{selinuxtype} +fi +%endif + + +%files +%license LICENSE +%license LICENSE.dependencies +%doc README.md +%attr(-,%{username},%{username}) %dir %{_sharedstatedir}/%{name} +%dir %{_sysconfdir}/%{name} +%config(noreplace) %{_sysconfdir}/%{name}/config.toml +%config(noreplace) %{_sysconfdir}/pam.d/%{name} +%config(noreplace) %{_sysconfdir}/pam.d/%{name}-greeter +%{_bindir}/%{name} +%{_bindir}/agreety +%{_mandir}/man1/agreety.1* +%{_mandir}/man1/greetd.1* +%{_mandir}/man5/greetd.5* +%{_mandir}/man7/greetd-ipc.7* +%{_sysusersdir}/%{name}.conf +%{_tmpfilesdir}/%{name}.conf +%{_unitdir}/%{name}.service + +%files fakegreet +%license LICENSE +%license LICENSE.dependencies +%{_bindir}/fakegreet + +%if %{with selinux} +%files selinux +%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.* +%ghost %verify(not md5 size mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name} +%endif + +%changelog +## START: Generated by rpmautospec +* Sat Apr 20 2024 Aleksei Bavshin - 0.10.0-1 +- Update to 0.10.0 (#2276200) + +* Wed Jan 24 2024 Fedora Release Engineering - 0.9.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 20 2024 Fedora Release Engineering - 0.9.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jul 20 2023 Fedora Release Engineering - 0.9.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed May 03 2023 Fabio Valentini - 0.9.0-4 +- Rebuild for tokio crate >= v1.24.2 (RUSTSEC-2023-0005) + +* Sun Feb 05 2023 Fabio Valentini - 0.9.0-3 +- Rebuild for fixed frame pointer compiler flags in Rust RPM macros. + +* Thu Jan 19 2023 Fedora Release Engineering - 0.9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jan 05 2023 Aleksei Bavshin - 0.9.0-1 +- Update to 0.9.0 (#2158656) +- Fix /var/lib/greetd ownership on ostree systems +- Convert to SPDX license format +- Drop patch for 1891682 - fixed in all supported releases. + +* Thu Jul 21 2022 Fedora Release Engineering - 0.8.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue May 03 2022 Aleksei Bavshin - 0.8.0-1 +- Initial import (#2052407) + +## END: Generated by rpmautospec