1#! /bin/sh 2 3######################################################################## 4# 5# /u/sonmi/bin/nssqa - /u/svbld/bin/init/nss/nssqa 6# 7# this script is supposed to automatically run QA for NSS on all required 8# Unix and Windows (NT and 2000) platforms 9# 10# parameters 11# ---------- 12# nssversion (supported: 30b, 31, tip) 13# builddate (default - today) 14# 15# options 16# ------- 17# -y answer all questions with y - use at your own risk...ignores warnings 18# -s silent (only usefull with -y) 19# -h, -? - you guessed right - displays this text 20# -d debug 21# -f <filename> - write the (error)output to filename 22# -cron equivalient to -y -s -d -f $RESULTDIR/$HOST.nssqa 23# 24# 12/1/00 25# took out the (unused) local directory for releasebuild QA on NT 26# cleaned up 32 - 64 bit issues 27# took hardcoded machinenames out 28######################################################################## 29 30O_OPTIONS=ON # accept options (see above for listing) 31WIN_WAIT_FOREVER=ON # first we wait forever for a TESTDIR to appear, than 32 # we wait forever for the build to finish... 33 34TBX_EXIT=50 # in case we are running on a tinderbox build, any 35 # early exit needs to return an error 36. `dirname $0`/header # utilities, shellfunctions etc, global to NSS QA 37 38if [ -z "$O_TBX" -o "$O_TBX" != "ON" ] ; then 39 is_running ${TMP}/nssqa 40 # checks if the file exists, if yes Exits, if not 41 # creates to implement a primitive locking mechanism 42fi 43 44KILL_SELFSERV=OFF # cleanup will also kill the leftover selfserv processes 45 46################################ check_distdir ######################### 47# local shell function to check if the DIST directory exists, if not there 48# is no use to continue the test 49######################################################################## 50check_distdir() 51{ 52 set_objdir 53 54 if [ ! -d "$LOCALDIST_BIN" ] 55 then 56 Debug "Dist $DIST" 57 Warning "$LOCALDIST_BIN (the dist binaries dir) does not exist" 58 return 1 59 fi 60 61 if [ ! -d "$LOCALDIST" -a ! -h "$LOCALDIST" ] 62 then 63 Debug "Dist $DIST" 64 Warning "$LOCALDIST (the dist directory) does not exist" 65 return 1 66 fi 67 68 Debug "LOCALDIST_BIN $LOCALDIST_BIN" 69 Debug "Dist $DIST" 70 return 0 71} 72 73################################ run_all ############################### 74# local shell function to start the all.sh after asking user and redirect 75# the output apropriately 76######################################################################## 77run_all() 78{ 79 check_distdir || return 1 80 #kill_by_name selfserv 81 ask "Testing $OBJDIR continue with all.sh" "y" "n" || Exit 82 83 Debug "running all.sh in `pwd`" 84 if [ $O_SILENT = ON ] 85 then 86 if [ $O_DEBUG = ON -a $O_FILE = ON ] 87 then 88 all.sh >>$FILENAME 2>>$FILENAME 89 else 90 all.sh >/dev/null 2>/dev/null 91 fi 92 else 93 all.sh 94 fi 95 Debug "Done with all.sh " 96 line 97} 98 99all_sh() 100{ 101 echo 102} 103 104 105########################### wait_for_build ############################# 106# local shell function to wait until the build is finished 107######################################################################## 108wait_for_build() 109{ 110 if [ $O_WIN = "ON" ] 111 then 112 WaitForever ${OSDIR}/SVbuild.InProgress.1 0 113 #Wait for the build to finish Windows a lot longer 114 OS_TARGET=WINNT;export OS_TARGET;Debug "OS_TARGET set to $OS_TARGET" 115 QA_OS_NAME=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name | \ 116 sed -e "s/WINNT4.0.*/Windows-NT-4.0/" -e "s/WINNT5.0.*/Windows-2000/"` 117 Echo "WINDOWS-OS-LINE: $QA_OS_NAME" 118 else 119 Wait ${OSDIR}/SVbuild.InProgress.1 0 120 #Wait for the build to finish... Unix a few hours 121 qa_stat_get_sysinfo 122 Echo "UNIX-OS-LINE: $QA_OS" 123 fi 124 find_nt_masterbuild 125} 126 127 128########################### map_os ############################# 129# local shell function: From the operatingsystem figure out the name of 130# the build ; needed to detemine if the build finished, passed and for 131# the directory names 132######################################################################## 133map_os32() 134{ 135 case `uname -s` in 136 SunOS) 137 S_REL=`uname -r | sed -e "s/^[^\.]*\.//g"` 138 if [ `uname -p` = "i386" ] ; then 139 MAPPED_OS=Solaris8_x86 140 elif [ "$S_REL" -lt 8 ] ; then 141 MAPPED_OS=Solaris2.6 142 else 143 MAPPED_OS=Solaris8_forte6 144 fi 145 ;; 146 OSF1) 147 MAPPED_OS=OSF1V4.0 148 ;; 149 Darwin) 150 MAPPED_OS=Darwin6.5 151 ;; 152 AIX) 153 MAPPED_OS=AIX4.3 154 ;; 155 Linux) 156 RH_MR=`cat /etc/redhat-release | sed \ 157 -e "s/Red Hat Linux release //" -e "s/ .*//g" \ 158 -e "s/\..*//g"` 159 160 if [ "$RH_MR" = "6" ] ; then 161 MAPPED_OS=Linux2.2 162 else 163 MAPPED_OS=Linux2.4 164 LD_ASSUME_KERNEL="2.2.5" 165 export LD_ASSUME_KERNEL 166 fi 167 ;; 168 HP-UX) 169 MAPPED_OS=HPUX11.00 170 ;; 171 *) 172 if [ "$os_name" = "Windows" ] 173 then 174 MAPPED_OS=NT4.0 175 else 176 Exit "Sorry, operating system `uname -s` is not supported yet" 177 fi 178 ;; 179 esac 180 set_osdir 181 Debug "Mapped OS to $MAPPED_OS" 182} 183 184############################# nssqa_main ############################### 185# local shell function main controlling function of the nss qa 186######################################################################## 187nssqa_main() 188{ 189 Debug "In function nssqa_main" 190 191 if [ $O_WIN = "OFF" -a "$O_TBX" = "OFF" -a $O_LOCAL = "OFF" ] ; then 192 if [ ! -h ${NTDIST}/WINNT5.0_DBG.OBJ -o \ 193 ! -h ${UXDIST}/SunOS5.8_OPT.OBJ -o \ 194 ! -h ${UXDIST}/OSF1V5.0_DBG.OBJ ] ; then 195 # determine if all needed symbolic links are present, in case 196 # we build on one platform and QA on another 197 # create the symbolic links 198 #mksymlinks $* || 199 `dirname $0`/mksymlinks $NSSVER $BUILDDATE || 200 Warning "Can't make the neccessary symbolic links" 201 fi 202 fi 203 204 if [ -d $TESTSCRIPTDIR ] #the directory mozilla/security/nss/tests, 205 then # where all.sh lives 206 cd $TESTSCRIPTDIR 207 else 208 Exit "cant cd to $TESTSCRIPTDIR Exiting" 209 fi 210 211 Debug "Testing from `pwd`" 212 line 213 Debug "HOST: $HOST, DOMSUF: $DOMSUF" 214 215 if [ "$O_TBX" = "OFF" ] ; then 216 map_os32 # From the operatingsystem figure out the name of the build 217 Debug Testing build for $MAPPED_OS in $OSDIR 218 wait_for_build 219 fi 220 run_all 221 BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT" 222 run_all 223 224 # now for the 64 bit build! 225 map_os64 # From the operatingsystem figure out the name of the build 226 if [ -n "$IS_64" ] ; then #Wait for the 64 bit build to finish... 227 Debug "This is a $IS_64 platform" 228 USE_64=1;export USE_64;Debug "Use_64 set to $USE_64" 229 unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT" 230 231 run_all 232 BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT" 233 run_all 234 elif [ "$O_WIN" = "ON" ] ; then 235 OS_TARGET=WIN95;export OS_TARGET 236 Debug "OS_TARGET set to $OS_TARGET" 237 #Echo "WINDOWS-OS-LINE: $os_name $os_full $OS_TARGET" 238 unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT" 239 #if [ "$TEST_LEVEL" = "0" ] ; then 240 #QA_OS_NAME=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name | \ 241 #sed -e "s/WINNT4.0.*/Windows-NT-4.0/" -e \ 242 #"s/WINNT5.0.*/Windows-2000/"` 243 #Echo "WINDOWS-OS-LINE: $QA_OS_NAME $OS_TARGET" 244 #fi 245 run_all 246 BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT" 247 run_all 248 else 249 Debug "This is a 32 bit platform" 250 fi 251} 252 253TEST_LEVEL=0 254 255while [ $TEST_LEVEL -lt 2 ] ; do 256 export TEST_LEVEL 257 unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT" 258 unset USE_64;export USE_64;Debug "USE_64 $USE_64" 259 bc $TEST_LEVEL 260 Debug "About to start nssqa_main" 261 if [ $O_FILE = ON -a "$O_WIN" != "ON" ] ; then 262 nssqa_main 2>>$FILENAME 263 else 264 nssqa_main 265 fi 266 if [ "$O_TBX" = "ON" ] ; then # do not do backward compatibility 267 TEST_LEVEL=3 # testing on tinderbox 268 else 269 TEST_LEVEL=`expr $TEST_LEVEL + 1 ` 270 fi 271done 272 273if [ "$O_TBX" = "ON" -o "$O_LOCAL" = "ON" ] ; then 274#FIXME - maybe it should be copied back to the networkdrive later (-ln) 275 if [ -n "${TMPFILES}" ] ; then #caused problems on tinderbox machines 276 Debug "rm -f ${TMPFILES}" 277 rm -f $TMPFILES 2>/dev/null 278 fi 279 Debug "running qa_stat" 280 . `dirname $0`/qa_stat 281fi 282 283 284qa_stat_get_sysinfo 285 286Exit "nssqa completed. Done `uname -n` $QA_OS_STRING" 287