eclass/acct-user: Sync with Gentoo

It's from Gentoo commit e6f14e5d76fff757860691c7aa2f94172018711a.
This commit is contained in:
Flatcar Buildbot 2023-07-03 07:15:19 +00:00 committed by Krzesimir Nowak
parent 344b3c68b5
commit f02722d477

View File

@ -362,7 +362,7 @@ acct-user_pkg_preinst() {
fi
elog "Adding user ${ACCT_USER_NAME}"
useradd "${opts[@]}" "${ACCT_USER_NAME}" || die
useradd "${opts[@]}" "${ACCT_USER_NAME}" || die "useradd failed with status $?"
_ACCT_USER_ADDED=1
fi
@ -432,12 +432,30 @@ acct-user_pkg_postinst() {
fi
elog "Updating user ${ACCT_USER_NAME}"
if ! usermod "${opts[@]}" "${ACCT_USER_NAME}" 2>"${T}/usermod-error.log"; then
# usermod outputs a warning if unlocking the account would result in an
# empty password. Hide stderr in a text file and display it if usermod
# fails.
# usermod outputs a warning if unlocking the account would result in an
# empty password. Hide stderr in a text file and display it if usermod fails.
usermod "${opts[@]}" "${ACCT_USER_NAME}" 2>"${T}/usermod-error.log"
local status=$?
if [[ ${status} -ne 0 ]]; then
cat "${T}/usermod-error.log" >&2
die "usermod failed"
if [[ ${status} -eq 8 ]]; then
# usermod refused to update the home directory
# for a uid with active processes.
eerror "Failed to update user ${ACCT_USER_NAME}"
eerror "This user currently has one or more running processes."
eerror "Please update this user manually with the following command:"
# Surround opts with quotes.
# With bash-5 (EAPI 8), we can use "${opts[@]@Q}" instead.
local q="'"
local optsq=( "${opts[@]/#/${q}}" )
optsq=( "${optsq[@]/%/${q}}" )
eerror " usermod ${optsq[*]} ${ACCT_USER_NAME}"
else
eerror "$(<"${T}/usermod-error.log")"
die "usermod failed with status ${status}"
fi
fi
}
@ -484,7 +502,7 @@ acct-user_pkg_prerm() {
fi
elog "Locking user ${ACCT_USER_NAME}"
usermod "${opts[@]}" "${ACCT_USER_NAME}" || die
usermod "${opts[@]}" "${ACCT_USER_NAME}" || die "usermod failed with status $?"
}
fi