What changed, and why it matters
This commit is a routine fix to the project's automated build pipeline for iOS. It restructures how iPhone and iPhone Simulator libraries are built and packaged into an Apple XCFramework, but it does not change any wallet code, cryptography, or user-facing behavior. There is no indication of a security issue.
No security action needed. Review as normal CI/CD maintenance if desired.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change refactors the GitHub Actions workflow .github/workflows/build-monero-c.yml. It converts the single build-aarch64-apple-ios job into a matrix job build-ios-targets that builds both aarch64-apple-ios and aarch64-apple-iossimulator, uploads each library as an artifact, and adds a new create-ios-xcframework job that downloads those artifacts and assembles the XCFramework. The final release job’s dependency is updated accordingly. No source code, secrets, permissions, or build scripts outside the workflow are modified.
Changed components
.github/workflows/build-monero-c.ymlInspect captured patch +35 / −11
diff --git a/.github/workflows/build-monero-c.yml b/.github/workflows/build-monero-c.yml
index 6378b23..924589a 100644
--- a/.github/workflows/build-monero-c.yml
+++ b/.github/workflows/build-monero-c.yml
@@ -108,9 +108,14 @@ jobs:
name: armv7a-linux-androideabi
path: artifacts/libmonero_libwallet2_api_c.so
- build-aarch64-apple-ios:
- name: Build aarch64-apple-ios and aarch64-apple-iossimulator
+ build-ios-targets:
+ name: Build ${{ matrix.target }}
runs-on: macos-15
+ strategy:
+ matrix:
+ target:
+ - aarch64-apple-ios
+ - aarch64-apple-iossimulator
steps:
- name: Checkout monero_c repo
uses: actions/checkout@v4
@@ -136,13 +141,32 @@ jobs:
git config --global user.name "CI mrcyjanek.net"
./apply_patches.sh monero
- - name: Build monero_c for aarch64-apple-ios
+ - name: Build monero_c for ${{ matrix.target }}
run: |
- ./build_single.sh monero aarch64-apple-ios -j$(sysctl -n hw.logicalcpu)
+ ./build_single.sh monero ${{ matrix.target }} -j$(sysctl -n hw.logicalcpu)
- - name: Build monero_c for aarch64-apple-iossimulator
- run: |
- ./build_single.sh monero aarch64-apple-iossimulator -j$(sysctl -n hw.logicalcpu)
+ - name: Upload built library
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ matrix.target }}
+ path: monero_libwallet2_api_c/build/${{ matrix.target }}/libwallet2_api_c.dylib
+
+ create-ios-xcframework:
+ name: Create iOS XCFramework
+ runs-on: macos-15
+ needs: build-ios-targets
+ steps:
+ - name: Download aarch64-apple-ios artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: aarch64-apple-ios
+ path: device-lib
+
+ - name: Download aarch64-apple-iossimulator artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: aarch64-apple-iossimulator
+ path: simulator-lib
- name: Create XCFramework
run: |
@@ -151,8 +175,8 @@ jobs:
mkdir -p simulator/MoneroWallet.framework
# Copy binaries
- cp monero_c/monero_libwallet2_api_c/build/aarch64-apple-ios/libwallet2_api_c.dylib device/MoneroWallet.framework/MoneroWallet
- cp monero_c/monero_libwallet2_api_c/build/aarch64-apple-iossimulator/libwallet2_api_c.dylib simulator/MoneroWallet.framework/MoneroWallet
+ cp device-lib/libwallet2_api_c.dylib device/MoneroWallet.framework/MoneroWallet
+ cp simulator-lib/libwallet2_api_c.dylib simulator/MoneroWallet.framework/MoneroWallet
# Create Info.plist for both
cat > device/MoneroWallet.framework/Info.plist << 'EOF'
@@ -192,7 +216,7 @@ jobs:
-output MoneroWallet.xcframework
# Clean up temp directories
- rm -rf device simulator
+ rm -rf device simulator device-lib simulator-lib
- name: Upload XCFramework artifact
uses: actions/upload-artifact@v4
@@ -208,7 +232,7 @@ jobs:
- build-x86_64-linux-android
- build-aarch64-linux-android
- build-armv7a-linux-androideabi
- - build-aarch64-apple-ios
+ - create-ios-xcframework
steps:
- name: Checkout repository
uses: actions/checkout@v4
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.