Thanks to David Michael for the initial patch and upstream fixes.

Signed-off-by: Michał Górny <mgo...@gentoo.org>
---
 eclass/acct-group.eclass | 16 +++++++++++++++-
 eclass/acct-user.eclass  | 16 +++++++++++++++-
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/eclass/acct-group.eclass b/eclass/acct-group.eclass
index 5550e4a2fb10..dc1562974870 100644
--- a/eclass/acct-group.eclass
+++ b/eclass/acct-group.eclass
@@ -80,7 +80,7 @@ S=${WORKDIR}
 
 
 # << Phase functions >>
-EXPORT_FUNCTIONS pkg_pretend pkg_preinst
+EXPORT_FUNCTIONS pkg_pretend src_install pkg_preinst
 
 # @FUNCTION: acct-group_pkg_pretend
 # @DESCRIPTION:
@@ -116,6 +116,20 @@ acct-group_pkg_pretend() {
        fi
 }
 
+# @FUNCTION: acct-group_src_install
+# @DESCRIPTION:
+# Installs sysusers.d file for the group.
+acct-group_src_install() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       insinto /usr/lib/sysusers.d
+       newins - ${CATEGORY}-${ACCT_GROUP_NAME}.conf < <(
+               printf "g\t%q\t%q\n" \
+                       "${ACCT_GROUP_NAME}" \
+                       "${ACCT_GROUP_ID/#-*/-}"
+       )
+}
+
 # @FUNCTION: acct-group_pkg_preinst
 # @DESCRIPTION:
 # Creates the group if it does not exist yet.
diff --git a/eclass/acct-user.eclass b/eclass/acct-user.eclass
index e82f3c56dbbe..f9772c3cb111 100644
--- a/eclass/acct-user.eclass
+++ b/eclass/acct-user.eclass
@@ -312,7 +312,7 @@ acct-user_pkg_pretend() {
 # @FUNCTION: acct-user_src_install
 # @DESCRIPTION:
 # Installs a keep-file into the user's home directory to ensure it is
-# owned by the package.
+# owned by the package, and sysusers.d file.
 acct-user_src_install() {
        debug-print-function ${FUNCNAME} "${@}"
 
@@ -321,6 +321,20 @@ acct-user_src_install() {
                # created yet
                keepdir "${ACCT_USER_HOME}"
        fi
+
+       insinto /usr/lib/sysusers.d
+       newins - ${CATEGORY}-${ACCT_USER_NAME}.conf < <(
+               printf "u\t%q\t%q\t%q\t%q\t%q\n" \
+                       "${ACCT_USER_NAME}" \
+                       "${ACCT_USER_ID/#-*/-}:${ACCT_USER_GROUPS[0]}" \
+                       "${DESCRIPTION//[:,=]/;}" \
+                       "${ACCT_USER_HOME}" \
+                       "${ACCT_USER_SHELL/#-*/-}"
+               if [[ ${#ACCT_USER_GROUPS[@]} -gt 1 ]]; then
+                       printf "m\t${ACCT_USER_NAME}\t%q\n" \
+                               "${ACCT_USER_GROUPS[@]:1}"
+               fi
+       )
 }
 
 # @FUNCTION: acct-user_pkg_preinst
-- 
2.28.0


Reply via email to