zcashd/contrib/devtools/update-clang-hashes.sh

49 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
export LC_ALL=C
set -o pipefail
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
CLANG_PACKAGE="$SCRIPT_DIR/../../depends/packages/native_clang.mk"
LIBCXX_PACKAGE="$SCRIPT_DIR/../../depends/packages/libcxx.mk"
CLANG_VERSION=$( grep -v _major_version $CLANG_PACKAGE | grep -oP "_version=\K.*" )
LIBCXX_MSYS2_VERSION=$( grep -oP "_msys2_version=\K.*" $LIBCXX_PACKAGE )
update_clang_hash() {
url="https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VERSION/clang+llvm-$CLANG_VERSION-$1.tar.xz"
echo "Fetching $url"
hash=$( curl -fL $url | sha256sum | awk '{print $1}' )
retVal=$?
if [ $retVal -ne 0 ]; then
if [ $retVal -eq 22 ]; then
echo
echo "The LLVM project has not published a $CLANG_VERSION build for $1."
echo "You will need to manually fix the Makefile to use a different version."
echo
fi
else
sed -i "/\$(package)_sha256_hash_$2=/c\\\$(package)_sha256_hash_$2=$hash" $CLANG_PACKAGE
sed -i "/\$(package)_sha256_hash_$2=/c\\\$(package)_sha256_hash_$2=$hash" $LIBCXX_PACKAGE
fi
}
update_libcxx_msys2_hash() {
url="https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-$1-$LIBCXX_MSYS2_VERSION-any.pkg.tar.zst"
echo "Fetching $url"
hash=$( curl -fL $url | sha256sum | awk '{print $1}' )
sed -i "/\$(package)_$2=/c\\\$(package)_$2=$hash" $LIBCXX_PACKAGE
}
# For native targets
# update_clang_hash CLANG_COMPILED_TARGET MAKEFILE_PACKAGE_IDENTIFIER
update_clang_hash aarch64-linux-gnu aarch64_linux
update_clang_hash x86_64-apple-darwin darwin
update_clang_hash x86_64-linux-gnu-ubuntu-18.04 linux
update_clang_hash amd64-unknown-freebsd12 freebsd
# For Windows cross-compilation
# update_libcxx_msys2_hash LIBCXX_LIBRARY MAKEFILE_HASH_SUFFIX
update_libcxx_msys2_hash libc++ sha256_hash
update_libcxx_msys2_hash libc++abi libcxxabi_sha256_hash