Skip to content

TST: enable --fatal-meson-warnings for all tests #768

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

dnicolodi
Copy link
Member

@dnicolodi dnicolodi commented Jun 14, 2025

The test packages also work as examples. I think it is better to make sure that they are as correct as possible.

@dnicolodi dnicolodi force-pushed the meson-fatal-warnings branch 3 times, most recently from 2725c98 to 0173a9c Compare June 14, 2025 16:50
c = '{arch}-apple-{subsystem}-clang'
cpp = '{arch}-apple-{subsystem}-clang++'
objc = '{arch}-apple-{subsystem}-clang'
objcpp = '{arch}-apple-{subsystem}-clang++'
ar = '{arch}-apple-{subsystem}-ar'
strip = ['strip', '-arch', {arch!r}]
Copy link
Member Author

Choose a reason for hiding this comment

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

@freakboy3742 Can you please verify that this is correct? I have no experience with building for iOS. Thanks!

Copy link
Contributor

Choose a reason for hiding this comment

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

This will be a valid invocation for strip; but I've never needed to call strip on any iOS program, so I'm not sure where I'd be looking to verify this works. Have you got an example in mind that would be using this?

Copy link
Member Author

@dnicolodi dnicolodi Jun 16, 2025

Choose a reason for hiding this comment

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

Thanks! Maybe calling strip in this way and checking that the resulting binary is still working would be a way to verify that this does something that at least is not harmful. The reason I'm adding this is that, without it, meson emits a warning https://github.com/mesonbuild/meson-python/actions/runs/15653996265/job/44102572727#step:10:1105

Copy link
Contributor

Choose a reason for hiding this comment

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

Understood - I'll investigate and report back shortly (likely tomorrow my time, at this point)

Copy link
Member Author

Choose a reason for hiding this comment

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

I think the correct way to get to the strip utility is to run something like xcrun --sdk iphoneos -f strip. The system strip may not work for iOS binaries.

Copy link
Contributor

Choose a reason for hiding this comment

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

They didn't. Those binaries are a shim provided as part of a Python distribution for iOS, specifically to avoid issues with having definitions for variables like CC that have a space in them. In a lot of older build tools, there's an implied assumption that you can split a compile command at the first space... which isn't true if you're using xcrun. Those shims also do a bunch of handling around IPHONEOS_DEPLOYMENT_TARGET handling, etc.

As for pre-calling xcrun and caching the result - that could work. The value returned will change over time, but not over the lifespan of a single build, so caching on a per-build basis should be fine. xcrun should always be on the path (as long as the user has Xcode installed), so that part should be reliable enough.

Copy link
Member Author

Choose a reason for hiding this comment

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

They didn't. Those binaries are a shim provided as part of a Python distribution for iOS

I didn't pick up on this. Maybe this should be noted in a comment somewhere. Would it be sensible to extend these shims to provide strip too? In this way, all the logic for finding the build tools would be maintained in the same place and only one place would need to be updated if the SDK changes.

Copy link
Contributor

Choose a reason for hiding this comment

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

It couldn't hurt to add a shim for strip. The complication is that I'm not sure if we'll be able to backport that shim to Python 3.13, since it would be a new feature... but I can manually add it to the support package build (as those aren't currently maintained by CPython itself), so in practice, it would be available.

Copy link
Member Author

Choose a reason for hiding this comment

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

It does not really matter if it is not available even if we say its should be in the cross file, as long as no one is using it 🙂 Adding it to the support package build would be my preferred solution, unless you see an issue with this.

Copy link
Member

Choose a reason for hiding this comment

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

WARNING: Cross file does not specify strip binary, result will not be stripped.

As noted by the warning, the consequences of it not being available are not earth-shattering.

Quite likely, an appstore upload will do server-side stripping anyway.

@dnicolodi
Copy link
Member Author

There are still test failures. These are the tests where we set the RPATH via explicit linker arguments. We stop doing that in #724 thus I don't think it is necessary to find a way to allow these warnings to do not make the tests fail.

@dnicolodi dnicolodi force-pushed the meson-fatal-warnings branch from 0173a9c to d674d94 Compare June 14, 2025 17:02
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.

3 participants