#!/bin/sh export LC_ALL=C set -eu uname_S=$(uname -s 2>/dev/null || echo not) if [ "$uname_S" = "Darwin" ]; then PARAMS_DIR="$HOME/Library/Application Support/ZcashParams" else PARAMS_DIR="$HOME/.zcash-params" fi # Commented out because these are unused; see below. #SPROUT_PKEY_NAME='sprout-proving.key' #SPROUT_VKEY_NAME='sprout-verifying.key' SAPLING_SPEND_NAME='sapling-spend.params' SAPLING_OUTPUT_NAME='sapling-output.params' SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params' DOWNLOAD_URL="https://download.z.cash/downloads" IPFS_HASH="/ipfs/QmXRHVGLQBiKwvNq7c2vPxAKz1zRVmMYbmt7G5TQss7tY7" SHA256CMD="$(command -v sha256sum || echo shasum)" SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')" WGETCMD="$(command -v wget || echo '')" IPFSCMD="$(command -v ipfs || echo '')" CURLCMD="$(command -v curl || echo '')" # fetch methods can be disabled with ZC_DISABLE_SOMETHING=1 ZC_DISABLE_WGET="${ZC_DISABLE_WGET:-}" ZC_DISABLE_IPFS="${ZC_DISABLE_IPFS:-}" ZC_DISABLE_CURL="${ZC_DISABLE_CURL:-}" LOCKFILE=/tmp/fetch_params.lock fetch_wget() { if [ -z "$WGETCMD" ] || [ -n "$ZC_DISABLE_WGET" ]; then return 1 fi cat <&2 < "${dlname}" rm "${dlname}.part.1" "${dlname}.part.2" "$SHA256CMD" $SHA256ARGS -c <&2 exit 1 fi fi unset -v filename unset -v output unset -v dlname unset -v expectedhash } # Use flock to prevent parallel execution. lock() { if [ "$uname_S" = "Darwin" ]; then if shlock -f ${LOCKFILE} -p $$; then return 0 else return 1 fi else # create lock file eval "exec 9>$LOCKFILE" # acquire the lock flock -n 9 \ && return 0 \ || return 1 fi } exit_locked_error() { echo "Only one instance of fetch-params.sh can be run at a time." >&2 exit 1 } main() { lock fetch-params.sh \ || exit_locked_error cat <> "$README_PATH" <