[llvm] 9b17f5e - test-release.sh: build projects and runtimes lists with semicolons

Dimitry Andric via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 14 11:57:46 PDT 2023


Author: Dimitry Andric
Date: 2023-04-14T20:57:33+02:00
New Revision: 9b17f5ee0e43824e00aaf210a33956c95c445b40

URL: https://github.com/llvm/llvm-project/commit/9b17f5ee0e43824e00aaf210a33956c95c445b40
DIFF: https://github.com/llvm/llvm-project/commit/9b17f5ee0e43824e00aaf210a33956c95c445b40.diff

LOG: test-release.sh: build projects and runtimes lists with semicolons

While doing a test-release.sh run on FreeBSD, I ran into a sed error due
to the introduction of the GNU extension '\s' in commit 500587e23dfd.

Scanning for blanks (spaces and tabs) could be done in a more portable
fashion using the [[:blank:]] character class. But it is easier to avoid
the original problem, which is that the projects and runtime lists have
to be separated by semicolons, and cannot start with a semicolon.

Instead, use the shell's alternate value parameter expansion mechanism,
which makes it easy to append items to lists with separators in between,
and without any leading separator. This also avoids having to run sed on
the end result.

In addition, build any selected runtimes in the second phase, otherwise
the third phase can fail to find several symbols in compiler-rt, if that
has been built. This is because the host's compiler-rt is not guaranteed
to have those symbols.

Reviewed By: tstellar

Differential Revision: https://reviews.llvm.org/D145884

Added: 
    

Modified: 
    llvm/utils/release/test-release.sh

Removed: 
    


################################################################################
diff  --git a/llvm/utils/release/test-release.sh b/llvm/utils/release/test-release.sh
index 6975a5da8ddec..5fd5f82b54479 100755
--- a/llvm/utils/release/test-release.sh
+++ b/llvm/utils/release/test-release.sh
@@ -261,43 +261,43 @@ if [ -z "$NumJobs" ]; then
 fi
 
 # Projects list
-projects="llvm clang"
+projects="llvm;clang"
 if [ $do_clang_tools = "yes" ]; then
-  projects="$projects clang-tools-extra"
+  projects="${projects:+$projects;}clang-tools-extra"
 fi
 runtimes=""
 if [ $do_rt = "yes" ]; then
-  runtimes="$runtimes compiler-rt"
+  runtimes="${runtimes:+$runtimes;}compiler-rt"
 fi
 if [ $do_libs = "yes" ]; then
-  runtimes="$runtimes libcxx"
+  runtimes="${runtimes:+$runtimes;}libcxx"
   if [ $do_libcxxabi = "yes" ]; then
-    runtimes="$runtimes libcxxabi"
+    runtimes="${runtimes:+$runtimes;}libcxxabi"
   fi
   if [ $do_libunwind = "yes" ]; then
-    runtimes="$runtimes libunwind"
+    runtimes="${runtimes:+$runtimes;}libunwind"
   fi
 fi
 if [ $do_openmp = "yes" ]; then
-  projects="$projects openmp"
+  projects="${projects:+$projects;}openmp"
 fi
 if [ $do_bolt = "yes" ]; then
-  projects="$projects bolt"
+  projects="${projects:+$projects;}bolt"
 fi
 if [ $do_lld = "yes" ]; then
-  projects="$projects lld"
+  projects="${projects:+$projects;}lld"
 fi
 if [ $do_lldb = "yes" ]; then
-  projects="$projects lldb"
+  projects="${projects:+$projects;}lldb"
 fi
 if [ $do_polly = "yes" ]; then
-  projects="$projects polly"
+  projects="${projects:+$projects;}polly"
 fi
 if [ $do_mlir = "yes" ]; then
-  projects="$projects mlir"
+  projects="${projects:+$projects;}mlir"
 fi
 if [ $do_flang = "yes" ]; then
-  projects="$projects flang"
+  projects="${projects:+$projects;}flang"
 fi
 
 # Go to the build directory (may be 
diff erent from CWD)
@@ -404,17 +404,23 @@ function configure_llvmCore() {
             ;;
     esac
 
-    if [ "$Phase" -eq "3" ]; then
-      project_list=${projects// /;}
-      # Leading spaces will result in ";<runtime name>". This causes a CMake
-      # error because the empty string before the first ';' is treated as an
-      # unknown runtime name.
-      runtimes=$(echo $runtimes | sed -e 's/^\s*//')
-      runtime_list=${runtimes// /;}
-    else
+    # During the first two phases, there is no need to build any of the projects
+    # except clang, since these phases are only meant to produce a bootstrapped
+    # clang compiler, capable of building the third phase.
+    if [ "$Phase" -lt "3" ]; then
       project_list="clang"
+    else
+      project_list="$projects"
+    fi
+    # During the first phase, there is no need to build any of the runtimes,
+    # since this phase is only meant to get a clang compiler, capable of
+    # building itself and any selected runtimes in the second phase.
+    if [ "$Phase" -lt "2" ]; then
       runtime_list=""
+    else
+      runtime_list="$runtimes"
     fi
+
     echo "# Using C compiler: $c_compiler"
     echo "# Using C++ compiler: $cxx_compiler"
 


        


More information about the llvm-commits mailing list