Files
terminalX/vendor/libghostty-spm/Script/merge-xcframework.sh
kid aa92d0e676 初始提交:terminalX 可运行态(M0/M1/M1.5 已真机验证)
- M0: libghostty SSH 终端(渲染/输入/连接)+ 白屏修复(OutputGate) + 会话状态机/自动重连
- M1: tsnet 用户态组网 + SSH-over-tsnet(fd 桥),shell 级真机验证;R5(Go+gvisor+C+++Swift 同进程) retire
- M1.5: tmux -CC 原生 tab(MVP)
- 结构: packages/(TXCore·TXTransport), apps/TerminalX, vendor/(libghostty-spm/libssh2/mbedtls/tsnet-bridge), artifacts/
- 文档: CLAUDE.md + docs/HANDOFF.md(新会话入口)
- 环境: 认证代理→依赖 vendor 本地化;Go 在 ~/.local/go;仅模拟器/未签名
- 待续: M2 mosh, tmux 多 pane, M4 安全(host key/SE)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 10:20:46 +08:00

94 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
cd "$(dirname "$0")/.."
if [ ! -f .root ]; then
echo "[*] malformed project structure"
exit 1
fi
ARTIFACTS_DIR=${1:-}
OUTPUT_XCFRAMEWORK=${2:-}
OUTPUT_ZIP=${3:-}
if [ -z "$ARTIFACTS_DIR" ] || [ -z "$OUTPUT_XCFRAMEWORK" ]; then
echo "Usage: $0 <artifacts_dir> <output_xcframework> [output_zip]"
exit 1
fi
if [ ! -d "$ARTIFACTS_DIR" ]; then
echo "[!] artifacts directory not found: $ARTIFACTS_DIR"
exit 1
fi
XCFRAMEWORK_COMMAND=()
FOUND_VARIANTS=0
verify_headers() {
local header_dir="$1"
if [ ! -f "$header_dir/ghostty.h" ]; then
echo "[!] missing header: $header_dir/ghostty.h"
exit 1
fi
if [ ! -f "$header_dir/module.modulemap" ]; then
echo "[!] missing module map: $header_dir/module.modulemap"
exit 1
fi
}
add_library() {
local variant_dir="$1"
local library_path="$variant_dir/lib/libghostty.a"
local header_dir="$variant_dir/include"
if [ ! -f "$library_path" ]; then
echo "[!] missing library: $library_path"
exit 1
fi
if [ ! -d "$header_dir" ]; then
echo "[!] missing headers: $header_dir"
exit 1
fi
verify_headers "$header_dir"
XCFRAMEWORK_COMMAND+=("-library" "$library_path" "-headers" "$header_dir")
FOUND_VARIANTS=$((FOUND_VARIANTS + 1))
}
for variant_dir in "$ARTIFACTS_DIR"/*; do
[ -d "$variant_dir" ] || continue
[ "$(basename "$variant_dir")" = ".intermediates" ] && continue
add_library "$variant_dir"
done
if [ "$FOUND_VARIANTS" -eq 0 ]; then
echo "[!] no staged variants found in $ARTIFACTS_DIR"
exit 1
fi
mkdir -p "$(dirname "$OUTPUT_XCFRAMEWORK")"
rm -rf "$OUTPUT_XCFRAMEWORK"
echo "[*] creating static-library xcframework: $OUTPUT_XCFRAMEWORK"
xcodebuild -create-xcframework \
-output "$OUTPUT_XCFRAMEWORK" \
"${XCFRAMEWORK_COMMAND[@]}"
./Script/verify-xcframework.sh "$OUTPUT_XCFRAMEWORK"
if [ -n "$OUTPUT_ZIP" ]; then
mkdir -p "$(dirname "$OUTPUT_ZIP")"
rm -f "$OUTPUT_ZIP"
(
cd "$(dirname "$OUTPUT_XCFRAMEWORK")"
ditto -c -k --sequesterRsrc --keepParent "$(basename "$OUTPUT_XCFRAMEWORK")" "$(basename "$OUTPUT_ZIP")"
)
mv "$(dirname "$OUTPUT_XCFRAMEWORK")/$(basename "$OUTPUT_ZIP")" "$OUTPUT_ZIP"
./Script/verify-xcframework.sh "$OUTPUT_ZIP"
echo "[*] packed xcframework zip: $OUTPUT_ZIP"
fi