From owner-svn-ports-all@freebsd.org Mon Oct 19 19:23:55 2015 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5C675A19973; Mon, 19 Oct 2015 19:23:55 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1BEFED7E; Mon, 19 Oct 2015 19:23:55 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t9JJNsoA009397; Mon, 19 Oct 2015 19:23:54 GMT (envelope-from bdrewery@FreeBSD.org) Received: (from bdrewery@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t9JJNseR009395; Mon, 19 Oct 2015 19:23:54 GMT (envelope-from bdrewery@FreeBSD.org) Message-Id: <201510191923.t9JJNseR009395@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdrewery set sender to bdrewery@FreeBSD.org using -f From: Bryan Drewery Date: Mon, 19 Oct 2015 19:23:54 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r399712 - in head/Mk: . Scripts X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Oct 2015 19:23:55 -0000 Author: bdrewery Date: Mon Oct 19 19:23:53 2015 New Revision: 399712 URL: https://svnweb.freebsd.org/changeset/ports/399712 Log: - Combine clean-depends-list.sh into depends-list.sh - Refactor how depends-list.sh is called from bsd.port.mk for each variant. With hat: portmgr Deleted: head/Mk/Scripts/clean-depends-list.sh Modified: head/Mk/Scripts/depends-list.sh head/Mk/bsd.port.mk Modified: head/Mk/Scripts/depends-list.sh ============================================================================== --- head/Mk/Scripts/depends-list.sh Mon Oct 19 18:44:41 2015 (r399711) +++ head/Mk/Scripts/depends-list.sh Mon Oct 19 19:23:53 2015 (r399712) @@ -7,11 +7,17 @@ set -e . ${dp_SCRIPTSDIR}/functions.sh recursive=0 -while getopts "r" FLAG; do +requires_wrkdir=0 +while getopts "rw" FLAG; do case "${FLAG}" in r) recursive=1 ;; + w) + # Only list dependencies that have a WRKDIR. Used for + # 'make clean-depends'. + requires_wrkdir=1 + ;; *) echo "Unknown flag" >&2 exit 1 @@ -20,8 +26,8 @@ while getopts "r" FLAG; do done shift $((OPTIND-1)) -validate_env dp_ALLDEPENDS dp_PORTSDIR dp_PKGNAME -if [ ${recursive} -eq 1 ]; then +validate_env dp_PORTSDIR dp_PKGNAME +if [ ${recursive} -eq 1 -o ${requires_wrkdir} -eq 1 ]; then validate_env dp_MAKE # Cache command executions to avoid looking them up again in every # sub-make. @@ -31,6 +37,8 @@ fi set -u check_dep() { + local _dep wrkdir show_dep + for _dep ; do myifs=${IFS} IFS=: @@ -46,16 +54,36 @@ check_dep() { *\ ${d}\ *) continue ;; # Already checked esac checked="${checked} ${d}" + # Check if the dependency actually exists or skip otherwise. if [ ! -d ${d} ]; then echo "${dp_PKGNAME}: \"${d}\" non-existent -- dependency list incomplete" >&2 continue fi - echo ${d} + + # Grab any needed vars from the port. + + if [ ${requires_wrkdir} -eq 1 -a ${recursive} -eq 1 ]; then + set -- $(${dp_MAKE} -C ${d} -VWRKDIR -V_UNIFIED_DEPENDS) + wrkdir="$1" + shift + elif [ ${requires_wrkdir} -eq 1 -a ${recursive} -eq 0 ]; then + set -- "$(${dp_MAKE} -C ${d} -VWRKDIR)" + wrkdir="$1" + elif [ ${recursive} -eq 1 ]; then + set -- $(${dp_MAKE} -C ${d} -V_UNIFIED_DEPENDS) + fi + + # If a WRKDIR is required to show the dependency, check for it. + show_dep=1 + if [ ${requires_wrkdir} -eq 1 ] && ! [ -d "${wrkdir}" ]; then + show_dep=0 + fi + [ ${show_dep} -eq 1 ] && echo ${d} if [ ${recursive} -eq 1 ]; then - check_dep $(${dp_MAKE} -C ${d} -V_UNIFIED_DEPENDS) + check_dep $@ fi done } checked= -check_dep ${dp_ALLDEPENDS} +check_dep $@ Modified: head/Mk/bsd.port.mk ============================================================================== --- head/Mk/bsd.port.mk Mon Oct 19 18:44:41 2015 (r399711) +++ head/Mk/bsd.port.mk Mon Oct 19 19:23:53 2015 (r399712) @@ -4377,32 +4377,31 @@ _DEPEND_SPECIALS= ${_UNIFIED_DEPENDS:M*\ all-depends-list: @${ALL-DEPENDS-LIST} -ALL-DEPENDS-LIST= \ - ${SETENV} dp_ALLDEPENDS="${_UNIFIED_DEPENDS}" \ +# This script is shared among several dependency list variables. See file for +# usage. +DEPENDS-LIST= \ + ${SETENV} \ dp_PORTSDIR="${PORTSDIR}" \ dp_MAKE="${MAKE}" \ dp_PKGNAME="${PKGNAME}" \ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ - ${SH} ${SCRIPTSDIR}/depends-list.sh -r + ${SH} ${SCRIPTSDIR}/depends-list.sh -CLEAN-DEPENDS-LIST= \ - ${SETENV} dp_ALLDEPENDS="${_UNIFIED_DEPENDS}" \ - dp_PORTSDIR="${PORTSDIR}" \ - dp_MAKE="${MAKE}" \ - dp_PKGNAME="${PKGNAME}" \ - dp_SCRIPTSDIR="${SCRIPTSDIR}" \ - ${SH} ${SCRIPTSDIR}/clean-depends-list.sh +ALL-DEPENDS-LIST= ${DEPENDS-LIST} -r ${_UNIFIED_DEPENDS:Q} +TEST-DEPENDS-LIST= ${DEPENDS-LIST} ${TEST_DEPENDS:Q} +CLEAN-DEPENDS-LIST= ${DEPENDS-LIST} -wr ${_UNIFIED_DEPENDS:Q} +CLEAN-DEPENDS-LIMITED-LIST= ${DEPENDS-LIST} -w ${_UNIFIED_DEPENDS:Q} .if !target(clean-depends) clean-depends: - @for dir in $$(${CLEAN-DEPENDS-LIST} full); do \ + @for dir in $$(${CLEAN-DEPENDS-LIST}); do \ (cd $$dir; ${MAKE} NOCLEANDEPENDS=yes clean); \ done .endif .if !target(limited-clean-depends) limited-clean-depends: - @for dir in $$(${CLEAN-DEPENDS-LIST} limited); do \ + @for dir in $$(${CLEAN-DEPENDS-LIMITED-LIST}); do \ (cd $$dir; ${MAKE} NOCLEANDEPENDS=yes clean); \ done .endif @@ -4547,14 +4546,6 @@ test-depends-list: @${TEST-DEPENDS-LIST} .endif -TEST-DEPENDS-LIST= \ - ${SETENV} dp_ALLDEPENDS="${TEST_DEPENDS}" \ - dp_PORTSDIR="${PORTSDIR}" \ - dp_MAKE="${MAKE}" \ - dp_PKGNAME="${PKGNAME}" \ - dp_SCRIPTSDIR="${SCRIPTSDIR}" \ - ${SH} ${SCRIPTSDIR}/depends-list.sh - # Package (recursive runtime) dependency list. Print out both directory names # and package names.