nix-bitcoin/helper/update-fixed-output-derivation.sh

27 lines
907 B
Bash
Raw Normal View History

2023-08-06 22:07:44 +03:00
#!/usr/bin/env bash
set -euo pipefail
# The file that defines the derivation that should be updated
file=$1
# The name of the output of this flake that should be updated
flakeOutput=$2
# A pattern in a line preceding the hash that should be updated
patternPrecedingHash=$3
sed -i "/$patternPrecedingHash/,/hash/ s|hash = .*|hash = \"\";|" "$file"
# Display stderr and capture it. stdbuf is required to disable output buffering.
stderr=$(
nix build --no-link -L ".#$flakeOutput" |&
stdbuf -oL grep -v '\berror:.*failed to build$' |
tee /dev/stderr || :
)
hash=$(echo "$stderr" | sed -nE 's/.*?\bgot: *?(sha256-.*)/\1/p')
if [[ ! $hash ]]; then
echo
echo "Error: No hash in build output."
exit 1
fi
sed -i "/$patternPrecedingHash/,/hash/ s|hash = .*|hash = \"$hash\";|" "$file"
echo "(Note: The above hash mismatch message is not an error. It is part of the fetching process.)"