about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/llvm/update.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/llvm/update.sh')
-rwxr-xr-xnixpkgs/pkgs/development/compilers/llvm/update.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/llvm/update.sh b/nixpkgs/pkgs/development/compilers/llvm/update.sh
new file mode 100755
index 000000000000..8f28d34073cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/llvm/update.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+set -eu
+
+# Example usage: ./pkgs/development/compilers/llvm/update.sh 12.0.0-rc4
+
+readonly VERSION="$1"
+readonly VERSION_MAJOR="${VERSION%%.*}"
+readonly VERSION_MAIN="${VERSION%%-*}"
+declare VERSION_PATCH="${VERSION/$VERSION_MAIN/}"
+readonly VERSION_PATCH="${VERSION_PATCH/-/}"
+
+readonly DIR="pkgs/development/compilers/llvm/$VERSION_MAJOR"
+readonly FILE="$DIR/default.nix"
+
+sed -Ei \
+  -e "s/release_version = \".+\";/release_version = \"$VERSION_MAIN\";/" \
+  -e "s/candidate = \".*\";/candidate = \"$VERSION_PATCH\";/" \
+  "$FILE"
+
+readonly ATTRSET="llvmPackages_$VERSION_MAJOR"
+readonly SOURCES=(
+  "clang-unwrapped.src"
+  "compiler-rt.src"
+  "clang-unwrapped.clang-tools-extra_src"
+  "libcxx.src"
+  "libcxxabi.src"
+  "libunwind.src"
+  "lld.src"
+  "lldb.src"
+  "llvm.src"
+  "llvm.polly_src"
+  "openmp.src"
+)
+
+for SOURCE in "${SOURCES[@]}"; do
+  echo "Updating the hash of $SOURCE:"
+  declare ATTR="$ATTRSET.$SOURCE"
+  declare OLD_HASH="$(nix eval -f . $ATTR.outputHash)"
+  declare NEW_HASH="\"$(nix-prefetch-url -A $ATTR)\""
+  find "$DIR" -type f -exec sed -i "s/$OLD_HASH/$NEW_HASH/" {} +
+done
+
+echo OK