Print this page
Factor out add_target and make sure the *.p5m files get read.
Reviewed & tested by: Dan McDonald <danmcd@omniti.com>

*** 13,22 **** --- 13,42 ---- # targets maps any valid package name to its build script. declare -A targets # fulltargets maps full package names to their build script. declare -A fulltargets + + add_target() { + local pkg=$1 + local build=$2 + [[ -n ${fulltargets[$pkg]} ]] && \ + logerr "Target $pkg specified by ${fulltargets[$pkg]} and $build." + fulltargets+=([$pkg]=$build) + + # + # Repeatedly strip off leading components to generate all valid + # names for this package. If more than one package has the same + # abbreviated name, the first one wins. + # + [[ -n ${targets[$pkg]} ]] || targets+=([$pkg]=$build) + while [[ $pkg =~ '/' ]]; do + pkg=${pkg#*/} + [[ -n ${targets[$pkg]} ]] || targets+=([$pkg]=$build) + done + } + declare -A licenses TCNT=0 for build in */build*.sh do for PKG in $(grep -v '##IGNORE##' $build | sed -e 's/^ +//' -e 's/ +#.+//' -e 's/=/ /g' -e 's/^.+make_package/make_package/g' | awk '{if($1=="PKG"){PKG=$2; print $2;} if($1=="make_package"){print PKG"="$2;}}')
*** 31,60 **** LICENSE=`nawk -F "[ =]" '/"/{gsub("\"", "")} /^license/ {print $3;}' $MOG $LOCALMOG /dev/null | xargs` licenses+=([$PKG]=$LICENSE) TCNT=$(($TCNT + 1)) print -f "." else ! targets+=([$PKG]=$build) ! fulltargets+=([$PKG]=$build) ! # ! # Repeatedly strip off leading components to generate all valid ! # names for this package. ! # ! while [[ $PKG =~ '/' ]]; do ! PKG=${PKG#*/} ! targets+=([$PKG]=$build) ! done fi done done [ -n "${AUDIT_LICENSE}" ] && echo for manifest in */*.p5m do for PKG in $(awk '/^set name=pkg.fmri/ {print $3;}' $manifest | sed -e 's/value=//' -e 's/.*\/\/[^\/]*\///g' -e 's/@.*//') do ! targets+=([$PKG]=$manifest) done done usage() { echo $0 --- 51,71 ---- LICENSE=`nawk -F "[ =]" '/"/{gsub("\"", "")} /^license/ {print $3;}' $MOG $LOCALMOG /dev/null | xargs` licenses+=([$PKG]=$LICENSE) TCNT=$(($TCNT + 1)) print -f "." else ! add_target $PKG $build fi done done [ -n "${AUDIT_LICENSE}" ] && echo for manifest in */*.p5m do for PKG in $(awk '/^set name=pkg.fmri/ {print $3;}' $manifest | sed -e 's/value=//' -e 's/.*\/\/[^\/]*\///g' -e 's/@.*//') do ! add_target $PKG $manifest done done usage() { echo $0