75 lines
1.8 KiB
Bash
Executable File
75 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# fetch-vendor.sh — download proprietary vendor utilities into iso/vendor.
|
|
#
|
|
# Usage:
|
|
# STORCLI_URL=... STORCLI_SHA256=... \
|
|
# SAS2IRCU_URL=... SAS2IRCU_SHA256=... \
|
|
# SAS3IRCU_URL=... SAS3IRCU_SHA256=... \
|
|
# MSTFLINT_URL=... MSTFLINT_SHA256=... \
|
|
# sh scripts/fetch-vendor.sh
|
|
|
|
set -eu
|
|
|
|
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
OUT_DIR="$ROOT_DIR/iso/vendor"
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
need_cmd() {
|
|
command -v "$1" >/dev/null 2>&1 || { echo "ERROR: required command not found: $1" >&2; exit 1; }
|
|
}
|
|
|
|
need_cmd sha256sum
|
|
|
|
download_to() {
|
|
url="$1"
|
|
out="$2"
|
|
if command -v wget >/dev/null 2>&1; then
|
|
wget -O "$out" "$url"
|
|
return 0
|
|
fi
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -fsSL "$url" -o "$out"
|
|
return 0
|
|
fi
|
|
echo "ERROR: required command not found: wget or curl" >&2
|
|
exit 1
|
|
}
|
|
|
|
fetch_one() {
|
|
name="$1"
|
|
url="$2"
|
|
sha="$3"
|
|
|
|
if [ -z "$url" ] || [ -z "$sha" ]; then
|
|
echo "[vendor] skip $name (URL/SHA not provided)"
|
|
return 0
|
|
fi
|
|
|
|
dst="$OUT_DIR/$name"
|
|
tmp="$dst.tmp"
|
|
|
|
echo "[vendor] downloading $name"
|
|
download_to "$url" "$tmp"
|
|
|
|
got=$(sha256sum "$tmp" | awk '{print $1}')
|
|
want=$(echo "$sha" | tr '[:upper:]' '[:lower:]')
|
|
if [ "$got" != "$want" ]; then
|
|
rm -f "$tmp"
|
|
echo "ERROR: checksum mismatch for $name" >&2
|
|
echo " got: $got" >&2
|
|
echo " want: $want" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mv "$tmp" "$dst"
|
|
chmod +x "$dst" || true
|
|
echo "[vendor] ok: $name"
|
|
}
|
|
|
|
fetch_one "storcli64" "${STORCLI_URL:-}" "${STORCLI_SHA256:-}"
|
|
fetch_one "sas2ircu" "${SAS2IRCU_URL:-}" "${SAS2IRCU_SHA256:-}"
|
|
fetch_one "sas3ircu" "${SAS3IRCU_URL:-}" "${SAS3IRCU_SHA256:-}"
|
|
fetch_one "mstflint" "${MSTFLINT_URL:-}" "${MSTFLINT_SHA256:-}"
|
|
|
|
echo "[vendor] done. output dir: $OUT_DIR"
|