X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f87113c9c48e2c484ae39701fcf6bb2dc869782c..HEAD:/tools/jenkins/Sanitizers.sh diff --git a/tools/jenkins/Sanitizers.sh b/tools/jenkins/Sanitizers.sh index bf86ef68d5..ef5ae0e4c0 100755 --- a/tools/jenkins/Sanitizers.sh +++ b/tools/jenkins/Sanitizers.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env sh set -e @@ -7,96 +7,88 @@ die() { exit 1 } -do_cleanup() { - for d in "$WORKSPACE/build" +if [ -z "$1" ] + then + echo "No Sanitizer type selected - run Address" + SANITIZER="address" +else + SANITIZER=$1 +fi + + +if [ "${SANITIZER}" = "address" ] +then + export ASAN_OPTIONS="suppressions=$WORKSPACE/tools/address_sanitizer.supp" + SANITIZER_OPTIONS="-Denable_address_sanitizer=ON -Denable_undefined_sanitizer=OFF -Denable_thread_sanitizer=OFF" +elif [ "${SANITIZER}" = "thread" ] +then + export TSAN_OPTIONS="memory_limit_mb=1500 suppressions=$WORKSPACE/tools/thread_sanitizer.supp" + SANITIZER_OPTIONS="-Denable_address_sanitizer=OFF -Denable_undefined_sanitizer=OFF -Denable_thread_sanitizer=ON" +elif [ "${SANITIZER}" = "undefined" ] +then + export UBSAN_OPTIONS="print_stacktrace=1" + SANITIZER_OPTIONS="-Denable_address_sanitizer=OFF -Denable_undefined_sanitizer=ON -Denable_thread_sanitizer=OFF" +else + die "Unknown Sanitizer type selected ${SANITIZER} - Exiting" +fi + + + +### Check the node installation + +pkg_check() { + for pkg do - if [ -d "$d" ] + if command -v "$pkg" then - rm -rf "$d" || die "Could not remote $d" + echo "$pkg is installed. Good." + else + die "please install $pkg before proceeding" fi done } -### Check the node installation - -for pkg in xsltproc -do - if command -v $pkg - then - echo "$pkg is installed. Good." - else - die "please install $pkg before proceeding" - fi -done +pkg_check xsltproc -### Cleanup previous runs +### Cleanup previous runs -! [ -z "$WORKSPACE" ] || die "No WORKSPACE" +[ -n "$WORKSPACE" ] || die "No WORKSPACE" [ -d "$WORKSPACE" ] || die "WORKSPACE ($WORKSPACE) does not exist" -do_cleanup +do_cleanup() { + for d + do + if [ -d "$d" ] + then + rm -rf "$d" || die "Could not remove $d" + fi + mkdir "$d" || die "Could not create $d" + done +} -for d in "$WORKSPACE/build" -do - mkdir "$d" || die "Could not create $d" -done +do_cleanup "$WORKSPACE/build" NUMPROC="$(nproc)" || NUMPROC=1 -cd $WORKSPACE/build +cd "$WORKSPACE"/build ctest -D ExperimentalStart || true -cmake -Denable_documentation=OFF -Denable_lua=ON -Denable_java=OFF \ - -Denable_compile_optimizations=OFF -Denable_compile_warnings=ON \ - -Denable_jedule=ON -Denable_mallocators=OFF \ - -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_model-checking=OFF \ - -Denable_memcheck=OFF -Denable_memcheck_xml=OFF -Denable_smpi_ISP_testsuite=OFF -Denable_coverage=OFF -Denable_address_sanitizer=ON -Denable_fortran=OFF $WORKSPACE +cmake -Denable_documentation=OFF \ + -Denable_compile_optimizations=ON -Denable_compile_warnings=ON \ + -Denable_mallocators=OFF \ + -Denable_smpi=ON -Denable_testsuite_smpi_MPICH3=ON -Denable_model-checking=OFF \ + -Denable_ns3=ON \ + -Denable_memcheck=OFF -Denable_memcheck_xml=OFF -Denable_testsuite_smpi_MBI=OFF -Denable_testsuite_McMini=OFF -Denable_coverage=OFF\ + -Denable_fortran=OFF -Denable_python=OFF -DLTO_EXTRA_FLAG="auto" -DCMAKE_CXX_COMPILER_LAUNCHER=ccache\ + ${SANITIZER_OPTIONS} "$WORKSPACE" -make -j$NUMPROC -ctest -D ExperimentalTest || true +make -j$NUMPROC tests +ctest --no-compress-output -D ExperimentalTest || true if [ -f Testing/TAG ] ; then - xsltproc $WORKSPACE/tools/jenkins/ctest2junit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > CTestResults_address.xml - mv CTestResults_address.xml $WORKSPACE + xsltproc "$WORKSPACE"/tools/jenkins/ctest2junit.xsl Testing/"$(head -n 1 < Testing/TAG)"/Test.xml > CTestResults_"${SANITIZER}".xml + mv CTestResults_"${SANITIZER}".xml "$WORKSPACE" fi make clean - -export TSAN_OPTIONS="memory_limit_mb=1500" - -ctest -D ExperimentalStart || true - -cmake -Denable_documentation=OFF -Denable_lua=ON -Denable_java=OFF \ - -Denable_compile_optimizations=OFF -Denable_compile_warnings=ON \ - -Denable_jedule=ON -Denable_mallocators=ON \ - -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_model-checking=OFF \ - -Denable_memcheck=OFF -Denable_memcheck_xml=OFF -Denable_smpi_ISP_testsuite=OFF -Denable_coverage=OFF -Denable_address_sanitizer=OFF -Denable_thread_sanitizer=ON -Denable_fortran=OFF $WORKSPACE - -make -j$NUMPROC -ctest -D ExperimentalTest || true - -if [ -f Testing/TAG ] ; then - xsltproc $WORKSPACE/tools/jenkins/ctest2junit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > CTestResults_thread.xml - mv CTestResults_thread.xml $WORKSPACE -fi - -make clean - -ctest -D ExperimentalStart || true - -cmake -Denable_documentation=OFF -Denable_lua=ON -Denable_java=OFF \ - -Denable_compile_optimizations=OFF -Denable_compile_warnings=ON \ - -Denable_jedule=ON -Denable_mallocators=ON \ - -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_model-checking=OFF \ - -Denable_memcheck=OFF -Denable_memcheck_xml=OFF -Denable_smpi_ISP_testsuite=OFF -Denable_coverage=OFF -Denable_address_sanitizer=OFF -Denable_thread_sanitizer=OFF -Denable_undefined_sanitizer=ON -Denable_fortran=OFF $WORKSPACE - -make -j$NUMPROC -ctest -D ExperimentalTest || true - -if [ -f Testing/TAG ] ; then - xsltproc $WORKSPACE/tools/jenkins/ctest2junit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > CTestResults_undefined.xml - mv CTestResults_undefined.xml $WORKSPACE -fi - -