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
 
 |