X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=utils%2Frelease%2Ftest-release.sh;h=e0983460bf246f6b65f65285875bc28a0580030e;hb=47f0e3f434e2e43f951c3a826c40906cb15b7285;hp=c65aa762535c0fb7c2b70330589ac781b544a826;hpb=c6f36fe9f74856fdeab53df72479eff72fd52ec2;p=oota-llvm.git diff --git a/utils/release/test-release.sh b/utils/release/test-release.sh index c65aa762535..e0983460bf2 100755 --- a/utils/release/test-release.sh +++ b/utils/release/test-release.sh @@ -32,7 +32,9 @@ do_asserts="no" do_compare="yes" do_rt="yes" do_libs="yes" +do_libunwind="yes" do_test_suite="yes" +do_openmp="no" BuildDir="`pwd`" use_autoconf="no" ExtraConfigureFlags="" @@ -58,7 +60,9 @@ function usage() { echo " For example -svn-path trunk or -svn-path branches/release_37" echo " -no-rt Disable check-out & build Compiler-RT" echo " -no-libs Disable check-out & build libcxx/libcxxabi/libunwind" + echo " -no-libunwind Disable check-out & build libunwind" echo " -no-test-suite Disable check-out & build test-suite" + echo " -openmp Check out and build the OpenMP run-time (experimental)" } if [ `uname -s` = "Darwin" ]; then @@ -133,9 +137,15 @@ while [ $# -gt 0 ]; do -no-libs ) do_libs="no" ;; + -no-libunwind ) + do_libunwind="no" + ;; -no-test-suite ) do_test_suite="no" ;; + -openmp ) + do_openmp="yes" + ;; -help | --help | -h | --h | -\? ) usage exit 0 @@ -186,11 +196,17 @@ if [ $do_rt = "yes" ]; then projects="$projects compiler-rt" fi if [ $do_libs = "yes" ]; then - projects="$projects libcxx libcxxabi libunwind" + projects="$projects libcxx libcxxabi" + if [ $do_libunwind = "yes" ]; then + projects="$projects libunwind" + fi fi if [ $do_test_suite = "yes" ]; then projects="$projects test-suite" fi +if [ $do_openmp = "yes" ]; then + projects="$projects openmp" +fi # Go to the build directory (may be different from CWD) BuildDir=$BuildDir/$RC @@ -208,6 +224,16 @@ if [ $RC != "final" ]; then fi Package=$Package-$Triple +# Errors to be highlighted at the end are written to this file. +echo -n > $LogDir/deferred_errors.log + +function deferred_error() { + Phase="$1" + Flavor="$2" + Msg="$3" + echo "[${Flavor} Phase${Phase}] ${Msg}" | tee -a $LogDir/deferred_errors.log +} + # Make sure that a required program is available function check_program_exists() { local program="$1" @@ -257,7 +283,7 @@ function export_sources() { ln -s ../../cfe.src clang fi cd $BuildDir/llvm.src/tools/clang/tools - if [ ! -h clang-tools-extra ]; then + if [ ! -h extra ]; then ln -s ../../../../clang-tools-extra.src extra fi cd $BuildDir/llvm.src/projects @@ -367,13 +393,17 @@ function test_llvmCore() { ObjDir="$3" cd $ObjDir - ${MAKE} -j $NumJobs -k check-all \ - 2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log + if ! ( ${MAKE} -j $NumJobs -k check-all \ + 2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log ) ; then + deferred_error $Phase $Flavor "check-all failed" + fi if [ "$use_autoconf" = "yes" ]; then # In the cmake build, unit tests are run as part of check-all. - ${MAKE} -k unittests \ - 2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log + if ! ( ${MAKE} -k unittests 2>&1 | \ + tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log ) ; then + deferred_error $Phase $Flavor "unittests failed" + fi fi cd $BuildDir @@ -413,6 +443,46 @@ function package_release() { cd $cwd } +# Build and package the OpenMP run-time. This is still experimental and not +# meant for official testing in the release, but as a way for providing +# binaries as a convenience to those who want to try it out. +function build_OpenMP() { + cwd=`pwd` + + rm -rf $BuildDir/Phase3/openmp + rm -rf $BuildDir/Phase3/openmp.install + mkdir -p $BuildDir/Phase3/openmp + cd $BuildDir/Phase3/openmp + clang=$BuildDir/Phase3/Release/llvmCore-$Release-$RC.install/usr/local/bin/clang + + echo "#" cmake -DCMAKE_C_COMPILER=${clang} -DCMAKE_CXX_COMPILER=${clang}++ \ + -DCMAKE_BUILD_TYPE=Release -DLIBOMP_MICRO_TESTS=on \ + $BuildDir/openmp.src/runtime + cmake -DCMAKE_C_COMPILER=${clang} -DCMAKE_CXX_COMPILER=${clang}++ \ + -DCMAKE_BUILD_TYPE=Release -DLIBOMP_MICRO_TESTS=on \ + $BuildDir/openmp.src/runtime + + echo "# Building OpenMP run-time" + echo "# ${MAKE} -j $NumJobs VERBOSE=1" + ${MAKE} -j $NumJobs VERBOSE=1 + echo "# ${MAKE} libomp-micro-tests VERBOSE=1" + ${MAKE} libomp-micro-tests VERBOSE=1 + echo "# ${MAKE} install DESTDIR=$BuildDir/Phase3/openmp.install" + ${MAKE} install DESTDIR=$BuildDir/Phase3/openmp.install + + OpenMPPackage=OpenMP-$Release + if [ $RC != "final" ]; then + OpenMPPackage=$OpenMPPackage-$RC + fi + OpenMPPackage=$OpenMPPackage-$Triple + + mv $BuildDir/Phase3/openmp.install/usr/local $BuildDir/$OpenMPPackage + cd $BuildDir + tar cvfJ $BuildDir/$OpenMPPackage.tar.xz $OpenMPPackage + mv $OpenMPPackage $BuildDir/Phase3/openmp.install/usr/local + cd $cwd +} + # Exit if any command fails # Note: pipefail is necessary for running build commands through # a pipe (i.e. it changes the output of ``false | tee /dev/null ; echo $?``) @@ -445,7 +515,6 @@ for Flavor in $Flavors ; do c_compiler="$CC" cxx_compiler="$CXX" - llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.obj llvmCore_phase1_destdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.install @@ -524,6 +593,11 @@ for Flavor in $Flavors ; do done fi done + +if [ $do_openmp = "yes" ]; then + build_OpenMP +fi + ) 2>&1 | tee $LogDir/testing.$Release-$RC.log package_release @@ -538,4 +612,13 @@ else echo "### Package: $Package.tar.xz" fi echo "### Logs: $LogDir" + +echo "### Errors:" +if [ -s "$LogDir/deferred_errors.log" ]; then + cat "$LogDir/deferred_errors.log" + exit 1 +else + echo "None." +fi + exit 0