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