| #! /bin/sh |
| |
| ######################################################################## |
| # |
| # /u/sonmi/bin/nssqa - /u/svbld/bin/init/nss/nssqa |
| # |
| # this script is supposed to automatically run QA for NSS on all required |
| # Unix and Windows (NT and 2000) platforms |
| # |
| # parameters |
| # ---------- |
| # nssversion (supported: 30b, 31, tip) |
| # builddate (default - today) |
| # |
| # options |
| # ------- |
| # -y answer all questions with y - use at your own risk...ignores warnings |
| # -s silent (only usefull with -y) |
| # -h, -? - you guessed right - displays this text |
| # -d debug |
| # -f <filename> - write the (error)output to filename |
| # -cron equivalient to -y -s -d -f $RESULTDIR/$HOST.nssqa |
| # |
| # 12/1/00 |
| # took out the (unused) local directory for releasebuild QA on NT |
| # cleaned up 32 - 64 bit issues |
| # took hardcoded machinenames out |
| ######################################################################## |
| |
| O_OPTIONS=ON # accept options (see above for listing) |
| WIN_WAIT_FOREVER=ON # first we wait forever for a TESTDIR to appear, than |
| # we wait forever for the build to finish... |
| |
| TBX_EXIT=50 # in case we are running on a tinderbox build, any |
| # early exit needs to return an error |
| . `dirname $0`/header # utilities, shellfunctions etc, global to NSS QA |
| |
| if [ -z "$O_TBX" -o "$O_TBX" != "ON" ] ; then |
| is_running ${TMP}/nssqa |
| # checks if the file exists, if yes Exits, if not |
| # creates to implement a primitive locking mechanism |
| fi |
| |
| KILL_SELFSERV=OFF # cleanup will also kill the leftover selfserv processes |
| |
| ################################ check_distdir ######################### |
| # local shell function to check if the DIST directory exists, if not there |
| # is no use to continue the test |
| ######################################################################## |
| check_distdir() |
| { |
| set_objdir |
| |
| if [ ! -d "$LOCALDIST_BIN" ] |
| then |
| Debug "Dist $DIST" |
| Warning "$LOCALDIST_BIN (the dist binaries dir) does not exist" |
| return 1 |
| fi |
| |
| if [ ! -d "$LOCALDIST" -a ! -h "$LOCALDIST" ] |
| then |
| Debug "Dist $DIST" |
| Warning "$LOCALDIST (the dist directory) does not exist" |
| return 1 |
| fi |
| |
| Debug "LOCALDIST_BIN $LOCALDIST_BIN" |
| Debug "Dist $DIST" |
| return 0 |
| } |
| |
| ################################ run_all ############################### |
| # local shell function to start the all.sh after asking user and redirect |
| # the output apropriately |
| ######################################################################## |
| run_all() |
| { |
| check_distdir || return 1 |
| #kill_by_name selfserv |
| ask "Testing $OBJDIR continue with all.sh" "y" "n" || Exit |
| |
| Debug "running all.sh in `pwd`" |
| if [ $O_SILENT = ON ] |
| then |
| if [ $O_DEBUG = ON -a $O_FILE = ON ] |
| then |
| all.sh >>$FILENAME 2>>$FILENAME |
| else |
| all.sh >/dev/null 2>/dev/null |
| fi |
| else |
| all.sh |
| fi |
| Debug "Done with all.sh " |
| line |
| } |
| |
| all_sh() |
| { |
| echo |
| } |
| |
| |
| ########################### wait_for_build ############################# |
| # local shell function to wait until the build is finished |
| ######################################################################## |
| wait_for_build() |
| { |
| if [ $O_WIN = "ON" ] |
| then |
| WaitForever ${OSDIR}/SVbuild.InProgress.1 0 |
| #Wait for the build to finish Windows a lot longer |
| OS_TARGET=WINNT;export OS_TARGET;Debug "OS_TARGET set to $OS_TARGET" |
| QA_OS_NAME=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name | \ |
| sed -e "s/WINNT4.0.*/Windows-NT-4.0/" -e "s/WINNT5.0.*/Windows-2000/"` |
| Echo "WINDOWS-OS-LINE: $QA_OS_NAME" |
| else |
| Wait ${OSDIR}/SVbuild.InProgress.1 0 |
| #Wait for the build to finish... Unix a few hours |
| qa_stat_get_sysinfo |
| Echo "UNIX-OS-LINE: $QA_OS" |
| fi |
| find_nt_masterbuild |
| } |
| |
| |
| ########################### map_os ############################# |
| # local shell function: From the operatingsystem figure out the name of |
| # the build ; needed to detemine if the build finished, passed and for |
| # the directory names |
| ######################################################################## |
| map_os32() |
| { |
| case `uname -s` in |
| SunOS) |
| S_REL=`uname -r | sed -e "s/^[^\.]*\.//g"` |
| if [ `uname -p` = "i386" ] ; then |
| MAPPED_OS=Solaris8_x86 |
| elif [ "$S_REL" -lt 8 ] ; then |
| MAPPED_OS=Solaris2.6 |
| else |
| MAPPED_OS=Solaris8_forte6 |
| fi |
| ;; |
| OSF1) |
| MAPPED_OS=OSF1V4.0 |
| ;; |
| Darwin) |
| MAPPED_OS=Darwin6.5 |
| ;; |
| AIX) |
| MAPPED_OS=AIX4.3 |
| ;; |
| Linux) |
| RH_MR=`cat /etc/redhat-release | sed \ |
| -e "s/Red Hat Linux release //" -e "s/ .*//g" \ |
| -e "s/\..*//g"` |
| |
| if [ "$RH_MR" = "6" ] ; then |
| MAPPED_OS=Linux2.2 |
| else |
| MAPPED_OS=Linux2.4 |
| LD_ASSUME_KERNEL="2.2.5" |
| export LD_ASSUME_KERNEL |
| fi |
| ;; |
| HP-UX) |
| MAPPED_OS=HPUX11.00 |
| ;; |
| *) |
| if [ "$os_name" = "Windows" ] |
| then |
| MAPPED_OS=NT4.0 |
| else |
| Exit "Sorry, operating system `uname -s` is not supported yet" |
| fi |
| ;; |
| esac |
| set_osdir |
| Debug "Mapped OS to $MAPPED_OS" |
| } |
| |
| ############################# nssqa_main ############################### |
| # local shell function main controlling function of the nss qa |
| ######################################################################## |
| nssqa_main() |
| { |
| Debug "In function nssqa_main" |
| |
| if [ $O_WIN = "OFF" -a "$O_TBX" = "OFF" -a $O_LOCAL = "OFF" ] ; then |
| if [ ! -h ${NTDIST}/WINNT5.0_DBG.OBJ -o \ |
| ! -h ${UXDIST}/SunOS5.8_OPT.OBJ -o \ |
| ! -h ${UXDIST}/OSF1V5.0_DBG.OBJ ] ; then |
| # determine if all needed symbolic links are present, in case |
| # we build on one platform and QA on another |
| # create the symbolic links |
| #mksymlinks $* || |
| `dirname $0`/mksymlinks $NSSVER $BUILDDATE || |
| Warning "Can't make the neccessary symbolic links" |
| fi |
| fi |
| |
| if [ -d $TESTSCRIPTDIR ] #the directory mozilla/security/nss/tests, |
| then # where all.sh lives |
| cd $TESTSCRIPTDIR |
| else |
| Exit "cant cd to $TESTSCRIPTDIR Exiting" |
| fi |
| |
| Debug "Testing from `pwd`" |
| line |
| Debug "HOST: $HOST, DOMSUF: $DOMSUF" |
| |
| if [ "$O_TBX" = "OFF" ] ; then |
| map_os32 # From the operatingsystem figure out the name of the build |
| Debug Testing build for $MAPPED_OS in $OSDIR |
| wait_for_build |
| fi |
| run_all |
| BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT" |
| run_all |
| |
| # now for the 64 bit build! |
| map_os64 # From the operatingsystem figure out the name of the build |
| if [ -n "$IS_64" ] ; then #Wait for the 64 bit build to finish... |
| Debug "This is a $IS_64 platform" |
| USE_64=1;export USE_64;Debug "Use_64 set to $USE_64" |
| unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT" |
| |
| run_all |
| BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT" |
| run_all |
| elif [ "$O_WIN" = "ON" ] ; then |
| OS_TARGET=WIN95;export OS_TARGET |
| Debug "OS_TARGET set to $OS_TARGET" |
| #Echo "WINDOWS-OS-LINE: $os_name $os_full $OS_TARGET" |
| unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT" |
| #if [ "$TEST_LEVEL" = "0" ] ; then |
| #QA_OS_NAME=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name | \ |
| #sed -e "s/WINNT4.0.*/Windows-NT-4.0/" -e \ |
| #"s/WINNT5.0.*/Windows-2000/"` |
| #Echo "WINDOWS-OS-LINE: $QA_OS_NAME $OS_TARGET" |
| #fi |
| run_all |
| BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT" |
| run_all |
| else |
| Debug "This is a 32 bit platform" |
| fi |
| } |
| |
| TEST_LEVEL=0 |
| |
| while [ $TEST_LEVEL -lt 2 ] ; do |
| export TEST_LEVEL |
| unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT" |
| unset USE_64;export USE_64;Debug "USE_64 $USE_64" |
| bc $TEST_LEVEL |
| Debug "About to start nssqa_main" |
| if [ $O_FILE = ON -a "$O_WIN" != "ON" ] ; then |
| nssqa_main 2>>$FILENAME |
| else |
| nssqa_main |
| fi |
| if [ "$O_TBX" = "ON" ] ; then # do not do backward compatibility |
| TEST_LEVEL=3 # testing on tinderbox |
| else |
| TEST_LEVEL=`expr $TEST_LEVEL + 1 ` |
| fi |
| done |
| |
| if [ "$O_TBX" = "ON" -o "$O_LOCAL" = "ON" ] ; then |
| #FIXME - maybe it should be copied back to the networkdrive later (-ln) |
| if [ -n "${TMPFILES}" ] ; then #caused problems on tinderbox machines |
| Debug "rm -f ${TMPFILES}" |
| rm -f $TMPFILES 2>/dev/null |
| fi |
| Debug "running qa_stat" |
| . `dirname $0`/qa_stat |
| fi |
| |
| |
| qa_stat_get_sysinfo |
| |
| Exit "nssqa completed. Done `uname -n` $QA_OS_STRING" |