Ensure multi-tagged wheels are correctly identified as universal#2692
Open
freakboy3742 wants to merge 1 commit intobeeware:mainfrom
Open
Ensure multi-tagged wheels are correctly identified as universal#2692freakboy3742 wants to merge 1 commit intobeeware:mainfrom
freakboy3742 wants to merge 1 commit intobeeware:mainfrom
Conversation
mhsmith
reviewed
Feb 21, 2026
| tmp_path / "app-packages", | ||
| "multi-tagged-binary-package-1", | ||
| version="3.4.7", | ||
| tag=["macOS_11_x86-64", "macOS_11_arm64"], |
Member
There was a problem hiding this comment.
The comment suggests that this was supposed to include a universal tag.
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.
If a macOS binary wheel has multiple platform tags, Briefcase's platform merging code won't correctly identify this fact, and will mark the wheel as requiring merging. This is because the WHEEL metadata is a multi-valued header - it contains an independent
Tagentry for each tag in the wheel.The example package that revealed this was
orjson, which is taggedcp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl. The wheel metadata for this wheel reads:Briefcase identifies the tag for this wheel as
arm64, because this is the value for theTagheader that is returned from the WHEEL file (presumably because it is alphabetically last). This means Briefcase doesn't identify the wheel as universal, and so it installs a second copy of the same wheel as the "other" architecture, and then fails on merging because there is an existing x86-64 slice in the binaries being merged.This PR adds multi-tag handling to WHEEL file processing, ensuring that any universal2 entry is identified as a universal wheel. It also ensures that if a wheel is multi-tagged as arm64 and x86-64, that is also identified as effectively universal (as no merging is required).
Fixes #2690.
PR Checklist: