From 55cc15a6ef5188a35c89e4969c1e5098583a7bf0 Mon Sep 17 00:00:00 2001 From: Jana Librova Date: Jan 09 2026 19:11:52 +0000 Subject: [PATCH 1/2] Adds sysuser kojibuilder which is required by koji-builder package Fixes: https://pagure.io/koji/issue/4523 --- diff --git a/builder/koji.conf b/builder/koji.conf new file mode 100644 index 0000000..a5d71cc --- /dev/null +++ b/builder/koji.conf @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u kojibuilder - "Koji builder user" /usr/sbin/nologin diff --git a/koji.spec b/koji.spec index fd24c11..7203d35 100644 --- a/koji.spec +++ b/koji.spec @@ -439,6 +439,8 @@ done %{make_with_dirs} PYTHON=%{__python2} install %endif %endif +mkdir -p %{buildroot}/%{_sysusersdir} +cp builder/koji.conf %{buildroot}/%{_sysusersdir}/koji.conf # python3 build @@ -471,6 +473,8 @@ for fn in $scripts ; do sed -i 's|#!/usr/bin/python2|#!/usr/bin/python3|' $RPM_BUILD_ROOT$fn done %endif +mkdir -p %{buildroot}/%{_sysusersdir} +cp builder/koji.conf %{buildroot}/%{_sysusersdir}/koji.conf %if 0%{?fedora} # handle extra byte compilation @@ -636,6 +640,7 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/kojid %config(noreplace) /etc/kojid/kojid.conf %attr(-,kojibuilder,kojibuilder) /etc/mock/koji +%config(noreplace) %{_sysusersdir}/koji.conf %pre builder /usr/sbin/useradd -r -s /usr/sbin/nologin -G mock -d /builddir -M kojibuilder 2>/dev/null ||: From e2ddb88bc83a5b94d02ef182f016bb2624d246d6 Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Jan 10 2026 11:30:35 +0000 Subject: [PATCH 2/2] Fix issues with sysuser.d approach --- diff --git a/builder/koji.conf b/builder/koji.conf index a5d71cc..e75019e 100644 --- a/builder/koji.conf +++ b/builder/koji.conf @@ -1,2 +1,3 @@ #Type Name ID GECOS Home directory Shell -u kojibuilder - "Koji builder user" /usr/sbin/nologin +u kojibuilder - "Koji builder" /builddir /usr/sbin/nologin +m kojibuilder mock diff --git a/koji.spec b/koji.spec index 7203d35..c533147 100644 --- a/koji.spec +++ b/koji.spec @@ -82,6 +82,13 @@ # If the definition isn't available for python3_pkgversion, define it %{?!python3_pkgversion:%global python3_pkgversion 3} +# RPM v4.20+ support sysusers.d, Fedora 43 requires it (approach copied from mock's spec) +%if 0%{?fedora} < 42 || (0%{?rhel} && 0%{?rhel} <= 10) +%bcond_without sysusers_compat +%else +%bcond_with sysusers_compat +%endif + %define baserelease 1 #build with --define 'testbuild 1' to have a timestamp appended to release %if "x%{?testbuild}" == "x1" @@ -439,9 +446,10 @@ done %{make_with_dirs} PYTHON=%{__python2} install %endif %endif +%if %{without sysusers_compat} mkdir -p %{buildroot}/%{_sysusersdir} cp builder/koji.conf %{buildroot}/%{_sysusersdir}/koji.conf - +%endif # python3 build %if 0%{py3_support} @@ -473,8 +481,10 @@ for fn in $scripts ; do sed -i 's|#!/usr/bin/python2|#!/usr/bin/python3|' $RPM_BUILD_ROOT$fn done %endif +%if %{without sysusers_compat} mkdir -p %{buildroot}/%{_sysusersdir} cp builder/koji.conf %{buildroot}/%{_sysusersdir}/koji.conf +%endif %if 0%{?fedora} # handle extra byte compilation @@ -640,10 +650,13 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/kojid %config(noreplace) /etc/kojid/kojid.conf %attr(-,kojibuilder,kojibuilder) /etc/mock/koji -%config(noreplace) %{_sysusersdir}/koji.conf +%if %{with sysusers_compat} %pre builder /usr/sbin/useradd -r -s /usr/sbin/nologin -G mock -d /builddir -M kojibuilder 2>/dev/null ||: +%else +%config(noreplace) %{_sysusersdir}/koji.conf +%endif %post builder %systemd_post kojid.service