mirror of
https://github.com/feather-wallet/feather.git
synced 2024-11-01 01:47:42 +00:00
54 lines
2 KiB
Bash
Executable file
54 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Usage: env [ CC=... ] [ C_STANDARD=...] [ CXX=... ] [CXX_STANDARD=...] \
|
|
# [ AR=... ] [ RANLIB=... ] [ STRIP=... ] [ DEBUG=... ] \
|
|
# [ LTO=... ] ./build-id [ID_SALT]...
|
|
#
|
|
# Prints to stdout a SHA256 hash representing the current toolset, used by
|
|
# depends/Makefile as a build id for caching purposes (detecting when the
|
|
# toolset has changed and the cache needs to be invalidated).
|
|
#
|
|
# If the DEBUG environment variable is non-empty and the system has `tee`
|
|
# available in its $PATH, the pre-image to the SHA256 hash will be printed to
|
|
# stderr. This is to help developers debug caching issues in depends.
|
|
|
|
# This script explicitly does not `set -e` because id determination is mostly
|
|
# opportunistic: it is fine that things fail, as long as they fail consistently.
|
|
|
|
# Command variables (CC/CXX/AR) which can be blank are invoked with `bash -c`,
|
|
# because the "command not found" error message printed by shells often include
|
|
# the line number, like so:
|
|
#
|
|
# ./depends/gen_id: line 43: --version: command not found
|
|
#
|
|
# By invoking with `bash -c`, we ensure that the line number is always 1
|
|
|
|
(
|
|
# Redirect stderr to stdout
|
|
exec 2>&1
|
|
|
|
echo "BEGIN ALL"
|
|
|
|
# Include any ID salts supplied via command line
|
|
echo "BEGIN ID SALT"
|
|
echo "$@"
|
|
echo "END ID SALT"
|
|
|
|
echo "BEGIN /gnu/store"
|
|
bash -c "ls -1 /gnu/store | sort"
|
|
echo "END /gnu/store"
|
|
|
|
# LINES=\|COLUMNS=\|\|HOSTTYPE=\|OSTYPE=\|MACHTYPE=\|HOSTNAME=
|
|
echo "BEGIN environment"
|
|
bash -c "printenv | sort | grep -v '^\(BASE_CACHE=\|DISTNAME=\|DISTSRC=\|OUTDIR=\|SOURCES_PATH=\|JOBS=\|OPTIONS=\)'"
|
|
echo "END environment"
|
|
|
|
echo "END ALL"
|
|
) | if [ -n "$DEBUG_GENID" ] && command -v tee > /dev/null 2>&1; then
|
|
# When debugging and `tee` is available, output the preimage to stderr
|
|
# in addition to passing through stdin to stdout
|
|
tee >(cat 1>&2)
|
|
else
|
|
# Otherwise, passthrough stdin to stdout
|
|
cat
|
|
fi | ${SHA256SUM} - | cut -d' ' -f1
|