-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Revert Only pass --build-option to bdist_wheel in build_meta #4218
Revert Only pass --build-option to bdist_wheel in build_meta #4218
Conversation
Hi @jameshilliard , thank you very much for the contribution. There is a problem of lack of consensus here. The best here would be working towards a more prevalent solution. |
The impression I got from the various threads is that changing the behavior of |
Hi @jameshilliard thank you very much for having a deeper look on this and working towards the solution.
I don't think this assessment is entirely accurate. In the thread linked, there is a lot of people asking for a long term solution, which is the point being discussed in #4083. When working on the error that prompted #4079, I proposed the patch (describing the approach I would use for it) in the same thread, so even if the participants did not had the time review #4079, they were informed about the proposed changes before they were applied. Moreover, after the patch proposal, there was one comment "against", but my interpretation is that it was a comment in the nature "we need a proper/major fix or long-term solution" other than against the particular proposed patch (I did point that out in the thread). In the same thread, I got feedback from one of #4079 makes it clear that the change is not the final solution for the Now, my problem with this PR is that it fixes problems for one group of users, but re-introduces problems for another group of users... We are between a rock and a hard place here, so I don't think adopting this PR exactly how it is right now would be beneficial, we would only be caught in the middle of a tug of war... The best approach in my opinion is proceeding towards #4083, which would fix the problem for all groups of users. Suggested WorkaroundPlease also note that the way it is right now The only known "stable" mechanism so far for passing configuration parameters for individual commands is via If no other tool is relying on This is an arbitrary example that does not correspond to the reproducer mentioned in the PR original text, but gives a good idea of what is possible to do: export DIST_EXTRA_CONFIG=/tmp/setuptools-build.cfg
echo -e '[build_ext]\nparallel = 8\n[bdist_wheel]\npy_limited_api = cp311' > $DIST_EXTRA_CONFIG
python -m build Footnotes |
I'm mostly referring to this comment which seems to quite clearly indicate that this would be a significant regression. In that comment a stopgap approach for not breaking existing use cases is suggested as well and it's unclear to me why that approach was not taken instead of this one which breaks existing use cases without providing a usable replacement for those use cases. See:
When it comes to python packaging there seems to be an issue where non-pip based use cases are an afterthought.
So why not just offer a new flag for the new behavior and preserve the previous behavior under the old flag as a stopgap?
So setuptools warns quite loudly that directly invoking
Hmm, I'll give this a try and see if it's workable for us at all. I'll reopen #4217 for now since it seems to at least partially reduce the breakage from this change. |
I wasn't aware that |
Hi @jameshilliard, thank you for taking the time to go through my comments and add your toughts. I just want to highlight that I am definitely not against fixing this bug, and that when the patch you reported as problematic was introduced, to the best of my knowledge, it was not a given that it would end up causing exceptions (you were the first one to openly report crashes that to us, after a couple of months that the PR was merged). I honestly apologize for the inconvenience. For the sake of increasing productivity and avoid further stress, the criteria that I am considering wheatear to accept PRs targeting the issue is:
... + the usual stuff (pass the tests, add relevant test cases, etc...)
You probably already saw this, but these concerns and viability were discussed in: #2491 (comment)
You mentioned a proposed stopgap approach that would not break existing use cases. Please note that the proposal was not accompanied by a PR and that adding more namespaces/flags/options/structure to the interface would require more discussion... My honest interpretation of this comment was: "this is not enough users have the need for passing
This is a very fair comment, and I agree with that. Ideally we should involve people that have stakes of different use cases, so everyone has a say. In Setuptools we are open to work with everyone and we try to find compromises that also would work for non-pip based use cases. There were changes in both In this particular instance, it is clear that both But equally in other places in the code base, you can find compatibility specific hacks for non-
Compounding more fragile APIs on top of an already fragile API does not sound like a good idea to me. I might to sound like a broken record but: it was not immediately a given that the change would break other workflows. It took around 3 months for us to be reported otherwise - it there was an immediate report before The reason why we are having the discussion in the first place is because
Please note that the whole transition to PEP 517 was extremely difficult to setuptools itself as well. We still have problems nowadays with it, and we still have spend tons of energy on it. We are all kind of in the same boat. Since deprecation warnings and documentation changes are the only means setuptools have to let their users know that something will change at some point in the future, our approach is to add them as soon as possible. However, we still keep deprecated features around for months in a row (and more often years) to avoid major breaks...
Thank you very much. I think that is a good idea. If we can fix this problem without re-introducing other issues, that would be the best. |
We probably can close this now, in favour of #4217. |
Summary of changes
Reverts #4079 which broke the ability to pass
build_ext
arguments via config settings.For example this command was broken by #4079 when building psycopg2.
Closes
Pull Request Checklist
newsfragments/
.(See documentation for details)