Index: Mk/Scripts/clean-depends-list.sh =================================================================== --- /dev/null +++ Mk/Scripts/clean-depends-list.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# MAINTAINER: portmgr@FreeBSD.org +# $FreeBSD$ + +. ${dp_SCRIPTSDIR}/functions.sh + +set -e +validate_env dp_PKGNAME dp_MAKE dp_PORTSDIR +set -u + +arg=$1 +shift +if [ "${arg}" != "full" -a "${arg}" != "limited" ]; then + echo "the first argument can only be 'full' or 'limited'" >&2 + exit 1 +fi + +check_dep() { + for _dep ; do + myifs=${IFS} + IFS=: + set -- ${_dep} + IFS=${myifs} + + case "${2}" in + /*) d=${2} ;; + *) d=${dp_PORTSDIR}/${2} ;; + esac + + case " ${checked} " in + *\ ${d}\ *) continue ;; # Already checked + esac + checked="${checked} ${d}" + if [ ! -d ${d} ]; then + echo "${dp_PKGNAME}: \"${d}\" non-existent -- dependency list incomplete" >&2 + continue + fi + echo ${d} + set -- $(${dp_MAKE} -C ${d} -VWRKDIR -V_UNIFIED_DEPENDS) + if [ -d ${1} ]; then + echo ${1} + elif [ "$arg" = "limited" ]; then + break + fi + shift + check_dep $@ + done +} + +state=0 +checked= +check_dep ${dp_ALLDEPENDS} Index: Mk/bsd.port.mk =================================================================== --- Mk/bsd.port.mk +++ Mk/bsd.port.mk @@ -4361,7 +4361,6 @@ # Dependency lists: both build and runtime, recursive. Print out directory names. _UNIFIED_DEPENDS=${PKG_DEPENDS} ${EXTRACT_DEPENDS} ${PATCH_DEPENDS} ${FETCH_DEPENDS} ${BUILD_DEPENDS} ${LIB_DEPENDS} ${RUN_DEPENDS} -_DEPEND_DIRS= ${_UNIFIED_DEPENDS:C,^[^:]*:([^:]*).*$,\1,} _DEPEND_SPECIALS= ${_UNIFIED_DEPENDS:M*\:*\:*:C,^[^:]*:([^:]*):.*$,\1,} all-depends-list: @@ -4375,6 +4374,15 @@ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ ${SH} ${SCRIPTSDIR}/all-depends-list.sh +<<<<<<< HEAD +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 +======= CLEAN-DEPENDS-FULL= \ L="${_DEPEND_DIRS}"; \ checked=""; \ @@ -4453,17 +4461,18 @@ done; \ L=$$l; \ done +>>>>>>> master .if !target(clean-depends) clean-depends: - @for dir in $$(${CLEAN-DEPENDS-FULL}); do \ + @for dir in $$(${CLEAN-DEPENDS-LIST} full); do \ (cd $$dir; ${MAKE} NOCLEANDEPENDS=yes clean); \ done .endif .if !target(limited-clean-depends) limited-clean-depends: - @for dir in $$(${CLEAN-DEPENDS-LIMITED}); do \ + @for dir in $$(${CLEAN-DEPENDS-LIST} limited); do \ (cd $$dir; ${MAKE} NOCLEANDEPENDS=yes clean); \ done .endif