svn commit: r399712 - in head/Mk: . Scripts

Bryan Drewery bdrewery at FreeBSD.org
Mon Oct 19 19:23:55 UTC 2015


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.
 


More information about the svn-ports-all mailing list