Skip to content

account for new error message from lipo - #280

Draft
glyph wants to merge 2 commits into
matthew-brett:mainfrom
glyph:new-lipo-message
Draft

glyph wants to merge 2 commits into
matthew-brett:mainfrom
glyph:new-lipo-message

Conversation

@glyph

@glyph glyph commented Oct 2, 2026 •

Copy link
Copy Markdown

fixes #279

Pull Request Checklist

  • Read and follow the CONTRIBUTING.md guide
  • Mentioned relevant issues
  • Append public facing changes to Changelog.md
  • Ensure new features are covered by tests
  • Ensure fixes are verified by tests

@glyph
glyph marked this pull request as draft October 2, 2026 06:40

@HexDecimal HexDecimal left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding the affected runner should be enough for regression testing, but you'd have to show me that the workflow reproduces the error in the first place.

You'll also need to note what's been fixed in the changelog.

Comment thread delocate/fuse.py Outdated
Comment thread delocate/fuse.py
Comment on lines +154 to +155
matched = _RE_LIPO_UNKNOWN_FILE_STDERR.search(exc.stderr)
if not matched:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I worry about changing this to search. Maybe edit the expression to account for the match being towards the end.

Comment thread delocate/fuse.py
r"can't figure out the architecture type of: (?P<file>.+)\n$"
r"("
r"fatal error: (?P<program>.+): "
r"can't figure out the architecture type of: (?P<file>.+)"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was \n$ removed from the end here?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the putative error here is "the error message was far too strict and an upgraded compiler breaks it", I felt like it made sense to loosen the matching strategy given that it seems unlikely to see this exact message even with a .search(). If you'd prefer I can definitely be stricter about it though.

@HexDecimal HexDecimal Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the putative error here is "the error message was far too strict and an upgraded compiler breaks it"

This would be justified if the minor change was required for this fix, but in this case lipo's output was changed in a way that requires a whole new expression to parse. You should try your best not to tamper with the original expression unless you have a more well thought out refactor in mind.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would be justified if the minor change was required for this fix, but in this case lipo's output was changed in a way that requires a whole new expression to parse. You should try your best not to tamper with the original expression unless you have a more well thought out refactor in mind.

Fair enough, I'll try to mirror the previous strictness.

Co-authored-by: Kyle Benesch <4b796c65+github@gmail.com>
@glyph

glyph commented Oct 2, 2026

Copy link
Copy Markdown
Author

Adding the affected runner should be enough for regression testing, but you'd have to show me that the workflow reproduces the error in the first place.

There's a reproducer on the issue, does it not work for you?

@HexDecimal

Copy link
Copy Markdown
Collaborator

There's a reproducer on the issue, does it not work for you?

Reproducing the wheel isn't necessary since this issue applies to all wheels. More specifically, Delocate runs lipo on all files and uses the output to tell if a file was a regular-file rather than a library, but the error message from lipo for non-library files has been changed in the most recent version.

I'm inexperienced with MacOS so it's unclear to me if lipo depends on the MacOS version or the installed XCode version.

The new runners from GitHub are called macos-26-intel and xcode-27. Adding these to the isolated_tests matrix should reproduce the error but I can't be sure. I can try this myself or I can trust you to do it.

@glyph

glyph commented Oct 2, 2026

Copy link
Copy Markdown
Author

I'm inexperienced with MacOS so it's unclear to me if lipo depends on the MacOS version or the installed XCode version.

I'm pretty sure it's the latter but sometimes I am surprised by details of this interaction.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

delocate-fuse no longer works on many wheels, failing with lipo: no eligible inputs found

2 participants