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