From owner-freebsd-ports-bugs@FreeBSD.ORG Sun Nov 7 18:50:08 2010 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 06CC81065679 for ; Sun, 7 Nov 2010 18:50:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id B58FC8FC17 for ; Sun, 7 Nov 2010 18:50:07 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id oA7Io7w8064346 for ; Sun, 7 Nov 2010 18:50:07 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id oA7Io7DD064341; Sun, 7 Nov 2010 18:50:07 GMT (envelope-from gnats) Resent-Date: Sun, 7 Nov 2010 18:50:07 GMT Resent-Message-Id: <201011071850.oA7Io7DD064341@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Max Khon Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A09E21065673 for ; Sun, 7 Nov 2010 18:40:12 +0000 (UTC) (envelope-from fjoe@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 74B8A8FC16 for ; Sun, 7 Nov 2010 18:40:12 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id oA7IeCQ7038476 for ; Sun, 7 Nov 2010 18:40:12 GMT (envelope-from fjoe@freefall.freebsd.org) Received: (from fjoe@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id oA7IeCO2038461; Sun, 7 Nov 2010 18:40:12 GMT (envelope-from fjoe) Message-Id: <201011071840.oA7IeCO2038461@freefall.freebsd.org> Date: Sun, 7 Nov 2010 18:40:12 GMT From: Max Khon To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: ports/152024: skip non-existent users in GIDs X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Max Khon List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 18:50:08 -0000 >Number: 152024 >Category: ports >Synopsis: skip non-existent users in GIDs >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Nov 07 18:50:07 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Max Khon >Release: FreeBSD 8.1-PRERELEASE i386 >Organization: FreeBSD.org >Environment: >Description: Use-case: port A creates group "portA" port B creates user "portB" and group "portB", user "portB" should be in group "portA" port C creates user "portC" and grouop "portC", user "portC" should be in group "portA" too It can be implemented using the following: GIDs: portA:*:XX:portB,portC portA: GROUPS= portA portB: USERS= portB GROUPS= portB portA portC: USERS= portC GROUPS= portC portA However, if portC is not installed (and there is not user portC), the installation of portB fails because of missing user portC. Example: freeswitch and asterisk ports (each uses own user/group) and dahdi port (freeswitch and asterisk users should be in "dahdi" group). >How-To-Repeat: >Fix: Index: Mk/bsd.port.mk =================================================================== RCS file: /home/pcvs/ports/Mk/bsd.port.mk,v retrieving revision 1.653 diff -u -p -r1.653 bsd.port.mk --- Mk/bsd.port.mk 29 Oct 2010 12:41:29 -0000 1.653 +++ Mk/bsd.port.mk 7 Nov 2010 18:22:16 -0000 @@ -4164,10 +4164,12 @@ create-users-groups: @IFS=":"; ${GREP} -h ^${_group}: ${GID_FILES} | head -n 1 | while read group foo gid members; do \ gid=$$(($$gid+${GID_OFFSET})); \ IFS=","; for _login in $$members; do \ - list=`${PW} usershow $${_login} -P | ${SED} -ne 's/.*Groups: //p'`; \ - ${ECHO_MSG} "Setting \`$${_login}' groups to \`$$list$${list:+,}${_group}'."; \ - ${PW} usermod $${_login} -G $$list$${list:+,}${_group}; \ - ${ECHO_CMD} "@exec list=\`${PW} usershow $${_login} -P | ${SED} -ne 's/.*Groups: //p'\`; ${PW} usermod $${_login} -G \$${list},${_group}" >> ${TMPPLIST}; \ + if ${PW} usershow $$_login >/dev/null 2>&1; then \ + list=`${PW} usershow $${_login} -P | ${SED} -ne 's/.*Groups: //p'`; \ + ${ECHO_MSG} "Setting \`$${_login}' groups to \`$$list$${list:+,}${_group}'."; \ + ${PW} usermod $${_login} -G $$list$${list:+,}${_group}; \ + ${ECHO_CMD} "@exec list=\`${PW} usershow $${_login} -P | ${SED} -ne 's/.*Groups: //p'\`; ${PW} usermod $${_login} -G \$${list},${_group}" >> ${TMPPLIST}; \ + fi \ done; \ done .endfor >Release-Note: >Audit-Trail: >Unformatted: