commit:     eeea28a17aadcbd189e710a4433f94b4f903fd32
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 17 18:33:13 2022 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Wed Oct 19 16:47:29 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eeea28a1

acct-group.eclass: inline groupadd

Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 eclass/acct-group.eclass | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/eclass/acct-group.eclass b/eclass/acct-group.eclass
index 3d02e4f713b4..85f0919509e1 100644
--- a/eclass/acct-group.eclass
+++ b/eclass/acct-group.eclass
@@ -40,7 +40,7 @@ case ${EAPI:-0} in
        *) die "EAPI=${EAPI:-0} not supported";;
 esac
 
-inherit user
+inherit user-info
 
 [[ ${CATEGORY} == acct-group ]] ||
        die "Ebuild error: this eclass can be used only in acct-group category!"
@@ -156,8 +156,30 @@ acct-group_src_install() {
 acct-group_pkg_preinst() {
        debug-print-function ${FUNCNAME} "${@}"
 
-       enewgroup ${ACCT_GROUP_ENFORCE_ID:+-F} "${ACCT_GROUP_NAME}" \
-               "${_ACCT_GROUP_ID}"
+       if [[ ${EUID} -ne 0 ]]; then
+               einfo "Insufficient privileges to execute ${FUNCNAME[0]}"
+               return
+       fi
+
+       if egetent group "${ACCT_GROUP_NAME}" >/dev/null; then
+               elog "Group ${ACCT_GROUP_NAME} already exists"
+               return
+       fi
+
+       local opts=( --system )
+
+       if [[ ${_ACCT_GROUP_ID} -ne -1 ]] &&
+               ! egetent group "${_ACCT_GROUP_ID}" >/dev/null
+       then
+               opts+=( --gid "${_ACCT_GROUP_ID}" )
+       fi
+
+       if [[ -n ${ROOT} ]]; then
+               opts+=( --prefix "${ROOT}" )
+       fi
+
+       elog "Adding group ${ACCT_GROUP_NAME}"
+       groupadd "${opts[@]}" "${ACCT_GROUP_NAME}" || die
 }
 
 fi

Reply via email to