summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtcwg-llvm-build.sh12
-rwxr-xr-xtcwg-llvm-common.sh18
-rwxr-xr-xtcwg-llvm-release.sh2
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