-
Notifications
You must be signed in to change notification settings - Fork 77
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
dnicolodi
wants to merge
3
commits into
mesonbuild:main
Choose a base branch
from
dnicolodi:meson-fatal-warnings
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -192,3 +192,18 @@ def cleanenv(): | |||||
# $MACOSX_DEPLOYMENT_TARGET affects the computation of the platform tag on macOS. | ||||||
yield mpatch.delenv('MACOSX_DEPLOYMENT_TARGET', raising=False) | ||||||
mpatch.undo() | ||||||
|
||||||
|
||||||
@pytest.fixture(autouse=True, scope='session') | ||||||
def meson_fatal_warnings(): | ||||||
# Cannot use the 'monkeypatch' fixture because of scope mismatch. | ||||||
mpatch = pytest.MonkeyPatch() | ||||||
mesonpy_project_init = mesonpy.Project.__init__ | ||||||
|
||||||
def __init__(self, source_dir, build_dir, meson_args=None, editable_verbose=False): | ||||||
if meson_args is None: | ||||||
meson_args = {} | ||||||
meson_args['setup'] = meson_args.get('setup', []) + ['--fatal-meson-warnings'] | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
mesonpy_project_init(self, source_dir, build_dir, meson_args, editable_verbose) | ||||||
|
||||||
mpatch.setattr(mesonpy.Project, '__init__', __init__) |
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
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?Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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 likexcrun --sdk iphoneos -f strip
. The systemstrip
may not work for iOS binaries.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That would also be an entirely viable option. The only question I'd have is over consistency with the rest of the CPython ecosystem. If a change is made to the shims (like the recent introduction of
IPHONEOS_DEPLOYMENT_TARGET
enforcement), then meson-python would get that update as soon as the new version of Python is available.On the other hand, the inverse is also true - meson-python can be in charge of its own destiny, and fix a bug before Python does. This might be more important as Python versions get older - if Python 3.9 had iOS support, and a problem was found, it would be a long time (if at all) before that update propagates. That said, I'm not anticipating a lot of need for this sort of change.
So... 🤷
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think meson-python releases can happen more easily than CPython releases, thus applying fixes does not seem an issue, as long as we are informed of them. Another advantage is performance: not having the wrappers spares forking one extra
sh
processes which stays around for the duration of the execution (because the wrappers do not useexec
) for each compilation command. Actually usingxcrun
to query the path to the compiler binaries two forks could be spared. Although, in practice this may be a pretty small performance penalty.@rgommers What do yo think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks to me like the performance difference is going to be very small compared to the overall time it takes to build a wheel. So I'd go with the simplest solution, which is invoking the shims directly. Fixing a bug that may show up in a version of CPython that doesn't get bug fix releases anymore is years away, and if such a bug fix is needed, the unwrapping can then still be done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the performance considerations are moot. Still, a shim for
strip
does not yet exist and if we invokexcrun
directly forstrip
I don't see why we cannot do the same for all other compilation tools. I don't know what happens if meson-python writes a cross file that specifies astrip
binary that does not exist.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can, the CPython shims just look a lot more complex.
Anyway, I am fine with that solution too if you prefer, any choice is valid here. Just my $2c that I'd make the minimal change only for
strip
here (maybe I'm just lazy:)).