
Most of our build scripts are sourced rather than executed in a subshell, so they inherit our environment. Allow our firmware script to do the same by not exiting when we have no firmware to download, as is the case on arm32. Signed-off-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31781>
54 lines
1.3 KiB
Bash
Executable File
54 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# shellcheck disable=SC2046 # we want to arg-split FIRMWARE_FILES
|
|
# shellcheck disable=SC2086 # as above
|
|
# shellcheck disable=SC2116 # as above
|
|
|
|
set -e
|
|
|
|
ROOTFS=$1
|
|
FIRMWARE_FILES=$2
|
|
|
|
if [ -n "${FIRMWARE_FILES:-}" ]; then
|
|
FIRMWARE=$(jq -s '.' $(echo "$FIRMWARE_FILES"))
|
|
else
|
|
FIRMWARE=""
|
|
fi
|
|
|
|
if ! echo "$FIRMWARE" | jq empty; then
|
|
echo "FIRMWARE contains invalid JSON."
|
|
fi
|
|
|
|
for item in $(echo "$FIRMWARE" | jq -c '.[]'); do
|
|
src=$(echo "$item" | jq -r '.src')
|
|
git_hash=$(echo "$item" | jq -r '.git_hash')
|
|
dst=$(echo "$item" | jq -r '.dst')
|
|
|
|
if [ "$src" = "null" ] || [ "$dst" = "null" ]; then
|
|
echo "Missing src or dst for $item."
|
|
continue
|
|
fi
|
|
|
|
# Remove any trailing slashes from src and dst
|
|
src=${src%/}
|
|
dst=${dst%/}
|
|
|
|
# Remove any leading slash
|
|
dst=${dst#/}
|
|
|
|
if [ "$(echo "$item" | jq '.files | length')" -eq 0 ]; then
|
|
echo "No files specified for $item."
|
|
continue
|
|
fi
|
|
|
|
for file in $(echo "$item" | jq -r '.files[]'); do
|
|
FIRMWARE_SRC_PATH="${src}/${file}"
|
|
if [ "$git_hash" != "null" ]; then
|
|
FIRMWARE_SRC_PATH="${FIRMWARE_SRC_PATH}?h=${git_hash}"
|
|
fi
|
|
FIRMWARE_DST_DIR="${ROOTFS}/${dst}"
|
|
|
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 --create-dirs --output-dir "${FIRMWARE_DST_DIR}" -o "${file}" "${FIRMWARE_SRC_PATH}"
|
|
done
|
|
|
|
done
|