Files
ELY-Browser/scripts/verify_release_artifacts.sh
T

50 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
target_dir="${CARGO_TARGET_DIR:-${repo_root}/target}"
case "${target_dir}" in
/*|[A-Za-z]:[\\/]*) ;;
*) target_dir="${repo_root}/${target_dir}" ;;
esac
source "${repo_root}/scripts/release_build_env.sh"
[[ "$#" -gt 0 ]] || { echo "usage: $0 <release-artifact>..." >&2; exit 2; }
scan_value() {
local artifact="$1"
local label="$2"
local value="$3"
[[ -n "${value}" ]] || return 0
if LC_ALL=C grep -aFq -- "${value}" "${artifact}"; then
echo "release artifact contains ${label}: ${artifact}" >&2
return 1
fi
}
scan_path() {
local artifact="$1"
local label="$2"
local path="$3"
local variant
while IFS= read -r variant; do
scan_value "${artifact}" "${label}" "${variant}"
done < <(ely_path_variants "${path}")
}
cargo_home="${CARGO_HOME:-${HOME}/.cargo}"
rustup_home="${RUSTUP_HOME:-${HOME}/.rustup}"
rust_sysroot="$(rustc --print sysroot)"
for artifact in "$@"; do
[[ -f "${artifact}" ]] || { echo "missing release artifact: ${artifact}" >&2; exit 1; }
scan_path "${artifact}" "workspace path" "${repo_root}"
scan_path "${artifact}" "Cargo home path" "${cargo_home}"
scan_path "${artifact}" "Rustup home path" "${rustup_home}"
scan_path "${artifact}" "Rust sysroot path" "${rust_sysroot}"
scan_path "${artifact}" "target path" "${target_dir}"
scan_value "${artifact}" "embedded Metal source marker" "-frecord-sources=yes"
scan_value "${artifact}" "embedded Metal compiler command" "metal --driver-mode=metal"
done