diff --git a/tools/ci/mac_setup.sh b/tools/ci/mac_setup.sh index 6577a9ae..05720df7 100644 --- a/tools/ci/mac_setup.sh +++ b/tools/ci/mac_setup.sh @@ -80,7 +80,9 @@ PYEOF log "自动登录已配置:开机直接进入 ${CI_USER} 图形会话(日常使用=快速用户切换到本人账户)" fi -# ── 3. Godot macOS 版 → /usr/local/bin/godot ── +# ── 3. Godot macOS 版 → 完整 .app 装 /usr/local/lib + /usr/local/bin/godot 包装转发 ── +# 纪律:官方签名封 bundle 的 Info.plist——从 .app 抽裸二进制会被 taskgated 判 +# 「Code Signature Invalid」SIGKILL(2026-11-03 实证),必须整 bundle 安装保持签名校验路径。 if /usr/local/bin/godot --version >/dev/null 2>&1 && /usr/local/bin/godot --version 2>/dev/null | grep -q "$GODOT_VER"; then log "Godot ${GODOT_VER} 已在位,跳过" else @@ -88,7 +90,7 @@ else SRC_ZIP="/Users/${INVOKER}/godot-linux/Godot_v${GODOT_VER}-stable_macos.universal.zip" if [ -n "$GODOT_ZIP" ] && [ -s "$GODOT_ZIP" ]; then ZIP="$GODOT_ZIP"; log "使用本地 zip: $ZIP" - elif [ -s "$SRC_ZIP" ]; then + elif [ -z "$GODOT_ZIP" ] && [ -s "$SRC_ZIP" ]; then ZIP="$SRC_ZIP"; log "复用已下载 zip: $ZIP" else ZIP="$(mktemp "${TMPDIR:-/tmp}/godot_mac_XXXXXX")" # macOS BSD mktemp 禁 X 后带后缀 @@ -106,8 +108,14 @@ else TMPD="$(mktemp -d)" unzip -tq "$ZIP" >/dev/null # 双保险:本地复用的 zip 同样验结构 unzip -q -o "$ZIP" -d "$TMPD" - install -m 0755 "${TMPD}/Godot.app/Contents/MacOS/Godot" /usr/local/bin/godot - xattr -dr com.apple.quarantine /usr/local/bin/godot 2>/dev/null || true + rm -rf "/usr/local/lib/Godot_ci.app" + cp -R "${TMPD}/Godot.app" "/usr/local/lib/Godot_ci.app" + xattr -dr com.apple.quarantine "/usr/local/lib/Godot_ci.app" 2>/dev/null || true + cat > /usr/local/bin/godot <<'EOF' +#!/bin/bash +exec /usr/local/lib/Godot_ci.app/Contents/MacOS/Godot "$@" +EOF + chmod 0755 /usr/local/bin/godot rm -rf "$TMPD" log "Godot 已装:$(/usr/local/bin/godot --version 2>/dev/null | head -1)" fi @@ -142,8 +150,8 @@ fi if sudo -u "$CI_USER" python3 -c "import PIL" >/dev/null 2>&1; then log "Pillow 已在位(ci-runner),跳过" else - log "为 ci-runner 安装 Pillow(阿里源)" - sudo -u "$CI_USER" python3 -m pip install --user pillow \ + log "为 ci-runner 安装 Pillow(阿里源;-H 修 HOME——sudo -u 默认保留调用者 HOME 会写错缓存目录)" + sudo -H -u "$CI_USER" python3 -m pip install --user pillow \ -i https://mirrors.aliyun.com/pypi/simple/ --quiet \ || die "Pillow 安装失败" fi