m323/Sources/Aufgabe6/Aufgabe6.xcodeproj/rules_xcodeproj/bazel/copy_dsyms.sh
cediackermann b1968074b6
build: generate per-package and aggregate Xcode projects
Add rules_xcodeproj targets to each package BUILD plus a root m323
project, with extra_files filegroups so the full source tree shows in
Xcode. Ignore Scala/Metals build dirs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 14:00:40 +02:00

74 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
function patch_dsym() {
local dsym_name="$1"
shopt -s extglob
local binary_name="${dsym_name%.dSYM}"
binary_name="${binary_name%@(.app|.appex|.bundle|.dext|.kext|.framework|.pluginkit|.systemextension|.xctest|.xpc)}"
shopt +s extglob
local binary_path="${dsym_name}/Contents/Resources/DWARF/${binary_name}"
if [[ ! -f "$binary_path" ]]; then
echo "dSYM DWARF ${binary_path} does not exist." \
"Skip dSYM patch."
return 1
fi
local dwarf_uuid
dwarf_uuid=$(dwarfdump --uuid "${binary_path}" | cut -d ' ' -f 2)
if [[ -z "${dwarf_uuid// /}" ]]; then
echo "Failed to get dSYM uuid." \
"Skip dSYM patch."
return 1
fi
cat > "${dsym_name}/Contents/Resources/${dwarf_uuid}.plist" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
<key>DBGVersion</key>
<string>3</string>
<key>DBGSourcePathRemapping</key>
<dict>
<key>./bazel-out/</key>
<string>$BAZEL_OUT/</string>
<key>./external/</key>
<string>$BAZEL_EXTERNAL/</string>
<key>./</key>
<string>$SRCROOT/</string>
</dict>
</dict>
</plist>
EOF
}
readonly rsync="$BAZEL_INTEGRATION_DIR/rsync"
if [[ -n "${BAZEL_OUTPUTS_DSYM:-}" ]]; then
cd "${BAZEL_OUT%/*}"
# shellcheck disable=SC2046
"$rsync" \
--copy-links \
--recursive \
--times \
--archive \
--delete \
${exclude_list:+--exclude-from="$exclude_list"} \
--perms \
--chmod=u+w \
--out-format="%n%L" \
$(xargs -n1 <<< "$BAZEL_OUTPUTS_DSYM") \
"$TARGET_BUILD_DIR"
cd "${TARGET_BUILD_DIR}"
export -f patch_dsym
# shellcheck disable=SC2016
xargs -n1 sh -c 'patch_dsym $(basename "$1")' _ \
<<< "$BAZEL_OUTPUTS_DSYM"
fi