76 lines
1.8 KiB
Bash
Executable File
76 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
codexbar_dsym_dwarf_path() {
|
|
local dsym_path="$1"
|
|
local app_name="$2"
|
|
local dwarf_path="${dsym_path}/Contents/Resources/DWARF/${app_name}"
|
|
|
|
if [[ ! -f "$dwarf_path" ]]; then
|
|
echo "Missing fresh dSYM for ${app_name} at: ${dwarf_path}" >&2
|
|
return 1
|
|
fi
|
|
|
|
printf '%s\n' "$dwarf_path"
|
|
}
|
|
|
|
codexbar_require_dsym_dwarf_for_arch() {
|
|
local dsym_path="$1"
|
|
local app_name="$2"
|
|
local arch="$3"
|
|
local dwarf_path
|
|
|
|
if ! dwarf_path=$(codexbar_dsym_dwarf_path "$dsym_path" "$app_name"); then
|
|
return 1
|
|
fi
|
|
|
|
if ! lipo -archs "$dwarf_path" | tr ' ' '\n' | grep -qx "$arch"; then
|
|
echo "dSYM at ${dwarf_path} does not contain required architecture: ${arch}" >&2
|
|
return 1
|
|
fi
|
|
|
|
printf '%s\n' "$dwarf_path"
|
|
}
|
|
|
|
codexbar_dwarf_uuid_for_arch() {
|
|
local path="$1"
|
|
local arch="$2"
|
|
local uuid
|
|
|
|
uuid=$(dwarfdump --uuid "$path" | awk -v arch="(${arch})" '$1 == "UUID:" && $3 == arch { print $2; exit }')
|
|
if [[ -z "$uuid" ]]; then
|
|
echo "Missing UUID for ${arch} in: ${path}" >&2
|
|
return 1
|
|
fi
|
|
|
|
printf '%s\n' "$uuid"
|
|
}
|
|
|
|
codexbar_verify_dsym_matches_binary() {
|
|
local app_binary="$1"
|
|
local dsym_dwarf="$2"
|
|
shift 2
|
|
local arch app_uuid dsym_uuid
|
|
|
|
if [[ ! -f "$app_binary" ]]; then
|
|
echo "Missing app binary for dSYM UUID verification: ${app_binary}" >&2
|
|
return 1
|
|
fi
|
|
if [[ ! -f "$dsym_dwarf" ]]; then
|
|
echo "Missing dSYM DWARF file for UUID verification: ${dsym_dwarf}" >&2
|
|
return 1
|
|
fi
|
|
|
|
for arch in "$@"; do
|
|
if ! app_uuid=$(codexbar_dwarf_uuid_for_arch "$app_binary" "$arch"); then
|
|
return 1
|
|
fi
|
|
if ! dsym_uuid=$(codexbar_dwarf_uuid_for_arch "$dsym_dwarf" "$arch"); then
|
|
return 1
|
|
fi
|
|
if [[ "$app_uuid" != "$dsym_uuid" ]]; then
|
|
echo "dSYM UUID mismatch for ${arch}: app=${app_uuid}, dSYM=${dsym_uuid}" >&2
|
|
return 1
|
|
fi
|
|
done
|
|
}
|