From 8f583b14eaf1f6e12d62b0adfc391fa2bd2dc92e Mon Sep 17 00:00:00 2001 From: jwinterm Date: Tue, 19 May 2026 10:54:48 -0400 Subject: [PATCH] iOS: strip Zano/Zcash xcframework refs + generate Monero/Wownero XCFrameworks in CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two fixes that together address the 'There is no XCFramework found at...' build failure: 1) ios/Runner.xcodeproj/project.pbxproj: remove 10 lines referencing ZanoWallet.xcframework + WarpApiFFI.xcframework (zcash). Those were stale — both chains were removed in commit 4eb7db0b7 weeks ago, but the Xcode project still listed them in BuildFile, CopyFiles, FileReference, and Group sections. xcode error referenced them as missing. 2) Both iOS workflows now run scripts/ios/gen_framework.sh after staging the monero_c bundle. The script reads aarch64-apple-ios/lib_wallet2_api_c.dylib and aarch64-apple-ios-simulator/lib_wallet2_api_c.dylib from the bundle, wraps each as a .framework with an Info.plist, then bundles device + simulator into ios/MoneroWallet.xcframework + ios/WowneroWallet.xcframework via xcodebuild -create-xcframework. These are exactly the paths project.pbxproj's CopyFiles phase references. The 'Inspect iOS targets' debug step was expanded to print bundle subdirs + sample target contents, so if the monero_c bundle doesn't actually ship those exact dirs we'll see it in the log. --- .github/workflows/build-ios-sim.yml | 20 +++++++++++++++----- .github/workflows/build-ios-testflight.yml | 8 ++++++++ ios/Runner.xcodeproj/project.pbxproj | 10 ---------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-ios-sim.yml b/.github/workflows/build-ios-sim.yml index 5ffac48f1..959ddee69 100644 --- a/.github/workflows/build-ios-sim.yml +++ b/.github/workflows/build-ios-sim.yml @@ -163,17 +163,27 @@ jobs: ls popd - # iOS native lib staging: Cake's scripts/ios/setup.sh + gen_framework.sh - # expect pre-built .a archives in specific paths. The first run will - # likely surface what's missing; we iterate from there. - name: Inspect iOS targets available in monero_c bundle run: | set -x MONERO_C_TAG=$(cd scripts/monero_c && git describe --tags) BUNDLE_DIR="scripts/monero_c/release/$MONERO_C_TAG" - # List anything iOS-y - find "$BUNDLE_DIR" -maxdepth 1 -name '*ios*' -o -name '*apple*' 2>/dev/null || true + echo "=== bundle top-level ===" ls "$BUNDLE_DIR" || true + echo "=== iOS-y subdirs ===" + find "$BUNDLE_DIR" -maxdepth 1 -type d \( -name '*ios*' -o -name '*apple*' \) 2>/dev/null + echo "=== sample contents of one apple-ios target ===" + for d in "$BUNDLE_DIR"/aarch64-apple-ios "$BUNDLE_DIR"/aarch64-apple-ios-simulator; do + [[ -d "$d" ]] && { echo "--- $d ---"; ls "$d"; } + done + + - name: Build MoneroWallet + WowneroWallet XCFrameworks + run: | + set -x -e + pushd scripts/ios + bash ./gen_framework.sh + popd + ls -la ios/MoneroWallet.xcframework ios/WowneroWallet.xcframework # ---- Configure: pubspec.yaml, Info.plist, GeneratedPluginRegistrant --- - name: Run iOS configure (cakewallet profile) diff --git a/.github/workflows/build-ios-testflight.yml b/.github/workflows/build-ios-testflight.yml index d3f955f80..81431621f 100644 --- a/.github/workflows/build-ios-testflight.yml +++ b/.github/workflows/build-ios-testflight.yml @@ -158,6 +158,14 @@ jobs: rm release-bundle.zip popd + - name: Build MoneroWallet + WowneroWallet XCFrameworks + run: | + set -x -e + pushd scripts/ios + bash ./gen_framework.sh + popd + ls -la ios/MoneroWallet.xcframework ios/WowneroWallet.xcframework + # ---- Configure: pubspec.yaml, Info.plist, etc. ---------------------- - name: Run iOS configure (cakewallet profile) run: | diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index cbe54e3e5..58cc6990a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -25,10 +25,8 @@ A1B4A70C9CFA13AB71662216 /* LnurlPay.swift in Resources */ = {isa = PBXBuildFile; fileRef = 7D3364C03978A8A74B6D586E /* LnurlPay.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; A3D5E17CC53DF13FA740DEFA /* RedeemSwap.swift in Resources */ = {isa = PBXBuildFile; fileRef = 9D2F2C9F2555316C95EE7EA3 /* RedeemSwap.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; B6C6E59403ACDE44724C12F4 /* ServiceConfig.swift in Resources */ = {isa = PBXBuildFile; fileRef = B3D5E78267F5F18D882FDC3B /* ServiceConfig.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; - CE3D5B792F142305004D767D /* WarpApiFFI.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE3D5B782F142305004D767D /* WarpApiFFI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CE918BF82D533ECE007F186E /* MoneroWallet.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE918BF72D533ECE007F186E /* MoneroWallet.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CE918BFA2D533ED4007F186E /* WowneroWallet.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE918BF92D533ED4007F186E /* WowneroWallet.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - CE918BFC2D533ED8007F186E /* ZanoWallet.xcframework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE918BFB2D533ED8007F186E /* ZanoWallet.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CEAFE4A02C53926F009FF3AD /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C58D93382C00FAC6004BCF69 /* libresolv.tbd */; }; CFEFC24F82F78FE747DF1D22 /* LnurlPayInfo.swift in Resources */ = {isa = PBXBuildFile; fileRef = 58C22CBD8C22B9D6023D59F8 /* LnurlPayInfo.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; D0D7A0D4E13F31C4E02E235B /* ReceivePayment.swift in Resources */ = {isa = PBXBuildFile; fileRef = 91C524F800843E0A3F17E004 /* ReceivePayment.swift */; settings = {ASSET_TAGS = (BreezSDK, ); }; }; @@ -46,8 +44,6 @@ files = ( CE918BF82D533ECE007F186E /* MoneroWallet.xcframework in CopyFiles */, CE918BFA2D533ED4007F186E /* WowneroWallet.xcframework in CopyFiles */, - CE918BFC2D533ED8007F186E /* ZanoWallet.xcframework in CopyFiles */, - CE3D5B792F142305004D767D /* WarpApiFFI.xcframework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -87,11 +83,8 @@ B3D5E78267F5F18D882FDC3B /* ServiceConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServiceConfig.swift; path = "../.symlinks/plugins/breez_sdk/ios/bindings-swift/Sources/BreezSDK/ServiceConfig.swift"; sourceTree = ""; }; B478EFCC3C0760ED97FFE561 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C58D93382C00FAC6004BCF69 /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; }; - CE3D5B782F142305004D767D /* WarpApiFFI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = WarpApiFFI.xcframework; path = ../scripts/zcash_lib/WarpApiFFI.xcframework; sourceTree = ""; }; CE918BF72D533ECE007F186E /* MoneroWallet.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = MoneroWallet.xcframework; sourceTree = ""; }; CE918BF92D533ED4007F186E /* WowneroWallet.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = WowneroWallet.xcframework; sourceTree = ""; }; - CE918BFB2D533ED8007F186E /* ZanoWallet.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = ZanoWallet.xcframework; sourceTree = ""; }; - CEFC07A12EF2EEEB0012DB29 /* WarpApiFFI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = WarpApiFFI.xcframework; path = ../../zcash_lib/WarpApiFFI.xcframework; sourceTree = ""; }; D67E45DEB6E9449D981B35E0 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; DCEA540E3586164FB47AD13E /* LnurlPayInvoice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LnurlPayInvoice.swift; path = "../.symlinks/plugins/breez_sdk/ios/bindings-swift/Sources/BreezSDK/Task/LnurlPayInvoice.swift"; sourceTree = ""; }; F2F2EF79B5A1520AF76225B9 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; @@ -114,10 +107,8 @@ 06957875428D0F5AAE053765 /* Frameworks */ = { isa = PBXGroup; children = ( - CE918BFB2D533ED8007F186E /* ZanoWallet.xcframework */, CE918BF92D533ED4007F186E /* WowneroWallet.xcframework */, CE918BF72D533ECE007F186E /* MoneroWallet.xcframework */, - CEFC07A12EF2EEEB0012DB29 /* WarpApiFFI.xcframework */, C58D93382C00FAC6004BCF69 /* libresolv.tbd */, 0C9986A3251A932F00D566FD /* CryptoSwift.framework */, B478EFCC3C0760ED97FFE561 /* Pods_Runner.framework */, @@ -168,7 +159,6 @@ 97C146E51CF9000F007C117D = { isa = PBXGroup; children = ( - CE3D5B782F142305004D767D /* WarpApiFFI.xcframework */, 0C44A7182518EF4A00B570ED /* CakeWallet */, 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */,