From a98221fc759bd441f39f43327bb881c2fa1818fc Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 16 Jun 2026 02:28:44 +0800 Subject: [PATCH 1/4] Add xcframework backend configuration metadata --- Scripts/build_xcframework.sh | 90 +++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/Scripts/build_xcframework.sh b/Scripts/build_xcframework.sh index 49970a35c..181d64327 100755 --- a/Scripts/build_xcframework.sh +++ b/Scripts/build_xcframework.sh @@ -8,7 +8,6 @@ set -e export OPENSWIFTUI_LIBRARY_TYPE export OPENSWIFTUI_USE_LOCAL_DEPS export OPENSWIFTUI_SWIFTUI_RENDERER -# TODO: replace AG with Compute or OAG by default SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd -P)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" @@ -40,8 +39,27 @@ DEFAULT_FRAMEWORK_NAMES=( "OpenSwiftUI" ) +print_usage() { + cat <<'USAGE' +Usage: Scripts/build_xcframework.sh [options] [framework ...] + +Options: + --sdk Build for an SDK. May be passed multiple times. + --archs Override architectures for the previous --sdk. + --debug Keep release metadata and copy dSYMs. + --compute Build OpenAttributeGraphShims with the Compute source backend. + --skip-tuist-install Skip tuist install. + --framework Build one framework. May be passed multiple times. + --help Show this help. +USAGE +} + while [[ $# -gt 0 ]]; do case "$1" in + --help|-h) + print_usage + exit 0 + ;; --sdk) SDKS+=("$2") SDK_ARCHS+=("") @@ -57,6 +75,17 @@ while [[ $# -gt 0 ]]; do DEBUG_MODE=true shift ;; + --compute) + OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH=0 + OPENSWIFTUI_OPENATTRIBUTESHIMS_DANCEUIGRAPH=0 + OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE=1 + OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE_BINARY=0 + export OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH + export OPENSWIFTUI_OPENATTRIBUTESHIMS_DANCEUIGRAPH + export OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE + export OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE_BINARY + shift + ;; --skip-tuist-install) RUN_TUIST_INSTALL=false shift @@ -94,6 +123,37 @@ if [ "${OPENSWIFTUI_SKIP_TUIST_INSTALL:-0}" = "1" ]; then RUN_TUIST_INSTALL=false fi +env_flag_enabled() { + [ "${1:-0}" = "1" ] +} + +resolve_ag_backend() { + if [ -n "${OPENSWIFTUI_AG_BACKEND_NAME:-}" ]; then + echo "$OPENSWIFTUI_AG_BACKEND_NAME" + elif env_flag_enabled "${OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE:-0}"; then + echo "Compute" + elif env_flag_enabled "${OPENSWIFTUI_OPENATTRIBUTESHIMS_DANCEUIGRAPH:-0}"; then + echo "DanceUIGraph" + elif env_flag_enabled "${OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH:-0}"; then + echo "AttributeGraph" + else + echo "OpenAttributeGraph" + fi +} + +resolve_renderer_backend() { + if [ -n "${OPENSWIFTUI_RENDERER_BACKEND_NAME:-}" ]; then + echo "$OPENSWIFTUI_RENDERER_BACKEND_NAME" + elif env_flag_enabled "${OPENSWIFTUI_SWIFTUI_RENDERER:-0}"; then + echo "SwiftUI" + else + echo "OpenSwiftUI" + fi +} + +BUILD_AG_BACKEND="$(resolve_ag_backend)" +BUILD_RENDERER_BACKEND="$(resolve_renderer_backend)" + if ! command -v tuist >/dev/null 2>&1; then echo "Error: tuist is required to generate $XCODEPROJ." exit 1 @@ -239,6 +299,8 @@ for i in "${!SDKS[@]}"; do done echo "Debug mode: $DEBUG_MODE" echo "Frameworks: ${FRAMEWORK_NAMES[*]}" +echo "AG backend: $BUILD_AG_BACKEND" +echo "Renderer backend: $BUILD_RENDERER_BACKEND" sdk_destination() { case "$1" in @@ -386,6 +448,29 @@ create_xcframework() { xcodebuild -create-xcframework "${create_args[@]}" -output "$PROJECT_BUILD_DIR/$scheme.xcframework" } +stamp_xcframework_configuration() { + local xcframework_path="$1" + local info_plist="$xcframework_path/Info.plist" + local use_local_deps=false + + if [ ! -f "$info_plist" ]; then + echo "Error: Expected $info_plist to exist." + exit 1 + fi + + if env_flag_enabled "$OPENSWIFTUI_USE_LOCAL_DEPS"; then + use_local_deps=true + fi + + /usr/libexec/PlistBuddy -c "Delete :OpenSwiftUIBuildConfiguration" "$info_plist" >/dev/null 2>&1 || true + /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration dict" "$info_plist" + /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:AGBackend string $BUILD_AG_BACKEND" "$info_plist" + /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:RendererBackend string $BUILD_RENDERER_BACKEND" "$info_plist" + /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:LibraryType string $OPENSWIFTUI_LIBRARY_TYPE" "$info_plist" + /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:UsesLocalDependencies bool $use_local_deps" "$info_plist" + plutil -convert xml1 "$info_plist" +} + copy_debug_symbols() { local scheme="$1" @@ -417,6 +502,9 @@ for scheme in "${FRAMEWORK_NAMES[@]}"; do build_framework "${SDKS[$i]}" "$(sdk_destination "${SDKS[$i]}")" "$scheme" "${SDK_ARCHS[$i]}" done create_xcframework "$scheme" + if [ "$scheme" = "OpenSwiftUI" ]; then + stamp_xcframework_configuration "$PROJECT_BUILD_DIR/$scheme.xcframework" + fi copy_debug_symbols "$scheme" echo "Created $PROJECT_BUILD_DIR/$scheme.xcframework" done From e8f6cbbc536fbee3535941b81c5d80d2dc7f53e9 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 22 Jun 2026 00:56:18 +0800 Subject: [PATCH 2/4] Add Compute XCFramework release assets --- .github/actions/build-xcframework/action.yml | 92 +++++++++++++++----- .github/workflows/release.yml | 86 +++++++++++++++--- Scripts/CI/compute_setup.sh | 38 ++++++++ Scripts/CI/darwin_setup_build.sh | 1 + Scripts/build_xcframework.sh | 34 ++++++-- 5 files changed, 210 insertions(+), 41 deletions(-) create mode 100755 Scripts/CI/compute_setup.sh diff --git a/.github/actions/build-xcframework/action.yml b/.github/actions/build-xcframework/action.yml index 34e12c8b4..0de8d9267 100644 --- a/.github/actions/build-xcframework/action.yml +++ b/.github/actions/build-xcframework/action.yml @@ -44,6 +44,27 @@ outputs: checksum_OpenRenderBoxShims: description: 'Checksum for OpenRenderBoxShims.xcframework.zip' value: ${{ steps.checksums.outputs.checksum_OpenRenderBoxShims }} + checksum_OpenSwiftUI_Compute: + description: 'Checksum for OpenSwiftUI.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenSwiftUI_Compute }} + checksum_OpenSwiftUICore_Compute: + description: 'Checksum for OpenSwiftUICore.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenSwiftUICore_Compute }} + checksum_OpenAttributeGraphShims_Compute: + description: 'Checksum for OpenAttributeGraphShims.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenAttributeGraphShims_Compute }} + checksum_OpenCoreGraphicsShims_Compute: + description: 'Checksum for OpenCoreGraphicsShims.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenCoreGraphicsShims_Compute }} + checksum_OpenObservation_Compute: + description: 'Checksum for OpenObservation.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenObservation_Compute }} + checksum_OpenQuartzCoreShims_Compute: + description: 'Checksum for OpenQuartzCoreShims.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenQuartzCoreShims_Compute }} + checksum_OpenRenderBoxShims_Compute: + description: 'Checksum for OpenRenderBoxShims.Compute.xcframework.zip' + value: ${{ steps.checksums.outputs.checksum_OpenRenderBoxShims_Compute }} runs: using: 'composite' @@ -69,6 +90,9 @@ runs: - name: Build XCFrameworks run: Scripts/build_xcframework.sh OpenSwiftUI shell: bash + - name: Build Compute XCFrameworks + run: Scripts/build_xcframework.sh --compute --output-suffix Compute OpenSwiftUI + shell: bash - name: Code sign XCFrameworks if: ${{ inputs.signing-certificate-base64 != '' }} uses: ./.github/actions/codesign-xcframework @@ -83,6 +107,13 @@ runs: build/OpenObservation.xcframework build/OpenQuartzCoreShims.xcframework build/OpenRenderBoxShims.xcframework + build/OpenSwiftUI.Compute.xcframework + build/OpenSwiftUICore.Compute.xcframework + build/OpenAttributeGraphShims.Compute.xcframework + build/OpenCoreGraphicsShims.Compute.xcframework + build/OpenObservation.Compute.xcframework + build/OpenQuartzCoreShims.Compute.xcframework + build/OpenRenderBoxShims.Compute.xcframework - name: Compute Checksums and Generate Summary id: checksums shell: bash @@ -100,26 +131,47 @@ runs: OpenRenderBoxShims ) BODY="" - echo "### XCFramework Binary Targets" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo '```swift' >> $GITHUB_STEP_SUMMARY - for fw in "${FRAMEWORKS[@]}"; do - if [ -n "$TAG_NAME" ]; then - zip -ry "$fw.xcframework.zip" "$fw.xcframework" - CHECKSUM=$(swift package compute-checksum "$fw.xcframework.zip") - echo "checksum_${fw}=${CHECKSUM}" >> $GITHUB_OUTPUT - ENTRY=$(printf '.binaryTarget(\n name: "%s",\n url: "https://github.com/OpenSwiftUIProject/OpenSwiftUI/releases/download/%s/%s.xcframework.zip",\n checksum: "%s"\n),' "$fw" "$TAG_NAME" "$fw" "$CHECKSUM") - else - ENTRY=$(printf '.binaryTarget(\n name: "%s",\n path: "%s.xcframework"\n),' "$fw" "$fw") - fi - echo "$ENTRY" >> $GITHUB_STEP_SUMMARY - if [ -n "$BODY" ]; then - BODY=$(printf '%s\n%s' "$BODY" "$ENTRY") - else - BODY="$ENTRY" - fi - done - echo '```' >> $GITHUB_STEP_SUMMARY + emit_binary_targets() { + local suffix="$1" + local title="$2" + local collect_body="$3" + + echo "### ${title}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo '```swift' >> $GITHUB_STEP_SUMMARY + for fw in "${FRAMEWORKS[@]}"; do + local artifact="$fw" + local checksum_key="$fw" + if [ -n "$suffix" ]; then + artifact="$fw.$suffix" + checksum_key="${fw}_${suffix}" + fi + + if [ -n "$TAG_NAME" ]; then + rm -f "$artifact.xcframework.zip" + zip -ry "$artifact.xcframework.zip" "$artifact.xcframework" + CHECKSUM=$(swift package compute-checksum "$artifact.xcframework.zip") + echo "checksum_${checksum_key}=${CHECKSUM}" >> $GITHUB_OUTPUT + ENTRY=$(printf '.binaryTarget(\n name: "%s",\n url: "https://github.com/OpenSwiftUIProject/OpenSwiftUI/releases/download/%s/%s.xcframework.zip",\n checksum: "%s"\n),' "$fw" "$TAG_NAME" "$artifact" "$CHECKSUM") + else + ENTRY=$(printf '.binaryTarget(\n name: "%s",\n path: "%s.xcframework"\n),' "$fw" "$artifact") + fi + echo "$ENTRY" >> $GITHUB_STEP_SUMMARY + if [ "$collect_body" = true ]; then + if [ -n "$BODY" ]; then + BODY=$(printf '%s\n%s' "$BODY" "$ENTRY") + else + BODY="$ENTRY" + fi + fi + done + echo '```' >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + } + + emit_binary_targets "" "XCFramework Binary Targets" true + emit_binary_targets "Compute" "Compute XCFramework Binary Targets" false + echo "body<> $GITHUB_OUTPUT echo "$BODY" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e283aff5b..cc882f42f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,13 @@ jobs: checksum_OpenObservation: ${{ steps.build.outputs.checksum_OpenObservation }} checksum_OpenQuartzCoreShims: ${{ steps.build.outputs.checksum_OpenQuartzCoreShims }} checksum_OpenRenderBoxShims: ${{ steps.build.outputs.checksum_OpenRenderBoxShims }} + checksum_OpenSwiftUI_Compute: ${{ steps.build.outputs.checksum_OpenSwiftUI_Compute }} + checksum_OpenSwiftUICore_Compute: ${{ steps.build.outputs.checksum_OpenSwiftUICore_Compute }} + checksum_OpenAttributeGraphShims_Compute: ${{ steps.build.outputs.checksum_OpenAttributeGraphShims_Compute }} + checksum_OpenCoreGraphicsShims_Compute: ${{ steps.build.outputs.checksum_OpenCoreGraphicsShims_Compute }} + checksum_OpenObservation_Compute: ${{ steps.build.outputs.checksum_OpenObservation_Compute }} + checksum_OpenQuartzCoreShims_Compute: ${{ steps.build.outputs.checksum_OpenQuartzCoreShims_Compute }} + checksum_OpenRenderBoxShims_Compute: ${{ steps.build.outputs.checksum_OpenRenderBoxShims_Compute }} env: OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1 OPENSWIFTUI_USE_LOCAL_DEPS: 1 @@ -64,6 +71,13 @@ jobs: CHECKSUM_OpenObservation: ${{ needs.build-xcframeworks.outputs.checksum_OpenObservation }} CHECKSUM_OpenQuartzCoreShims: ${{ needs.build-xcframeworks.outputs.checksum_OpenQuartzCoreShims }} CHECKSUM_OpenRenderBoxShims: ${{ needs.build-xcframeworks.outputs.checksum_OpenRenderBoxShims }} + CHECKSUM_OpenSwiftUI_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenSwiftUI_Compute }} + CHECKSUM_OpenSwiftUICore_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenSwiftUICore_Compute }} + CHECKSUM_OpenAttributeGraphShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenAttributeGraphShims_Compute }} + CHECKSUM_OpenCoreGraphicsShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenCoreGraphicsShims_Compute }} + CHECKSUM_OpenObservation_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenObservation_Compute }} + CHECKSUM_OpenQuartzCoreShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenQuartzCoreShims_Compute }} + CHECKSUM_OpenRenderBoxShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenRenderBoxShims_Compute }} run: | if [ -z "$BINARY_REPO_PAT" ]; then echo "::notice::BINARY_REPO_PAT not set, skipping binary repo update" @@ -73,24 +87,68 @@ jobs: cd OpenSwiftUI-spm git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - sed \ - -e "s|{{VERSION}}|${VERSION}|g" \ - -e "s|{{CHECKSUM_OpenSwiftUI}}|${CHECKSUM_OpenSwiftUI}|g" \ - -e "s|{{CHECKSUM_OpenSwiftUICore}}|${CHECKSUM_OpenSwiftUICore}|g" \ - -e "s|{{CHECKSUM_OpenAttributeGraphShims}}|${CHECKSUM_OpenAttributeGraphShims}|g" \ - -e "s|{{CHECKSUM_OpenCoreGraphicsShims}}|${CHECKSUM_OpenCoreGraphicsShims}|g" \ - -e "s|{{CHECKSUM_OpenObservation}}|${CHECKSUM_OpenObservation}|g" \ - -e "s|{{CHECKSUM_OpenQuartzCoreShims}}|${CHECKSUM_OpenQuartzCoreShims}|g" \ - -e "s|{{CHECKSUM_OpenRenderBoxShims}}|${CHECKSUM_OpenRenderBoxShims}|g" \ - Package.swift.template > Package.swift + + render_package() { + local checksum_OpenSwiftUI="$1" + local checksum_OpenSwiftUICore="$2" + local checksum_OpenAttributeGraphShims="$3" + local checksum_OpenCoreGraphicsShims="$4" + local checksum_OpenObservation="$5" + local checksum_OpenQuartzCoreShims="$6" + local checksum_OpenRenderBoxShims="$7" + + sed \ + -e "s|{{VERSION}}|${VERSION}|g" \ + -e "s|{{CHECKSUM_OpenSwiftUI}}|${checksum_OpenSwiftUI}|g" \ + -e "s|{{CHECKSUM_OpenSwiftUICore}}|${checksum_OpenSwiftUICore}|g" \ + -e "s|{{CHECKSUM_OpenAttributeGraphShims}}|${checksum_OpenAttributeGraphShims}|g" \ + -e "s|{{CHECKSUM_OpenCoreGraphicsShims}}|${checksum_OpenCoreGraphicsShims}|g" \ + -e "s|{{CHECKSUM_OpenObservation}}|${checksum_OpenObservation}|g" \ + -e "s|{{CHECKSUM_OpenQuartzCoreShims}}|${checksum_OpenQuartzCoreShims}|g" \ + -e "s|{{CHECKSUM_OpenRenderBoxShims}}|${checksum_OpenRenderBoxShims}|g" \ + Package.swift.template > Package.swift + } + + commit_package_if_needed() { + local message="$1" + git add Package.swift + if git diff --cached --quiet; then + echo "No changes for $(git branch --show-current)" + return 1 + fi + git commit -m "$message" + } + + render_package \ + "$CHECKSUM_OpenSwiftUI" \ + "$CHECKSUM_OpenSwiftUICore" \ + "$CHECKSUM_OpenAttributeGraphShims" \ + "$CHECKSUM_OpenCoreGraphicsShims" \ + "$CHECKSUM_OpenObservation" \ + "$CHECKSUM_OpenQuartzCoreShims" \ + "$CHECKSUM_OpenRenderBoxShims" echo "Generated Package.swift:" head -50 Package.swift - git add Package.swift - git diff --cached --quiet && echo "No changes" && exit 0 - git commit -m "Update to ${VERSION} with code-signed XCFrameworks" - git tag "${VERSION}" + if commit_package_if_needed "Update to ${VERSION} with code-signed XCFrameworks"; then + git tag "${VERSION}" + fi git push origin main --tags + git fetch origin --prune + git switch --track origin/compute + render_package \ + "$CHECKSUM_OpenSwiftUI_Compute" \ + "$CHECKSUM_OpenSwiftUICore_Compute" \ + "$CHECKSUM_OpenAttributeGraphShims_Compute" \ + "$CHECKSUM_OpenCoreGraphicsShims_Compute" \ + "$CHECKSUM_OpenObservation_Compute" \ + "$CHECKSUM_OpenQuartzCoreShims_Compute" \ + "$CHECKSUM_OpenRenderBoxShims_Compute" + echo "Generated Compute Package.swift:" + head -50 Package.swift + commit_package_if_needed "Update Compute to ${VERSION} with code-signed XCFrameworks" || true + git push origin compute + release-notes: uses: ./.github/workflows/release_notes.yml needs: update-binary-repo diff --git a/Scripts/CI/compute_setup.sh b/Scripts/CI/compute_setup.sh new file mode 100755 index 000000000..c80412072 --- /dev/null +++ b/Scripts/CI/compute_setup.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# A `realpath` alternative using the default C implementation. +filepath() { + [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" +} + +REPO_ROOT="$(dirname $(dirname $(dirname $(filepath $0))))" + +clone_checkout_compute() { + cd $REPO_ROOT + revision=$(Scripts/CI/get_revision.sh compute) + cd .. + if [ ! -d Compute ]; then + gh repo clone OpenSwiftUIProject/Compute + cd Compute + else + echo "Compute already exists, skipping clone." + cd Compute + git fetch --all --quiet + git stash --quiet || true + git reset --hard --quiet origin/main + fi + if [ -n "$revision" ]; then + git checkout --quiet "$revision" + else + echo "No pinned revision for Compute, using default branch." + fi +} + +update_compute() { + cd $REPO_ROOT/../Compute + git submodule sync --recursive --quiet + git submodule update --init --recursive +} + +clone_checkout_compute +update_compute diff --git a/Scripts/CI/darwin_setup_build.sh b/Scripts/CI/darwin_setup_build.sh index f5e00a0ac..15ed5ca46 100755 --- a/Scripts/CI/darwin_setup_build.sh +++ b/Scripts/CI/darwin_setup_build.sh @@ -10,6 +10,7 @@ cd $REPO_ROOT # The order of these scripts matters. # The more foundational frameworks should be set up last. +Scripts/CI/compute_setup.sh Scripts/CI/openattributegraph_setup.sh Scripts/CI/openrenderbox_setup.sh Scripts/CI/opencoregraphics_setup.sh diff --git a/Scripts/build_xcframework.sh b/Scripts/build_xcframework.sh index 181d64327..119f7159b 100755 --- a/Scripts/build_xcframework.sh +++ b/Scripts/build_xcframework.sh @@ -27,6 +27,7 @@ SDK_ARCHS=() DEBUG_MODE=false RUN_TUIST_INSTALL=true EXPLICIT_FRAMEWORK_NAMES=false +OUTPUT_SUFFIX="" FRAMEWORK_NAMES=() DEFAULT_FRAMEWORK_NAMES=( @@ -48,6 +49,7 @@ Options: --archs Override architectures for the previous --sdk. --debug Keep release metadata and copy dSYMs. --compute Build OpenAttributeGraphShims with the Compute source backend. + --output-suffix Append a suffix to generated xcframework bundle names. --skip-tuist-install Skip tuist install. --framework Build one framework. May be passed multiple times. --help Show this help. @@ -86,6 +88,10 @@ while [[ $# -gt 0 ]]; do export OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE_BINARY shift ;; + --output-suffix) + OUTPUT_SUFFIX="$2" + shift 2 + ;; --skip-tuist-install) RUN_TUIST_INSTALL=false shift @@ -299,6 +305,9 @@ for i in "${!SDKS[@]}"; do done echo "Debug mode: $DEBUG_MODE" echo "Frameworks: ${FRAMEWORK_NAMES[*]}" +if [ -n "$OUTPUT_SUFFIX" ]; then + echo "Output suffix: $OUTPUT_SUFFIX" +fi echo "AG backend: $BUILD_AG_BACKEND" echo "Renderer backend: $BUILD_RENDERER_BACKEND" @@ -317,6 +326,15 @@ framework_path() { echo "$archive_path/Products/Library/Frameworks/$scheme.framework" } +xcframework_path() { + local scheme="$1" + if [ -n "$OUTPUT_SUFFIX" ]; then + echo "$PROJECT_BUILD_DIR/$scheme.$OUTPUT_SUFFIX.xcframework" + else + echo "$PROJECT_BUILD_DIR/$scheme.xcframework" + fi +} + framework_modules_path() { local framework="$1" if [ -d "$framework/Versions" ]; then @@ -437,15 +455,17 @@ build_framework() { create_xcframework() { local scheme="$1" + local output_path + output_path="$(xcframework_path "$scheme")" - rm -rf "$PROJECT_BUILD_DIR/$scheme.xcframework" + rm -rf "$output_path" local create_args=() for sdk in "${SDKS[@]}"; do create_args+=(-framework "$(framework_path "$PROJECT_BUILD_DIR/$scheme-$sdk.xcarchive" "$scheme")") done - xcodebuild -create-xcframework "${create_args[@]}" -output "$PROJECT_BUILD_DIR/$scheme.xcframework" + xcodebuild -create-xcframework "${create_args[@]}" -output "$output_path" } stamp_xcframework_configuration() { @@ -482,9 +502,9 @@ copy_debug_symbols() { for sdk in "${SDKS[@]}"; do local local_dsym_dir="" case "$sdk" in - iphonesimulator) local_dsym_dir=$(ls -d "$PROJECT_BUILD_DIR/$scheme.xcframework"/ios-*simulator 2>/dev/null | head -1) ;; - iphoneos) local_dsym_dir=$(ls -d "$PROJECT_BUILD_DIR/$scheme.xcframework"/ios-arm64 2>/dev/null | head -1) ;; - macosx) local_dsym_dir=$(ls -d "$PROJECT_BUILD_DIR/$scheme.xcframework"/macos-* 2>/dev/null | head -1) ;; + iphonesimulator) local_dsym_dir=$(ls -d "$(xcframework_path "$scheme")"/ios-*simulator 2>/dev/null | head -1) ;; + iphoneos) local_dsym_dir=$(ls -d "$(xcframework_path "$scheme")"/ios-arm64 2>/dev/null | head -1) ;; + macosx) local_dsym_dir=$(ls -d "$(xcframework_path "$scheme")"/macos-* 2>/dev/null | head -1) ;; esac if [ -n "$local_dsym_dir" ] && [ -d "$PROJECT_BUILD_DIR/$scheme-$sdk.xcarchive/dSYMs" ]; then @@ -503,10 +523,10 @@ for scheme in "${FRAMEWORK_NAMES[@]}"; do done create_xcframework "$scheme" if [ "$scheme" = "OpenSwiftUI" ]; then - stamp_xcframework_configuration "$PROJECT_BUILD_DIR/$scheme.xcframework" + stamp_xcframework_configuration "$(xcframework_path "$scheme")" fi copy_debug_symbols "$scheme" - echo "Created $PROJECT_BUILD_DIR/$scheme.xcframework" + echo "Created $(xcframework_path "$scheme")" done if [ "$DEBUG_MODE" = false ]; then From b1c83e17d59c0d1b424856bb6ff42177defa6672 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 22 Jun 2026 01:00:49 +0800 Subject: [PATCH 3/4] Stamp backend metadata in framework Info plists --- Package.swift | 27 ++++++++++++++++++++++++++- Scripts/build_xcframework.sh | 26 -------------------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Package.swift b/Package.swift index ad3ee3b08..b120cf6cf 100644 --- a/Package.swift +++ b/Package.swift @@ -944,6 +944,28 @@ if swiftCryptoCondition { #if TUIST import struct ProjectDescription.PackageSettings import enum ProjectDescription.Product +import enum ProjectDescription.SettingValue +import typealias ProjectDescription.SettingsDictionary + +let openSwiftUIBuildAGBackend: String +if let configuredAGBackend = envStringValue("AG_BACKEND_NAME") { + openSwiftUIBuildAGBackend = configuredAGBackend +} else if computeCondition { + openSwiftUIBuildAGBackend = "Compute" +} else if danceUIGraphCondition { + openSwiftUIBuildAGBackend = "DanceUIGraph" +} else if attributeGraphCondition { + openSwiftUIBuildAGBackend = "AttributeGraph" +} else { + openSwiftUIBuildAGBackend = "OpenAttributeGraph" +} +let openSwiftUIBuildRendererBackend = envStringValue("RENDERER_BACKEND_NAME") ?? (swiftUIRenderCondition ? "SwiftUI" : "OpenSwiftUI") +let openSwiftUITargetSettings: SettingsDictionary = [ + "INFOPLIST_KEY_OpenSwiftUIAGBackend": .string(openSwiftUIBuildAGBackend), + "INFOPLIST_KEY_OpenSwiftUIRendererBackend": .string(openSwiftUIBuildRendererBackend), + "INFOPLIST_KEY_OpenSwiftUILibraryType": .string(configuredLibraryType ?? "automatic"), + "INFOPLIST_KEY_OpenSwiftUIUsesLocalDependencies": .string(useLocalDeps ? "YES" : "NO"), +] let packageSettings = PackageSettings( productTypes: [ @@ -961,6 +983,9 @@ let packageSettings = PackageSettings( "OpenRenderBoxShims": ProjectDescription.Product.staticFramework, "SymbolLocator": ProjectDescription.Product.staticFramework, ], - baseProductType: ProjectDescription.Product.staticFramework + baseProductType: ProjectDescription.Product.staticFramework, + targetSettings: [ + "OpenSwiftUI": .settings(base: openSwiftUITargetSettings), + ] ) #endif diff --git a/Scripts/build_xcframework.sh b/Scripts/build_xcframework.sh index 119f7159b..e57c7552e 100755 --- a/Scripts/build_xcframework.sh +++ b/Scripts/build_xcframework.sh @@ -468,29 +468,6 @@ create_xcframework() { xcodebuild -create-xcframework "${create_args[@]}" -output "$output_path" } -stamp_xcframework_configuration() { - local xcframework_path="$1" - local info_plist="$xcframework_path/Info.plist" - local use_local_deps=false - - if [ ! -f "$info_plist" ]; then - echo "Error: Expected $info_plist to exist." - exit 1 - fi - - if env_flag_enabled "$OPENSWIFTUI_USE_LOCAL_DEPS"; then - use_local_deps=true - fi - - /usr/libexec/PlistBuddy -c "Delete :OpenSwiftUIBuildConfiguration" "$info_plist" >/dev/null 2>&1 || true - /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration dict" "$info_plist" - /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:AGBackend string $BUILD_AG_BACKEND" "$info_plist" - /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:RendererBackend string $BUILD_RENDERER_BACKEND" "$info_plist" - /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:LibraryType string $OPENSWIFTUI_LIBRARY_TYPE" "$info_plist" - /usr/libexec/PlistBuddy -c "Add :OpenSwiftUIBuildConfiguration:UsesLocalDependencies bool $use_local_deps" "$info_plist" - plutil -convert xml1 "$info_plist" -} - copy_debug_symbols() { local scheme="$1" @@ -522,9 +499,6 @@ for scheme in "${FRAMEWORK_NAMES[@]}"; do build_framework "${SDKS[$i]}" "$(sdk_destination "${SDKS[$i]}")" "$scheme" "${SDK_ARCHS[$i]}" done create_xcframework "$scheme" - if [ "$scheme" = "OpenSwiftUI" ]; then - stamp_xcframework_configuration "$(xcframework_path "$scheme")" - fi copy_debug_symbols "$scheme" echo "Created $(xcframework_path "$scheme")" done From 092382c351faaa1d91747bde32f80e770b07cf52 Mon Sep 17 00:00:00 2001 From: Kyle Date: Wed, 24 Jun 2026 00:52:06 +0800 Subject: [PATCH 4/4] Use Compute for XCFramework releases --- .github/actions/build-xcframework/action.yml | 95 +++++--------------- .github/workflows/release.yml | 41 +++------ Scripts/build_xcframework.sh | 59 ++---------- 3 files changed, 42 insertions(+), 153 deletions(-) diff --git a/.github/actions/build-xcframework/action.yml b/.github/actions/build-xcframework/action.yml index 0de8d9267..0bee36d29 100644 --- a/.github/actions/build-xcframework/action.yml +++ b/.github/actions/build-xcframework/action.yml @@ -44,27 +44,6 @@ outputs: checksum_OpenRenderBoxShims: description: 'Checksum for OpenRenderBoxShims.xcframework.zip' value: ${{ steps.checksums.outputs.checksum_OpenRenderBoxShims }} - checksum_OpenSwiftUI_Compute: - description: 'Checksum for OpenSwiftUI.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenSwiftUI_Compute }} - checksum_OpenSwiftUICore_Compute: - description: 'Checksum for OpenSwiftUICore.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenSwiftUICore_Compute }} - checksum_OpenAttributeGraphShims_Compute: - description: 'Checksum for OpenAttributeGraphShims.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenAttributeGraphShims_Compute }} - checksum_OpenCoreGraphicsShims_Compute: - description: 'Checksum for OpenCoreGraphicsShims.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenCoreGraphicsShims_Compute }} - checksum_OpenObservation_Compute: - description: 'Checksum for OpenObservation.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenObservation_Compute }} - checksum_OpenQuartzCoreShims_Compute: - description: 'Checksum for OpenQuartzCoreShims.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenQuartzCoreShims_Compute }} - checksum_OpenRenderBoxShims_Compute: - description: 'Checksum for OpenRenderBoxShims.Compute.xcframework.zip' - value: ${{ steps.checksums.outputs.checksum_OpenRenderBoxShims_Compute }} runs: using: 'composite' @@ -88,10 +67,7 @@ runs: run: Scripts/CI/darwin_setup_build.sh shell: bash - name: Build XCFrameworks - run: Scripts/build_xcframework.sh OpenSwiftUI - shell: bash - - name: Build Compute XCFrameworks - run: Scripts/build_xcframework.sh --compute --output-suffix Compute OpenSwiftUI + run: Scripts/build_xcframework.sh --compute OpenSwiftUI shell: bash - name: Code sign XCFrameworks if: ${{ inputs.signing-certificate-base64 != '' }} @@ -107,13 +83,6 @@ runs: build/OpenObservation.xcframework build/OpenQuartzCoreShims.xcframework build/OpenRenderBoxShims.xcframework - build/OpenSwiftUI.Compute.xcframework - build/OpenSwiftUICore.Compute.xcframework - build/OpenAttributeGraphShims.Compute.xcframework - build/OpenCoreGraphicsShims.Compute.xcframework - build/OpenObservation.Compute.xcframework - build/OpenQuartzCoreShims.Compute.xcframework - build/OpenRenderBoxShims.Compute.xcframework - name: Compute Checksums and Generate Summary id: checksums shell: bash @@ -131,46 +100,28 @@ runs: OpenRenderBoxShims ) BODY="" - emit_binary_targets() { - local suffix="$1" - local title="$2" - local collect_body="$3" - - echo "### ${title}" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo '```swift' >> $GITHUB_STEP_SUMMARY - for fw in "${FRAMEWORKS[@]}"; do - local artifact="$fw" - local checksum_key="$fw" - if [ -n "$suffix" ]; then - artifact="$fw.$suffix" - checksum_key="${fw}_${suffix}" - fi - - if [ -n "$TAG_NAME" ]; then - rm -f "$artifact.xcframework.zip" - zip -ry "$artifact.xcframework.zip" "$artifact.xcframework" - CHECKSUM=$(swift package compute-checksum "$artifact.xcframework.zip") - echo "checksum_${checksum_key}=${CHECKSUM}" >> $GITHUB_OUTPUT - ENTRY=$(printf '.binaryTarget(\n name: "%s",\n url: "https://github.com/OpenSwiftUIProject/OpenSwiftUI/releases/download/%s/%s.xcframework.zip",\n checksum: "%s"\n),' "$fw" "$TAG_NAME" "$artifact" "$CHECKSUM") - else - ENTRY=$(printf '.binaryTarget(\n name: "%s",\n path: "%s.xcframework"\n),' "$fw" "$artifact") - fi - echo "$ENTRY" >> $GITHUB_STEP_SUMMARY - if [ "$collect_body" = true ]; then - if [ -n "$BODY" ]; then - BODY=$(printf '%s\n%s' "$BODY" "$ENTRY") - else - BODY="$ENTRY" - fi - fi - done - echo '```' >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - } - - emit_binary_targets "" "XCFramework Binary Targets" true - emit_binary_targets "Compute" "Compute XCFramework Binary Targets" false + echo "### XCFramework Binary Targets" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo '```swift' >> $GITHUB_STEP_SUMMARY + for fw in "${FRAMEWORKS[@]}"; do + if [ -n "$TAG_NAME" ]; then + rm -f "$fw.xcframework.zip" + zip -ry "$fw.xcframework.zip" "$fw.xcframework" + CHECKSUM=$(swift package compute-checksum "$fw.xcframework.zip") + echo "checksum_${fw}=${CHECKSUM}" >> $GITHUB_OUTPUT + ENTRY=$(printf '.binaryTarget(\n name: "%s",\n url: "https://github.com/OpenSwiftUIProject/OpenSwiftUI/releases/download/%s/%s.xcframework.zip",\n checksum: "%s"\n),' "$fw" "$TAG_NAME" "$fw" "$CHECKSUM") + else + ENTRY=$(printf '.binaryTarget(\n name: "%s",\n path: "%s.xcframework"\n),' "$fw" "$fw") + fi + echo "$ENTRY" >> $GITHUB_STEP_SUMMARY + if [ -n "$BODY" ]; then + BODY=$(printf '%s\n%s' "$BODY" "$ENTRY") + else + BODY="$ENTRY" + fi + done + echo '```' >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY echo "body<> $GITHUB_OUTPUT echo "$BODY" >> $GITHUB_OUTPUT diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cc882f42f..1d0ee18d2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,15 +20,11 @@ jobs: checksum_OpenObservation: ${{ steps.build.outputs.checksum_OpenObservation }} checksum_OpenQuartzCoreShims: ${{ steps.build.outputs.checksum_OpenQuartzCoreShims }} checksum_OpenRenderBoxShims: ${{ steps.build.outputs.checksum_OpenRenderBoxShims }} - checksum_OpenSwiftUI_Compute: ${{ steps.build.outputs.checksum_OpenSwiftUI_Compute }} - checksum_OpenSwiftUICore_Compute: ${{ steps.build.outputs.checksum_OpenSwiftUICore_Compute }} - checksum_OpenAttributeGraphShims_Compute: ${{ steps.build.outputs.checksum_OpenAttributeGraphShims_Compute }} - checksum_OpenCoreGraphicsShims_Compute: ${{ steps.build.outputs.checksum_OpenCoreGraphicsShims_Compute }} - checksum_OpenObservation_Compute: ${{ steps.build.outputs.checksum_OpenObservation_Compute }} - checksum_OpenQuartzCoreShims_Compute: ${{ steps.build.outputs.checksum_OpenQuartzCoreShims_Compute }} - checksum_OpenRenderBoxShims_Compute: ${{ steps.build.outputs.checksum_OpenRenderBoxShims_Compute }} env: - OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1 + OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 0 + OPENSWIFTUI_OPENATTRIBUTESHIMS_DANCEUIGRAPH: 0 + OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE: 1 + OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE_BINARY: 0 OPENSWIFTUI_USE_LOCAL_DEPS: 1 GH_TOKEN: ${{ github.token }} steps: @@ -71,13 +67,6 @@ jobs: CHECKSUM_OpenObservation: ${{ needs.build-xcframeworks.outputs.checksum_OpenObservation }} CHECKSUM_OpenQuartzCoreShims: ${{ needs.build-xcframeworks.outputs.checksum_OpenQuartzCoreShims }} CHECKSUM_OpenRenderBoxShims: ${{ needs.build-xcframeworks.outputs.checksum_OpenRenderBoxShims }} - CHECKSUM_OpenSwiftUI_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenSwiftUI_Compute }} - CHECKSUM_OpenSwiftUICore_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenSwiftUICore_Compute }} - CHECKSUM_OpenAttributeGraphShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenAttributeGraphShims_Compute }} - CHECKSUM_OpenCoreGraphicsShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenCoreGraphicsShims_Compute }} - CHECKSUM_OpenObservation_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenObservation_Compute }} - CHECKSUM_OpenQuartzCoreShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenQuartzCoreShims_Compute }} - CHECKSUM_OpenRenderBoxShims_Compute: ${{ needs.build-xcframeworks.outputs.checksum_OpenRenderBoxShims_Compute }} run: | if [ -z "$BINARY_REPO_PAT" ]; then echo "::notice::BINARY_REPO_PAT not set, skipping binary repo update" @@ -109,9 +98,13 @@ jobs: Package.swift.template > Package.swift } + update_readme_version() { + perl -0pi -e 's|(\.package\(url:\s*"https://github\.com/OpenSwiftUIProject/OpenSwiftUI-spm",\s*from:\s*")[^"]+(")|$1$ENV{VERSION}$2|g' README.md + } + commit_package_if_needed() { local message="$1" - git add Package.swift + git add Package.swift README.md if git diff --cached --quiet; then echo "No changes for $(git branch --show-current)" return 1 @@ -127,6 +120,7 @@ jobs: "$CHECKSUM_OpenObservation" \ "$CHECKSUM_OpenQuartzCoreShims" \ "$CHECKSUM_OpenRenderBoxShims" + update_readme_version echo "Generated Package.swift:" head -50 Package.swift if commit_package_if_needed "Update to ${VERSION} with code-signed XCFrameworks"; then @@ -134,21 +128,6 @@ jobs: fi git push origin main --tags - git fetch origin --prune - git switch --track origin/compute - render_package \ - "$CHECKSUM_OpenSwiftUI_Compute" \ - "$CHECKSUM_OpenSwiftUICore_Compute" \ - "$CHECKSUM_OpenAttributeGraphShims_Compute" \ - "$CHECKSUM_OpenCoreGraphicsShims_Compute" \ - "$CHECKSUM_OpenObservation_Compute" \ - "$CHECKSUM_OpenQuartzCoreShims_Compute" \ - "$CHECKSUM_OpenRenderBoxShims_Compute" - echo "Generated Compute Package.swift:" - head -50 Package.swift - commit_package_if_needed "Update Compute to ${VERSION} with code-signed XCFrameworks" || true - git push origin compute - release-notes: uses: ./.github/workflows/release_notes.yml needs: update-binary-repo diff --git a/Scripts/build_xcframework.sh b/Scripts/build_xcframework.sh index e57c7552e..fbac1f04f 100755 --- a/Scripts/build_xcframework.sh +++ b/Scripts/build_xcframework.sh @@ -27,7 +27,6 @@ SDK_ARCHS=() DEBUG_MODE=false RUN_TUIST_INSTALL=true EXPLICIT_FRAMEWORK_NAMES=false -OUTPUT_SUFFIX="" FRAMEWORK_NAMES=() DEFAULT_FRAMEWORK_NAMES=( @@ -49,7 +48,6 @@ Options: --archs Override architectures for the previous --sdk. --debug Keep release metadata and copy dSYMs. --compute Build OpenAttributeGraphShims with the Compute source backend. - --output-suffix Append a suffix to generated xcframework bundle names. --skip-tuist-install Skip tuist install. --framework Build one framework. May be passed multiple times. --help Show this help. @@ -88,10 +86,6 @@ while [[ $# -gt 0 ]]; do export OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE_BINARY shift ;; - --output-suffix) - OUTPUT_SUFFIX="$2" - shift 2 - ;; --skip-tuist-install) RUN_TUIST_INSTALL=false shift @@ -118,48 +112,22 @@ if [ ${#FRAMEWORK_NAMES[@]} -eq 0 ] || FRAMEWORK_NAMES=("${DEFAULT_FRAMEWORK_NAMES[@]}") fi -# Default: macosx and iphonesimulator. +# Default: macosx and iphonesimulator. Compute builds also include iphoneos. # Note: iphoneos SDK support is blocked by an AG issue. See #835. if [ ${#SDKS[@]} -eq 0 ]; then - SDKS=("macosx" "iphonesimulator") - SDK_ARCHS=("" "") + if [ "${OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE:-0}" = "1" ]; then + SDKS=("macosx" "iphonesimulator" "iphoneos") + SDK_ARCHS=("" "" "") + else + SDKS=("macosx" "iphonesimulator") + SDK_ARCHS=("" "") + fi fi if [ "${OPENSWIFTUI_SKIP_TUIST_INSTALL:-0}" = "1" ]; then RUN_TUIST_INSTALL=false fi -env_flag_enabled() { - [ "${1:-0}" = "1" ] -} - -resolve_ag_backend() { - if [ -n "${OPENSWIFTUI_AG_BACKEND_NAME:-}" ]; then - echo "$OPENSWIFTUI_AG_BACKEND_NAME" - elif env_flag_enabled "${OPENSWIFTUI_OPENATTRIBUTESHIMS_COMPUTE:-0}"; then - echo "Compute" - elif env_flag_enabled "${OPENSWIFTUI_OPENATTRIBUTESHIMS_DANCEUIGRAPH:-0}"; then - echo "DanceUIGraph" - elif env_flag_enabled "${OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH:-0}"; then - echo "AttributeGraph" - else - echo "OpenAttributeGraph" - fi -} - -resolve_renderer_backend() { - if [ -n "${OPENSWIFTUI_RENDERER_BACKEND_NAME:-}" ]; then - echo "$OPENSWIFTUI_RENDERER_BACKEND_NAME" - elif env_flag_enabled "${OPENSWIFTUI_SWIFTUI_RENDERER:-0}"; then - echo "SwiftUI" - else - echo "OpenSwiftUI" - fi -} - -BUILD_AG_BACKEND="$(resolve_ag_backend)" -BUILD_RENDERER_BACKEND="$(resolve_renderer_backend)" - if ! command -v tuist >/dev/null 2>&1; then echo "Error: tuist is required to generate $XCODEPROJ." exit 1 @@ -305,11 +273,6 @@ for i in "${!SDKS[@]}"; do done echo "Debug mode: $DEBUG_MODE" echo "Frameworks: ${FRAMEWORK_NAMES[*]}" -if [ -n "$OUTPUT_SUFFIX" ]; then - echo "Output suffix: $OUTPUT_SUFFIX" -fi -echo "AG backend: $BUILD_AG_BACKEND" -echo "Renderer backend: $BUILD_RENDERER_BACKEND" sdk_destination() { case "$1" in @@ -328,11 +291,7 @@ framework_path() { xcframework_path() { local scheme="$1" - if [ -n "$OUTPUT_SUFFIX" ]; then - echo "$PROJECT_BUILD_DIR/$scheme.$OUTPUT_SUFFIX.xcframework" - else - echo "$PROJECT_BUILD_DIR/$scheme.xcframework" - fi + echo "$PROJECT_BUILD_DIR/$scheme.xcframework" } framework_modules_path() {