commit:     56ef9db115f32af950b7306c47380c3169ddacb4
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 13 21:28:50 2025 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sun Dec 14 01:44:52 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56ef9db1

sys-apps/shadow: move login.defs manipulation to src_configure

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

 sys-apps/shadow/shadow-4.19.0_rc1.ebuild | 121 ++++++++++++++++---------------
 1 file changed, 61 insertions(+), 60 deletions(-)

diff --git a/sys-apps/shadow/shadow-4.19.0_rc1.ebuild 
b/sys-apps/shadow/shadow-4.19.0_rc1.ebuild
index a01e6c6e658b..1063118472e3 100644
--- a/sys-apps/shadow/shadow-4.19.0_rc1.ebuild
+++ b/sys-apps/shadow/shadow-4.19.0_rc1.ebuild
@@ -68,6 +68,22 @@ src_prepare() {
        elibtoolize
 }
 
+set_login_opt() {
+       local comment="" opt=${1} val=${2}
+       if [[ -z ${val} ]]; then
+               comment="#"
+               sed -i \
+                       -e "/^${opt}\>/s:^:#:" \
+                       etc/login.defs || die
+       else
+               sed -i -r \
+                       -e "/^#?${opt}\>/s:.*:${opt} ${val}:" \
+                       etc/login.defs || die
+       fi
+       local res=$(grep "^${comment}${opt}\>" etc/login.defs)
+       einfo "${res:-Unable to find ${opt} in etc/login.defs}"
+}
+
 src_configure() {
        local myeconfargs=(
                # Negate new upstream default of disabling for now
@@ -95,22 +111,47 @@ src_configure() {
        )
 
        econf "${myeconfargs[@]}"
-}
 
-set_login_opt() {
-       local comment="" opt=${1} val=${2}
-       if [[ -z ${val} ]]; then
-               comment="#"
-               sed -i \
-                       -e "/^${opt}\>/s:^:#:" \
-                       "${ED}"/etc/login.defs || die
+       set_login_opt CREATE_HOME yes
+       if use pam; then
+               # Comment out login.defs options that pam hates
+               local opts=(
+                       CHFN_AUTH
+                       CONSOLE
+                       ENV_HZ
+                       ENVIRON_FILE
+                       FAILLOG_ENAB
+                       FTMP_FILE
+                       LASTLOG_ENAB
+                       MAIL_CHECK_ENAB
+                       MOTD_FILE
+                       NOLOGINS_FILE
+                       OBSCURE_CHECKS_ENAB
+                       PASS_ALWAYS_WARN
+                       PASS_CHANGE_TRIES
+                       PASS_MIN_LEN
+                       PORTTIME_CHECKS_ENAB
+                       QUOTAS_ENAB
+                       SU_WHEEL_ONLY
+               )
+               local opt sed_args=()
+               for opt in "${opts[@]}"; do
+                       set_login_opt ${opt}
+                       sed_args+=( -e "/^#${opt}\>/b pamnote" )
+               done
+               sed_args+=(
+                       -e 'b exit'
+                       -e ': pamnote; i# NOTE: This setting should be 
configured via /etc/pam.d/ and not in this file.'
+                       -e ': exit'
+               )
+               sed -i "${sed_args[@]}" etc/login.defs || die
        else
-               sed -i -r \
-                       -e "/^#?${opt}\>/s:.*:${opt} ${val}:" \
-                       "${ED}"/etc/login.defs
+               set_login_opt MAIL_CHECK_ENAB no
+               set_login_opt SU_WHEEL_ONLY yes
+               set_login_opt LOGIN_RETRIES 3
+               set_login_opt ENCRYPT_METHOD YESCRYPT
+               set_login_opt CONSOLE
        fi
-       local res=$(grep "^${comment}${opt}\>" "${ED}"/etc/login.defs)
-       einfo "${res:-Unable to find ${opt} in /etc/login.defs}"
 }
 
 src_install() {
@@ -125,16 +166,17 @@ src_install() {
        find "${ED}" -name '*.la' -type f -delete || die
 
        insinto /etc
-       if ! use pam ; then
-               insopts -m0600
-               doins etc/login.access etc/limits
-       fi
+       doins etc/login.defs
 
        # needed for 'useradd -D'
-       insinto /etc/default
        insopts -m0600
+       insinto /etc/default
        doins "${FILESDIR}"/default/useradd
 
+       if ! use pam ; then
+               doins etc/login.access etc/limits
+       fi
+
        if use split-usr ; then
                # move passwd to / to help recover broke systems #64441
                # We cannot simply remove this or else net-misc/scponly
@@ -145,18 +187,7 @@ src_install() {
                dosym ../../bin/passwd /usr/bin/passwd
        fi
 
-       insinto /etc
-       insopts -m0644
-       newins etc/login.defs login.defs
-
-       set_login_opt CREATE_HOME yes
-       if ! use pam ; then
-               set_login_opt MAIL_CHECK_ENAB no
-               set_login_opt SU_WHEEL_ONLY yes
-               set_login_opt LOGIN_RETRIES 3
-               set_login_opt ENCRYPT_METHOD YESCRYPT
-               set_login_opt CONSOLE
-       else
+       if use pam; then
                dopamd "${FILESDIR}"/pam.d-include/shadow
 
                for x in chsh chfn ; do
@@ -169,36 +200,6 @@ src_install() {
 
                newpamd "${FILESDIR}"/pam.d-include/shadow-r1 groupmems
 
-               # Comment out login.defs options that pam hates
-               local opt sed_args=()
-               for opt in \
-                       CHFN_AUTH \
-                       CONSOLE \
-                       ENV_HZ \
-                       ENVIRON_FILE \
-                       FAILLOG_ENAB \
-                       FTMP_FILE \
-                       LASTLOG_ENAB \
-                       MAIL_CHECK_ENAB \
-                       MOTD_FILE \
-                       NOLOGINS_FILE \
-                       OBSCURE_CHECKS_ENAB \
-                       PASS_ALWAYS_WARN \
-                       PASS_CHANGE_TRIES \
-                       PASS_MIN_LEN \
-                       PORTTIME_CHECKS_ENAB \
-                       QUOTAS_ENAB \
-                       SU_WHEEL_ONLY
-               do
-                       set_login_opt ${opt}
-                       sed_args+=( -e "/^#${opt}\>/b pamnote" )
-               done
-               sed -i "${sed_args[@]}" \
-                       -e 'b exit' \
-                       -e ': pamnote; i# NOTE: This setting should be 
configured via /etc/pam.d/ and not in this file.' \
-                       -e ': exit' \
-                       "${ED}"/etc/login.defs || die
-
                # Remove manpages that pam will install for us
                # and/or don't apply when using pam
                find "${ED}"/usr/share/man -type f \

Reply via email to