-
-
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
[FR] Allow bootstraping setuptools by running dependencies from source #2828
Comments
Short of merging wheel into setuptools or building a setuptools wheel without the aid of the wheel package, what would be a solution to this issue? |
Can we duplicate all of the necessary entry points in https://github.com/pypa/setuptools/blob/main/bootstrap.egg-info/entry_points.txt, would that work to avoid this little dance? |
Perhaps indeed wheel could be vendored through git submodules and then added to sdist but not installed or added to final wheel package. backend-path might allow setuptools to consume it while it is creating wheel of itself. |
This is btw a huge problem until solved. It means setup.py install must be kept indefinitely for bootstrapping setuptools unless I'm missing something. The non-legacy build chain is.
and then you need hit a dependency cycle where setuptools needs wheel and wheel needs setuptools. You need to resolve that before building pip. Maybe this should be re-classified as a bug rather than enhancement? |
Fair, if it will get done that way. |
FWIW, it is possible to bootstrap setuptools and wheel without using
|
What's the problem this feature will solve?
setuptools
requireswheel
to be installed to bootstrap itself, butwheel
requiressetuptools
to build, preventing bootstrapping.Even though
setuptools
now bootstraps itself via a PEP 517 builder, not everyone is able to do the same. Linux distributions, for example, need to bootstrap it from scratch.Describe the solution you'd like
I would like an option, perhaps an environment variable, to skip the dependency checks, and to make the
bdist_wheel
command always available.The easiest way to do this bootstrapping is to run everything from source, which trips up
setuptools
' dependency checks, and also as a consequence makes thebdist_wheel
command unavailable.Alternative Solutions
I have written https://github.com/FFY00/python-bootstrap to help with this task, but currently, I need to run
setup.py egg_info
onsetuptools
, copy that to the package directory, in order to tricksetuptools
to think it is installed, and then do the same forwheel
, only after that I can actually build wheels forsetuptools
andwheel
.https://github.com/FFY00/python-bootstrap/blob/4004fda86bc82470b0ee1b564764f8ba9960b493/bootstrap/build.py#L43
https://github.com/FFY00/python-bootstrap/blob/bf68a5ff74706e348de1f3dddeaf51bc5f37a449/bootstrap/__init__.py#L109
See #2088 (comment) for more details.
Ideally,
setuptools
would actually be able to bootstrap itself without any dependencies.See https://github.com/takluyver/flit/tree/master/flit_core for example.
Additional context
No response
Code of Conduct
The text was updated successfully, but these errors were encountered: