Take this setup.py that implements setup requirements (requirements needed for setup.py itself to run) https://bitbucket.org/dholth/setup-requires/src/tip/setup.py Require your new build system using that mechanism, by mentioning it in setup.cfg Then instead of calling setup() from setuptools at the bottom, emulate the setup.py build system interface documented at http://pip.readthedocs.org/en/stable/reference/pip_install/#build-system-int... to invoke new build system. Check to make sure whether pip accepts .dist-info when calling the egg_info command. Then write a command for new build system that adds the shim setup.py to an sdist. Now you have a setup.py that can download and install new-build-system and interoperate with pip, without having to change pip at all.
my suggestion would be provide a whl_setup.py that works in a fashion similar to the current ez_setup however instead of using easy_install + eggs, it would use pip install --target into a folder relative to the setup.py that invoked it if there was a mechanism to prevent pip from invoking setup.py with its stub, that system could even be used to install more recent setuptools itself into the "setup site" a setup.py would then just use whl_setup to get at setuptools, and as a nice extra, it could hijack the install_requirements method of a distrbution, so pip would be used to install the requirements into the "setup site" as well that way we could get rid of the need for eggs to make setup_requires nice, and could just have pip deal with all the details in addition it could bail out on too old pip (after all it needs a properly working install target support to provide the "setup site" with packages, and a even newer pip version should the stub-disabling be implemented) -- Ronny On 10/21/2015 08:35 PM, Daniel Holth wrote:
Take this setup.py that implements setup requirements (requirements needed for setup.py itself to run) https://bitbucket.org/dholth/setup-requires/src/tip/setup.py
Require your new build system using that mechanism, by mentioning it in setup.cfg
Then instead of calling setup() from setuptools at the bottom, emulate the setup.py build system interface documented at http://pip.readthedocs.org/en/stable/reference/pip_install/#build-system-int... to invoke new build system. Check to make sure whether pip accepts .dist-info when calling the egg_info command.
Then write a command for new build system that adds the shim setup.py to an sdist.
Now you have a setup.py that can download and install new-build-system and interoperate with pip, without having to change pip at all.
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig
participants (2)
-
Daniel Holth
-
Ronny Pfannschmidt