Index: Mk/Scripts/depends-list.sh =================================================================== --- Mk/Scripts/depends-list.sh +++ Mk/Scripts/depends-list.sh @@ -7,9 +7,14 @@ . ${dp_SCRIPTSDIR}/functions.sh recursive=0 +missing=0 requires_wrkdir=0 -while getopts "rw" FLAG; do +while getopts "mrw" FLAG; do case "${FLAG}" in + m) + missing=1 + recursive=1 + ;; r) recursive=1 ;; @@ -38,6 +43,10 @@ set -u +if [ ${missing} -eq 1 ]; then + existing=$(${dp_PKG_INFO} -aoq|sed -e "s=^=${PORTSDIR}/="|xargs echo) +fi + check_dep() { local _dep wrkdir show_dep @@ -62,6 +71,13 @@ continue fi + # If only looking for missign, show if missing + if [ ${missing} -eq 1 ]; then + case " ${existing} " in + *\ ${d}\ *) continue ;; # We have it, nothing to see + esac + fi + # Grab any needed vars from the port. if [ ${requires_wrkdir} -eq 1 -a ${recursive} -eq 1 ]; then @@ -81,7 +97,7 @@ show_dep=0 fi [ ${show_dep} -eq 1 ] && echo ${d} - if [ ${recursive} -eq 1 ]; then + if [ ${recursive} -eq 1 -o ${missing} -eq 1 ]; then check_dep $@ fi done Index: Mk/bsd.port.mk =================================================================== --- Mk/bsd.port.mk +++ Mk/bsd.port.mk @@ -4007,10 +4007,15 @@ PORTSDIR="${PORTSDIR}" \ dp_MAKE="${MAKE}" \ dp_PKGNAME="${PKGNAME}" \ + dp_PKG_INFO="${PKG_INFO}" \ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ ${SH} ${SCRIPTSDIR}/depends-list.sh +direct-depends-list: + @${DIRECT-DEPENDS-LIST} + ALL-DEPENDS-LIST= ${DEPENDS-LIST} -r ${_UNIFIED_DEPENDS:Q} +MISSING-DEPENDS-LIST= ${DEPENDS-LIST} -m ${_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} @@ -4290,13 +4295,7 @@ # Show missing dependencies missing: - @_origins=$$(${PKG_INFO} -aoq); \ - for dir in $$(${ALL-DEPENDS-LIST}); do \ - _origin=$${dir##${PORTSDIR}/}; \ - if ! $$(${ECHO_CMD} $${_origins} | ${GREP} -q $${_origin}); then \ - ${ECHO_CMD} $${_origin}; \ - fi; \ - done + @${MISSING-DEPENDS-LIST} # Show missing dependencies by name missing-packages: