Date: Sat, 4 Jul 2015 08:56:55 +0000 (UTC) From: Baptiste Daroussin <bapt@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r391295 - in head/Mk: . Scripts Message-ID: <201507040856.t648utp1069081@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bapt Date: Sat Jul 4 08:56:54 2015 New Revision: 391295 URL: https://svnweb.freebsd.org/changeset/ports/391295 Log: Rewite CLEAN-DEPENDS* Move inlined shell code into a proper script taking 2 args in arguments: full or limited. The code I more simpler and understandable. The argument allows to factorize the code between CLEAN-DEPENDS-FULL and CLEAN-DEPENDS-LIST While here, make the code accept dependencies without ${PORTSDIR} Added: head/Mk/Scripts/clean-depends-list.sh (contents, props changed) Modified: head/Mk/bsd.port.mk Added: head/Mk/Scripts/clean-depends-list.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/Mk/Scripts/clean-depends-list.sh Sat Jul 4 08:56:54 2015 (r391295) @@ -0,0 +1,50 @@ +#!/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 + set -- $(${dp_MAKE} -C ${d} -VWRKDIR -V_UNIFIED_DEPENDS) + if [ -d ${1} ]; then + echo ${d} + elif [ "$arg" = "limited" ]; then + break + fi + shift + check_dep $@ + done +} + +checked= +check_dep ${dp_ALLDEPENDS} Modified: head/Mk/bsd.port.mk ============================================================================== --- head/Mk/bsd.port.mk Sat Jul 4 08:53:49 2015 (r391294) +++ head/Mk/bsd.port.mk Sat Jul 4 08:56:54 2015 (r391295) @@ -4344,7 +4344,6 @@ ${deptype:tl}-depends: # 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: @@ -4358,95 +4357,24 @@ ALL-DEPENDS-LIST= \ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ ${SH} ${SCRIPTSDIR}/all-depends-list.sh -CLEAN-DEPENDS-FULL= \ - 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; \ - if ! children=$$(cd $$d && ${MAKE} -V WRKDIR -V _DEPEND_DIRS); then \ - ${ECHO_MSG} "${PKGNAME}: \"$$d\" erroneous -- dependency list incomplete" >&2; \ - continue; \ - fi; \ - state=0; \ - for child in $$children; do \ - case $$state in \ - 0) \ - if [ -d $$child ]; then \ - ${ECHO_CMD} $$d; \ - fi; \ - state=1;; \ - 1) \ - case "$$checked $$l" in \ - $$child\ *|*\ $$child\ *|*\ $$child) \ - continue;; \ - esac; \ - l="$$l $$child";; \ - esac; \ - done; \ - done; \ - L=$$l; \ - done - -CLEAN-DEPENDS-LIMITED= \ - 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; \ - if ! children=$$(cd $$d && ${MAKE} -V WRKDIR -V _DEPEND_DIRS); then \ - ${ECHO_MSG} "${PKGNAME}: \"$$d\" erroneous -- dependency list incomplete" >&2; \ - continue; \ - fi; \ - state=0; \ - for child in $$children; do \ - case $$state in \ - 0) \ - if [ ! -d $$child ]; then \ - break; \ - fi; \ - state=1; \ - ${ECHO_CMD} $$d;; \ - 1) \ - case "$$checked $$l" in \ - $$child\ *|*\ $$child\ *|*\ $$child) \ - continue;; \ - esac; \ - l="$$l $$child";; \ - esac; \ - done; \ - done; \ - L=$$l; \ - done +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 .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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201507040856.t648utp1069081>