diff options
-rwxr-xr-x | tcwg-llvm-build.sh | 12 | ||||
-rwxr-xr-x | tcwg-llvm-common.sh | 18 | ||||
-rwxr-xr-x | tcwg-llvm-release.sh | 2 |
3 files changed, 28 insertions, 4 deletions
diff --git a/tcwg-llvm-build.sh b/tcwg-llvm-build.sh index dc4dde96..044e98b1 100755 --- a/tcwg-llvm-build.sh +++ b/tcwg-llvm-build.sh @@ -184,10 +184,15 @@ LOGEXT="txt" "$SRCDIR/tools/clang" |& tee -a "$LOGBASE-clone.$LOGEXT" } 9>"$REFDIR.lock" -# Move down to the right revision if [ ! -z "$REVISION" ]; then + # Move down to the right revision update_git "$SRCDIR" "$REVISION" update_git "$SRCDIR/tools/clang" "$REVISION" +else + # Get the latest revision from all repos + LLVM_REV="$(find_svn_rev "$SRCDIR")" + CLANG_REV="$(find_svn_rev "$SRCDIR/tools/clang")" + REVISION="r$(find_last_rev "$LLVM_REV" "$CLANG_REV")" fi # CMake @@ -209,7 +214,7 @@ mkdir -p "$INSTDIR" cd "$BUILDDIR" && ninja "-j$CPUS" install |& tee "$LOGBASE-install.$LOGEXT" # Pack & Ship -PKGTAG="$BUILDID" +PKGTAG="$BUILDID-$REVISION" TARGET=$("$BUILDDIR/bin/clang" --version | awk '/Target:/ { print $2 }') PKGNAME="$(push_binary_name "$PKGTAG" "$TARGET")" PKGDIR="$WORKSPACE/$PKGNAME" @@ -223,5 +228,6 @@ cd "$WORKSPACE" && scp "$PKGNAME.$PUSHSUFFIX" "$(push_scp_url "$PUSHTYPE")" # Create toolchain file (wget URL) if [ "$TOOLCHAIN_FILE" != "" ]; then - echo "$(push_wget_url "$PKGTAG" "$TARGET" "$PUSHTYPE")" >> "$TOOLCHAIN_FILE" + echo "toolchain=$(push_wget_url "$PKGTAG" "$TARGET" "$PUSHTYPE")" >> "$TOOLCHAIN_FILE" + echo "revision=$REVISION" >> "$TOOLCHAIN_FILE" fi diff --git a/tcwg-llvm-common.sh b/tcwg-llvm-common.sh index d202bb83..4a431180 100755 --- a/tcwg-llvm-common.sh +++ b/tcwg-llvm-common.sh @@ -53,6 +53,8 @@ download_toolchain() { update_git() { local BASE=$1 local REV=$2 + local BASEDIR + BASEDIR=$(dirname "$(readlink -f "$0")") pushd "$BASE" hash=$("$BASEDIR/svn-git-hash.pl" "$REV" | awk '{print $2}') @@ -63,6 +65,22 @@ update_git() { popd } +# Find the SVN revision of a git-svn repository +find_svn_rev() { + local BASE=$1 + rev="$(git -C "$BASE" log -n 1 | grep git-svn-id | perl -pe "s/.*@(\d+)\s.*/\$1/")" + echo "$rev" +} + +# Find the largest revision of a list +find_last_rev() { + local LAST=0 + for rev in "$@"; do + [ "$rev" -gt "$LAST" ] && LAST=$rev + done + echo "$LAST" +} + # Environment Variables and default values CPUS=$(nproc --all) # We may use between 500MB and 1GB per link job diff --git a/tcwg-llvm-release.sh b/tcwg-llvm-release.sh index 9e19cdb0..dbc5a89e 100755 --- a/tcwg-llvm-release.sh +++ b/tcwg-llvm-release.sh @@ -173,7 +173,7 @@ cd "$WORKSPACE/$RCDIR" && scp "$PKGNAME.$PUSHSUFFIX" "$(push_scp_url "$PUSHTYPE" # Create toolchain file (wget URL) if [ "$TOOLCHAIN_FILE" != "" ]; then - echo "$(push_wget_url "$PKGTAG" "$TARGET" "$PUSHTYPE")" >> "$TOOLCHAIN_FILE" + echo "toolchain=$(push_wget_url "$PKGTAG" "$TARGET" "$PUSHTYPE")" >> "$TOOLCHAIN_FILE" fi exit $result |