1 #!/usr/bin/bash
2
3 NOBANNER=1
4 batch_flag=""
5 lint_flag=""
6 if [ "${BATCH}" = 1 ]; then
7 echo "Enabling batch mode."
8 batch_flag="-b"
9 fi
10 . ../lib/functions.sh
11
12 [ "${1}" == "licenses" ] && AUDIT_LICENSE=1
13
14 # targets maps any valid package name to its build script.
15 declare -A targets
16 # fulltargets maps full package names to their build script.
17 declare -A fulltargets
18 declare -A licenses
19 TCNT=0
20 for build in */build*.sh
21 do
22 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;}}')
23 do
24 if [ -n "`echo ${PKG} | grep '.='`" ] ; then
25 [ -z "${AUDIT_LICENSE}" ] && continue
26 MOG=`echo ${PKG} | sed -e 's/^.*=//'`
27 PKG=`echo ${PKG} | sed -e 's/=.*$//'`
28 LOCALMOG=`echo ${build} | sed -e 's:/.*$:/local.mog:'`
29 [ -f $MOG ] || MOG=""
30 [ -f $LOCALMOG ] || LOCALMOG=""
31 LICENSE=`nawk -F "[ =]" '/"/{gsub("\"", "")} /^license/ {print $3;}' $MOG $LOCALMOG /dev/null | xargs`
32 licenses+=([$PKG]=$LICENSE)
33 TCNT=$(($TCNT + 1))
34 print -f "."
35 else
36 targets+=([$PKG]=$build)
37 fulltargets+=([$PKG]=$build)
38 #
39 # Repeatedly strip off leading components to generate all valid
40 # names for this package.
41 #
42 while [[ $PKG =~ '/' ]]; do
43 PKG=${PKG#*/}
44 targets+=([$PKG]=$build)
45 done
46 fi
47 done
48 done
49 [ -n "${AUDIT_LICENSE}" ] && echo
50
51 for manifest in */*.p5m
52 do
53 for PKG in $(awk '/^set name=pkg.fmri/ {print $3;}' $manifest | sed -e 's/value=//' -e 's/.*\/\/[^\/]*\///g' -e 's/@.*//')
54 do
55 targets+=([$PKG]=$manifest)
56 done
57 done
58
59 usage() {
60 echo $0
61 echo " list [grep pattern]"
62 echo " licenses"
63 echo " build <pkg> | all"
64 exit
65 }
66
67 bail() {
68 echo $*
69 exit
70 }
71
72 list() {
73 PAT=${1-.}
74 for target in "${!fulltargets[@]}"
75 do
|
1 #!/usr/bin/bash
2
3 NOBANNER=1
4 batch_flag=""
5 lint_flag=""
6 if [ "${BATCH}" = 1 ]; then
7 echo "Enabling batch mode."
8 batch_flag="-b"
9 fi
10 . ../lib/functions.sh
11
12 [ "${1}" == "licenses" ] && AUDIT_LICENSE=1
13
14 # targets maps any valid package name to its build script.
15 declare -A targets
16 # fulltargets maps full package names to their build script.
17 declare -A fulltargets
18
19 add_target() {
20 local pkg=$1
21 local build=$2
22 [[ -n ${fulltargets[$pkg]} ]] && \
23 logerr "Target $pkg specified by ${fulltargets[$pkg]} and $build."
24 fulltargets+=([$pkg]=$build)
25
26 #
27 # Repeatedly strip off leading components to generate all valid
28 # names for this package. If more than one package has the same
29 # abbreviated name, the first one wins.
30 #
31 [[ -n ${targets[$pkg]} ]] || targets+=([$pkg]=$build)
32 while [[ $pkg =~ '/' ]]; do
33 pkg=${pkg#*/}
34 [[ -n ${targets[$pkg]} ]] || targets+=([$pkg]=$build)
35 done
36 }
37
38 declare -A licenses
39 TCNT=0
40 for build in */build*.sh
41 do
42 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;}}')
43 do
44 if [ -n "`echo ${PKG} | grep '.='`" ] ; then
45 [ -z "${AUDIT_LICENSE}" ] && continue
46 MOG=`echo ${PKG} | sed -e 's/^.*=//'`
47 PKG=`echo ${PKG} | sed -e 's/=.*$//'`
48 LOCALMOG=`echo ${build} | sed -e 's:/.*$:/local.mog:'`
49 [ -f $MOG ] || MOG=""
50 [ -f $LOCALMOG ] || LOCALMOG=""
51 LICENSE=`nawk -F "[ =]" '/"/{gsub("\"", "")} /^license/ {print $3;}' $MOG $LOCALMOG /dev/null | xargs`
52 licenses+=([$PKG]=$LICENSE)
53 TCNT=$(($TCNT + 1))
54 print -f "."
55 else
56 add_target $PKG $build
57 fi
58 done
59 done
60 [ -n "${AUDIT_LICENSE}" ] && echo
61
62 for manifest in */*.p5m
63 do
64 for PKG in $(awk '/^set name=pkg.fmri/ {print $3;}' $manifest | sed -e 's/value=//' -e 's/.*\/\/[^\/]*\///g' -e 's/@.*//')
65 do
66 add_target $PKG $manifest
67 done
68 done
69
70 usage() {
71 echo $0
72 echo " list [grep pattern]"
73 echo " licenses"
74 echo " build <pkg> | all"
75 exit
76 }
77
78 bail() {
79 echo $*
80 exit
81 }
82
83 list() {
84 PAT=${1-.}
85 for target in "${!fulltargets[@]}"
86 do
|