#! /bin/sh PKGFILE=`ctg_devdir`/ctgpkgs.dat LOGFILE=`ctg_devdir`/build.log rm -f $LOGFILE touch $LOGFILE # Process arguments. FLAGS= NAMES= HAVENAME= HELP= while ( true ); do ARG=$1 if [ -z "$ARG" ]; then break; fi if [ $ARG = "-h" ]; then HELP=true break fi if [ -z `echo $ARG | sed 's/-.*//'` ]; then FLAGS="$FLAGS $ARG" else HAVENAME=true NEWNAMES=`ctg_list_pkgs $ARG` NAMES="$NAMES $NEWNAMES" fi shift done # Help if [ -n "$HELP" ]; then echo Usage: ctg_build FLAGS PKGS echo " Allowed flags: -cdbgti" echo " Packages may be ranges pkg1:pkg2" echo " Multiple arguments may be provided" echo " Packages and flags are processed in the order given" exit 2 fi # If no names were given, use the whole list. if [ -z "$HAVENAME" ]; then NAMES=`ctg_list_pkgs` fi # If still no names, this is an error. if [ -z "$NAMES" ]; then echo "ctg_build: No package names found" exit 2 fi # If no flags, this is an error. if [ -z "$FLAGS" ]; then echo "ctg_build: No flags found" exit 3 fi echo echo Flags: $FLAGS echo Packages: $NAMES FPKGS=$NAMES if [ -z "$FPKGS" ]; then echo ctg_build: $PKGFILE is missing or empty exit 1 fi for FLAG in $FLAGS; do echo echo "***** Building with flag $FLAG" echo "%%%%%%%%%%%%%%%%% Building with flags: $FLAG %%%%%%%%%%%%%%%%%%" \ >> $LOGFILE echo STAT=0 for FPKG in $FPKGS; do echo Building $FPKG echo >> $LOGFILE echo "================= ctg $FLAG $FPKG ===============" >> $LOGFILE echo >> $LOGFILE ctg $FLAG $FPKG >> $LOGFILE 2>&1 STAT=$? if [ $STAT -ne 0 ]; then echo "**** Build failed with error $STAT ****" break fi done if [ $STAT -ne 0 ]; then break; fi done echo if [ $STAT -eq 0 ]; then echo Build successful! else echo Build failed in $FPKG echo echo "----------------------------------------------------------------" echo . echo . echo . tail -20 $LOGFILE echo "----------------------------------------------------------------" fi echo echo Output in $LOGFILE exit $STAT