ci(plugins): give the load check the framework it dlopens against - #2425
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All 12 plugin releases for v0.68.0 failed at
Verify the built bundles load. The plugins are fine; the check is wrong.What fails
The step unzips the distribution zip into an empty
mktemp -dand pointsverify-plugin-loads.shat it. That script setsDYLD_FRAMEWORK_PATHto the directories it is given, on the stated assumption that the app frameworks "sit beside them in the products directory". In a distribution zip nothing sits beside the plugin:ditto -c -k --keepParentarchives the bundle alone. So dyld cannot resolve the framework and every plugin fails.The failure text says a removed PluginKit requirement is the usual cause, which is what this looks like and is not what it is.
scripts/check-pluginkit-abi.sh v0.67.1reports the PluginKit change for 0.68.0 as additive: one interface diff,PluginTriggerInfogaining fields on a non-frozen struct with its old init preserved as@_disfavoredOverload. No symbol was removed, andcurrentPluginKitVersionis unchanged at 19.Why it surfaced now
The step arrived in #2361 on 2026-08-21. The plugin tags pushed today are the first plugin releases since, so this is its first execution.
Fix
build-plugin.shbuilds the plugin and its dependencies into one flatCONFIGURATION_BUILD_DIR(build/Plugins/$arch), so the framework is already on disk next to the built bundle. Copy it beside the unzipped bundle before probing.Putting it in the work directory rather than passing
build/Plugins/$ARCHas a second search directory is deliberate: the script both searches and scans each directory it is given, so passing the build dir makes it find and dlopen the same bundle twice and report "All 2 plugins load".Verified locally
Built
BeancountDriverinto a flat products dir, copied the bundle alone into a temp dir to imitate the zip, and ran the script both ways:The first command reproduces the CI failure exactly; the second is this change.
After merging
The 12 tags are already pushed, so they need re-running rather than re-tagging.
workflow_dispatchruns the workflow from the default branch, so a single dispatch with all 12tagvalues picks this up:No plugin was published by the failed runs: the load check runs before the release and registry steps.
https://claude.ai/code/session_01DBDRXfDuGrLJV2HrM2d4M4