fix(maui): set xcframework install name#187
Conversation
|
Warning Review limit reached
More reviews will be available in 51 minutes and 51 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe PR fixes an iOS dylib load failure by setting ChangesApple xcframework
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request configures and validates the dynamic library install name (LD_DYLIB_INSTALL_NAME) for the Apple xcframework build. It adds the configuration to the Xcode project settings and the build script, and introduces a validation step (validate_install_names) in build-xcframework.sh to verify that the generated binaries have the expected install name. Additionally, parity tests are updated to enforce these changes. Feedback suggests a more robust way to extract the install name using otool -D instead of parsing otool -l with awk.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/apple/scripts/build-xcframework.sh`:
- Around line 89-99: The validation in the binary processing loop at lines 89-99
fails silently when no install name is extracted by otool, because the inner
while loop never executes if there are no install names to read. Add a flag
before the inner while loop (around line 89) to track whether at least one
install name was found for the binary, set this flag when a non-empty
install_name is encountered in the loop, and after the inner loop completes
(around line 98), check if the flag was never set and set failed=1 to fail the
validation when no install names could be parsed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9dd57c8e-67ba-4eac-801f-ee5457870445
📒 Files selected for processing (3)
packages/apple/scripts/build-xcframework.shpackages/apple/wrapper/project.ymlscripts/audit-non-godot-parity.mjs
Summary
@rpath/OpenIAP.framework/OpenIAPduring archive builds.xcodebuild -create-xcframeworkso CI fails if the install name regresses.Closes #186
Test plan
bash packages/apple/scripts/build-xcframework.shfind packages/apple/.build/xcframework/OpenIAP.xcframework \( -path '*/OpenIAP.framework/OpenIAP' -o -path '*/OpenIAP.framework/Versions/*/OpenIAP' \) -type f -print -exec sh -c 'otool -l "$1" | awk "/LC_ID_DYLIB/{in_id=1; next} in_id && / name /{print \\$2; in_id=0}"' sh {} \;dotnet build libraries/maui-iap/src/OpenIap.Maui/OpenIap.Maui.csproj -p:TargetFrameworks=net9.0 --nologodotnet build libraries/maui-iap/src/OpenIap.Maui/OpenIap.Maui.csproj -p:TargetFrameworks=net10.0 --nologodotnet build libraries/maui-iap/src/OpenIap.Maui.Bindings.iOS/OpenIap.Maui.Bindings.iOS.csproj -p:TargetFrameworks=net10.0-ios --nologodotnet build libraries/maui-iap/src/OpenIap.Maui/OpenIap.Maui.csproj -p:TargetFrameworks=net10.0-ios --nologobun audit:paritybash -n packages/apple/scripts/build-xcframework.shgit diff --checkSummary by CodeRabbit