diff options
author | bapt <bapt@FreeBSD.org> | 2015-07-02 04:27:19 +0800 |
---|---|---|
committer | bapt <bapt@FreeBSD.org> | 2015-07-02 04:27:19 +0800 |
commit | edf32ad0731b05019919d9b866b5dab76016f3c8 (patch) | |
tree | 946ce97f197f9dd87f4b8fd17f9702822010b6c5 /Mk | |
parent | ace39141fb1e79f169c1c1f67c3b1b96e084e7ff (diff) | |
download | freebsd-ports-gnome-edf32ad0731b05019919d9b866b5dab76016f3c8.tar.gz freebsd-ports-gnome-edf32ad0731b05019919d9b866b5dab76016f3c8.tar.zst freebsd-ports-gnome-edf32ad0731b05019919d9b866b5dab76016f3c8.zip |
Move all-depends-list to a regular script
The benefice beside being more readable is to allow support for dependency line
without ${PORTSDIR}
This is also necessary to be able to easily hack on it for FLAVORS/SUBPACKAGE
support
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/Scripts/all-depends-list.sh | 39 | ||||
-rw-r--r-- | Mk/bsd.port.mk | 35 |
2 files changed, 45 insertions, 29 deletions
diff --git a/Mk/Scripts/all-depends-list.sh b/Mk/Scripts/all-depends-list.sh new file mode 100644 index 000000000000..982878dff556 --- /dev/null +++ b/Mk/Scripts/all-depends-list.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# MAINTAINER: portmgr@FreeBSD.org +# $FreeBSD$ + +set -e + +. ${dp_SCRIPTSDIR}/functions.sh + +validate_env dp_ALLDEPENDS dp_PORTSDIR dp_PKGNAME dp_MAKE + +set -u + +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 ]; then + echo "${dp_PKGNAME}: \"${d}\" non-existent -- dependency list incomplete" >&2 + continue + fi + echo ${d} + check_dep $(${dp_MAKE} -C ${d} -V_UNIFIED_DEPENDS) + done +} + +checked= +check_dep ${dp_ALLDEPENDS} diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index c95af6ab0022..d308af557b6d 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -4368,35 +4368,12 @@ all-depends-list: @${ALL-DEPENDS-LIST} ALL-DEPENDS-LIST= \ - L="${_DEPEND_DIRS}"; \ - checked=""; \ - while [ -n "$$L" ]; do \ - l=""; \ - for d in $$L; do \ - case $$checked in \ - $$d\ *|*\ $$d\ *|*\ $$d) \ - continue;; \ - esac; \ - checked="$$checked $$d"; \ - if [ ! -d $$d ]; then \ - ${ECHO_MSG} "${PKGNAME}: \"$$d\" non-existent -- dependency list incomplete" >&2; \ - continue; \ - fi; \ - ${ECHO_CMD} $$d; \ - if ! children=$$(cd $$d && ${MAKE} -V _DEPEND_DIRS); then\ - ${ECHO_MSG} "${PKGNAME}: \"$$d\" erroneous -- dependency list incomplete" >&2; \ - continue; \ - fi; \ - for child in $$children; do \ - case "$$checked $$l" in \ - $$child\ *|*\ $$child\ *|*\ $$child) \ - continue;; \ - esac; \ - l="$$l $$child"; \ - done; \ - done; \ - L=$$l; \ - done + @${SETENV} dp_ALLDEPENDS="${_UNIFIED_DEPENDS}" \ + dp_PORTSDIR="${PORTSDIR}" \ + dp_MAKE="${MAKE}" \ + dp_PKGNAME="${PKGNAME}" \ + dp_SCRIPTSDIR="${SCRIPTSDIR}" \ + ${SH} ${SCRIPTSDIR}/all-depends-list.sh CLEAN-DEPENDS-FULL= \ L="${_DEPEND_DIRS}"; \ |