Changeset 26045


Ignore:
Timestamp:
03/08/21 17:00:03 (4 years ago)
Author:
jdquinn
Message:

CHG: Missing Windows control structures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/jenkins/jenkins.sh

    r26044 r26045  
    77# members of the ISSM development team.
    88#
     9# NOTE:
     10# - Variable OS is set in environment by running
     11#       `source $ISSM_DIR/etc/environment.sh`.
     12#
    913# TODO:
    1014# - Rename TEMP to something more descriptive (ensure first that other parts of
     
    1721
    1822echo "Cleaning up execution directory"
    19 rm -rf $ISSM_DIR/execution/*
    20 rm -rf $ISSM_DIR/nightlylog
    21 mkdir $ISSM_DIR/nightlylog
     23rm -rf ${ISSM_DIR}/execution/*
     24rm -rf ${ISSM_DIR}/nightlylog
     25mkdir ${ISSM_DIR}/nightlylog
    2226
    2327#Server URI
     
    5660fi
    5761
    58 #Get Operating system (OS) name{{{
    59 OS=$(uname -s)
    60 if [[ $OS == CYGWIN* ]]; then
    61         OS="win";
    62 fi
    63 #}}}
    64 
    6562#Install ISSM
    6663#Determining installation type depending on svn changes{{{
     
    6865echo "             Determining Installation type            "
    6966echo "======================================================";
    70 if [ -a $ISSM_DIR/svn_revision_old ]; then
    71         SVN_PREVIOUS=$(cat $ISSM_DIR/svn_revision_old)
     67if [ -a ${ISSM_DIR}/svn_revision_old ]; then
     68        SVN_PREVIOUS=$(cat ${ISSM_DIR}/svn_revision_old)
    7269        SVN_CURRENT=$SVN_REVISION_1
    7370        echo "Previous revision number: $SVN_PREVIOUS"
     
    7774        #
    7875
    79         #svn --non-interactive --no-auth-cache --trust-server-cert diff -r $SVN_PREVIOUS:$SVN_CURRENT --summarize $ISSM_DIR | awk '{print $NF}' > $ISSM_DIR/TEMP
     76        #svn --non-interactive --no-auth-cache --trust-server-cert diff -r $SVN_PREVIOUS:$SVN_CURRENT --summarize ${ISSM_DIR} | awk '{print $NF}' > ${ISSM_DIR}/TEMP
    8077
    8178        # Get list of changes from Jenkins itself as svn requires credentials
     
    8481
    8582        # Process html page and get the list of files that has changed (tricky...)
    86         #cat changes | grep '="The file was modified"' | sed -e 's/.*<\/td><td><a>\(.*\)<\/a><\/td><td>.*/\1/' > $ISSM_DIR/TEMP
     83        #cat changes | grep '="The file was modified"' | sed -e 's/.*<\/td><td><a>\(.*\)<\/a><\/td><td>.*/\1/' > ${ISSM_DIR}/TEMP
    8784        #cat changes | grep 'document_edit' |sed -e 's/document_edit.png/document_edit.png\
    88                 #/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v 'document_edit.png' > $ISSM_DIR/TEMP
    89         cat changes | tr " " "\n" | grep trunk | sed -e 's/.*<a>\(.*\)<\/a>.*/\1/' > $ISSM_DIR/TEMP
     85                #/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v 'document_edit.png' > ${ISSM_DIR}/TEMP
     86        cat changes | tr " " "\n" | grep trunk | sed -e 's/.*<a>\(.*\)<\/a>.*/\1/' > ${ISSM_DIR}/TEMP
    9087
    9188        # Print list of changed files
    9289        echo "   "
    9390        echo "List of updated files"
    94         cat $ISSM_DIR/TEMP
     91        cat ${ISSM_DIR}/TEMP
    9592        echo "   "
    9693
     
    10299        # If the contents of the externalpackages directory were modified in any
    103100        # way, check for changed external packages
    104         if [ ! -z "$(cat $ISSM_DIR/TEMP | grep externalpackages)" ]; then
     101        if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep externalpackages)" ]; then
    105102                echo "  -- checking for changed externalpackages... yes"
    106103                ISSM_EXTERNALPACKAGES="yes"
     
    112109        # If the Makefile or m4 diirectory were changed in any way or if certain
    113110        # binary files from a previous compilation do not exist, reconfigure
    114         if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "Makefile.am" -e "m4" )" ] ||
    115                 [ ! -f "$ISSM_DIR/bin/issm.exe" ] && [ ! -f "$ISSM_DIR/bin/issm-bin.js" ] ||
     111        if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep -e "Makefile.am" -e "m4" )" ] ||
     112                [ ! -f "${ISSM_DIR}/bin/issm.exe" ] && [ ! -f "${ISSM_DIR}/bin/issm-bin.js" ] ||
    116113                [ "$ISSM_EXTERNALPACKAGES" == "yes" ]; then
    117114                echo "  -- checking for reconfiguration... yes"
     
    123120
    124121        # If source files were changed in any way, recompile
    125         if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "\.cpp" -e "\.h" )" ] ||
     122        if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep -e "\.cpp" -e "\.h" )" ] ||
    126123                [ "$ISSM_RECONFIGURE" == "yes" ]; then
    127124                echo "  -- checking for recompilation... yes"
     
    134131        # Cleanup
    135132        rm changes
    136         rm $ISSM_DIR/TEMP
     133        rm ${ISSM_DIR}/TEMP
    137134else
    138135        echo "Previous revision not found, this must be a fresh install"
     
    147144echo " "
    148145echo "Recording current svn version: $SVN_REVISION_1"
    149 echo $SVN_REVISION_1 > $ISSM_DIR/svn_revision_old
     146echo $SVN_REVISION_1 > ${ISSM_DIR}/svn_revision_old
    150147#}}}
    151148
     
    157154
    158155#Jenkins XML files for individual packages
    159 EXTERNAL_TEST_FILE="$ISSM_DIR/nightlylog/results/external.xml"
    160 mkdir -p $ISSM_DIR/nightlylog/results
     156EXTERNAL_TEST_FILE="${ISSM_DIR}/nightlylog/results/external.xml"
     157mkdir -p ${ISSM_DIR}/nightlylog/results
    161158echo "<testsuite tests=\"$NUMPACKAGES\">" > $EXTERNAL_TEST_FILE
    162159
    163160# Need a source here for when builds start midway through installation of externalpackages.
    164 source $ISSM_DIR/etc/environment.sh
    165 
    166 if [ "$OS" == "win" ]; then
     161source ${ISSM_DIR}/etc/environment.sh
     162
     163if [ "${OS}" == CYGWIN* ]; then
    167164        echo " == WINDOWS ENVIRONMENT DETECTED =="
    168         source $ISSM_DIR/externalpackages/windows/windows_environment.sh
     165        source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
    169166fi
    170167
     
    178175
    179176        #install if requested or if previous install has not been successful
    180         if [ "$ISSM_EXTERNALPACKAGES" == "yes" ]; then # NOTE: Removed check on if 'install' directory exist
    181                 cd $ISSM_DIR/externalpackages/$PACKAGENAME
     177        if [ "${ISSM_EXTERNALPACKAGES}" == "yes" ]; then # NOTE: Removed check on if 'install' directory exist
     178                cd ${ISSM_DIR}/externalpackages/$PACKAGENAME
    182179
    183180                echo "======================================================";
     
    186183
    187184                ./$PACKAGEINST $NUMCPUS_INSTALL &> compil.log
    188                 if [ $? -ne 0 ] && [ "$PACKAGENAME" != "boost" ]; then
     185                if [ $? -ne 0 ] && [ "${PACKAGENAME}" != "boost" ]; then
    189186                        cat compil.log
    190187                        echo "======================================================";
     
    200197                        echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
    201198                fi
    202                 source $ISSM_DIR/etc/environment.sh
     199                source ${ISSM_DIR}/etc/environment.sh
    203200
    204201                #If external package is rebuilt, we also need to recompile
     
    223220
    224221# Source here to include any newly installed externalpackages on the path.
    225 source $ISSM_DIR/etc/environment.sh
    226 
    227 if [ "$OS" == "win" ]; then
     222source ${ISSM_DIR}/etc/environment.sh
     223
     224if [ "${OS}" == CYGWIN* ]; then
    228225        echo " == WINDOWS ENVIRONMENT DETECTED =="
    229         source $ISSM_DIR/externalpackages/windows/windows_environment.sh
     226        source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
    230227fi
    231228
     
    247244        #export EMCC_DEBUG=1 # Uncomment to enable debugging
    248245        export EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" # Required after v1.38.14 to avoid undefined symbol warnings from our Fortran object files being treated as errors
    249         source $ISSM_DIR/externalpackages/emscripten/install/emsdk_env.sh
     246        source ${ISSM_DIR}/externalpackages/emscripten/install/emsdk_env.sh
    250247fi
    251248
    252249#}}}
    253250#ISSM compilation yes/no                (ISSM_COMPILATION) {{{
    254 if [ "$ISSM_COMPILATION" == "yes" ]; then
     251if [ "${ISSM_COMPILATION}" == "yes" ]; then
    255252        cd $ISSM_DIR
    256         if [ "$ISSM_RECONFIGURE" == "yes" ]; then
     253        if [ "${ISSM_RECONFIGURE}" == "yes" ]; then
    257254                echo "======================================================";
    258255                echo "             Cleaning up and reconfiguring            "
     
    265262                        exit 1
    266263                fi
    267                 eval "./configure $ISSM_CONFIG"
     264                eval "./configure ${ISSM_CONFIG}"
    268265                if [ $? -ne 0 ]; then
    269266                        echo "ISSM configuration failed (see options below)"
     
    279276        echo "======================================================"
    280277        if [ $NUMCPUS_INSTALL -gt 1 ]; then
    281                 echo "Making with " $NUMCPUS_INSTALL " cpus"
     278                echo "Making with ${NUMCPUS_INSTALL} cpus"
     279
     280                # To debug compilation/linking, add 'V=1' option to the call to make
     281                #make -j $NUMCPUS_INSTALL V=1
    282282                make -j $NUMCPUS_INSTALL
    283283        else
     284                #make V=1
    284285                make
    285286        fi
     
    295296        fi
    296297        make install
    297 elif [ "$ISSM_COMPILATION" == "no" ]
    298 then
     298elif [ "${ISSM_COMPILATION}" == "no" ]; then
    299299        echo "Skipping ISSM compilation"
    300300else
     
    314314        for (( i=1;i<=$NUMCPUS_RUN;i++ )); do
    315315                #Launch matlab and the nightly run script
    316                 cat > $ISSM_DIR/nightlylog/matlab_run$i.m << EOF
     316                cat > ${ISSM_DIR}/nightlylog/matlab_run$i.m << EOF
    317317                warning off %necessary to avoid a log of several Go for parallel runs
    318318                try,
    319                         $(if [ "$MATLAB_NROPTIONS" = "" ]; then
    320                                 echo "runme('output','nightly','rank',$i,'numprocs',$NUMCPUS_RUN);"
     319                        $(if [ "${MATLAB_NROPTIONS}" = "" ]; then
     320                                echo "runme('output','nightly','rank',${i},'numprocs',${NUMCPUS_RUN});"
    321321                        else
    322                                 echo "runme($MATLAB_NROPTIONS,'output','nightly','rank',$i,'numprocs',$NUMCPUS_RUN);"
     322                                echo "runme(${MATLAB_NROPTIONS},'output','nightly','rank',${i},'numprocs',${NUMCPUS_RUN});"
    323323                        fi)
    324324                catch me,
     
    335335EOF
    336336                cd $ISSM_DIR/test/NightlyRun
    337                 if [ "$OS" = "win" ]; then
    338                         $MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath $ISSM_DIR_WIN/src/m/dev; devpath; addpath $ISSM_DIR_WIN/nightlylog/; matlab_run$i" -logfile $ISSM_DIR_WIN/nightlylog/matlab_log$i.log &
     337                if [[ "${OS}" == CYGWIN* || "${OS}" == MINGW* ]]; then
     338                        $MATLAB_PATH/bin/matlab -nodesktop -nosplash -nojvm -r "addpath ${ISSM_DIR_WIN}/src/m/dev; devpath; addpath ${ISSM_DIR_WIN}/nightlylog; matlab_run$i" -logfile ${ISSM_DIR_WIN}/nightlylog/matlab_log$i.log &
    339339                else
    340                         $MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; matlab_run$i" -logfile $ISSM_DIR/nightlylog/matlab_log$i.log &
     340                        $MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath ${ISSM_DIR}/src/m/dev; devpath; addpath ${ISSM_DIR}/nightlylog; matlab_run$i" -logfile ${ISSM_DIR}/nightlylog/matlab_log$i.log &
    341341                fi
    342342        done
    343343
    344         #wait until matlab closes
    345         if [ "$OS" = "win" ]; then
     344        # Wait for MATLAB to exit
     345        if [[ "${OS}" == CYGWIN* ]]; then
    346346                sleep 5;
    347                 echo "Waiting for matlab on windows"
     347                echo "Waiting for MATLAB to exit"
    348348                pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
    349349                echo '-----------------------------'
    350                 echo "pid: $pid"
     350                echo "pid: ${pid}"
    351351                echo '-----------------------------'
    352                 while [ -n "$pid" ]; do
     352                while [ -n "${pid}" ]; do
    353353                        pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
    354354                        sleep 1;
    355355                done
    356356                echo "DONE!"
     357        elif [[ "${OS}" == MINGW* ]]; then
     358                # NOTE: The PID query used here may work as well on Cygwin. If so, combine the two conditional blocks.
     359                sleep 5;
     360                echo "Waiting for MATLAB to exit"
     361                pid=$(ps -W | grep MATLAB | awk '{print $1}')
     362                echo '-----------------------------'
     363                echo "pid: ${pid}"
     364                echo '-----------------------------'
     365                while [ -n "${pid}" ]; do
     366                        pid=$(ps -W | grep MATLAB | awk '{print $1}')
     367                        sleep 1;
     368                done
    357369        else
    358370                wait
    359371        fi
    360372
    361         #concatenate reports
    362         cd $ISSM_DIR/nightlylog/
    363         #echo 'CHECKING NIGHTLYLOG DIRECTORY'
    364         #echo '-----------------------------'
    365         #ls -la
    366         #echo '-----------------------------'
     373        # Concatenate logs
     374        cd $ISSM_DIR/nightlylog
    367375
    368376        if [ -f matlab_log.log ]; then
     
    371379
    372380        for job in `jobs -p`; do
    373                 echo "Waiting on: $job"
     381                #echo "Waiting on: ${job}" # Commented out because it really has nothing to do with MATLAB processes
    374382                wait $job
    375383        done
     
    390398if [ $PYTHON_TEST -eq 1 ]; then
    391399        #Launch all tests on different cpus
    392         export PYTHONPATH="$ISSM_DIR/src/m/dev"
     400        export PYTHONPATH="${ISSM_DIR}/src/m/dev"
    393401        export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
    394402        export PYTHONUNBUFFERED=1 #we don't want python to buffer otherwise issm.exe output is not captured
     
    401409        done
    402410
    403         # concatenate reports
    404         cd $ISSM_DIR/nightlylog/
     411        # Concatenate logs
     412        cd $ISSM_DIR/nightlylog
    405413        if [ -f python_log.log ]; then
    406414                rm python_log.log
     
    409417        for job in `jobs -p`
    410418        do
    411                 echo "Waiting on: $job"
     419                echo "Waiting on: ${job}"
    412420                wait $job
    413421        done
     
    432440# }}}
    433441
    434 #process logs to be junit compatible
     442# Process logs to be JUnit compatible
    435443#{{{
    436444cd $ISSM_DIR/nightlylog
Note: See TracChangeset for help on using the changeset viewer.