diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/py-pip/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/py-pip/package.py | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 41a8b17351..e4cb9b2bb8 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -3,30 +3,54 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack import * -class PyPip(PythonPackage): +class PyPip(Package): """The PyPA recommended tool for installing Python packages.""" homepage = "https://pip.pypa.io/" - pypi = "pip/pip-20.2.tar.gz" + url = "https://files.pythonhosted.org/packages/py3/p/pip/pip-20.2-py3-none-any.whl" + list_url = "https://pypi.org/simple/pip/" - version('21.1.2', sha256='eb5df6b9ab0af50fe1098a52fd439b04730b6e066887ff7497357b9ebd19f79b') - version('20.2', sha256='912935eb20ea6a3b5ed5810dde9754fde5563f5ca9be44a8a6e5da806ade970b') - version('19.3', sha256='324d234b8f6124846b4e390df255cacbe09ce22791c3b714aa1ea6e44a4f2861') - version('19.1.1', sha256='44d3d7d3d30a1eb65c7e5ff1173cdf8f7467850605ac7cc3707b6064bddd0958') - version('19.0.3', sha256='6e6f197a1abfb45118dbb878b5c859a0edbdd33fd250100bc015b67fded4b9f2') - version('18.1', sha256='c0a292bd977ef590379a3f05d7b7f65135487b67470f6281289a94e015650ea1') - version('10.0.1', sha256='f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68') - version('9.0.1', sha256='09f243e1a7b461f654c26a725fa373211bb7ff17a9300058b205c61658ca940d') + version('21.3.1', sha256='deaf32dcd9ab821e359cd8330786bcd077604b5c5730c0b096eda46f95c24a2d', expand=False) + version('21.1.2', sha256='f8ea1baa693b61c8ad1c1d8715e59ab2b93cd3c4769bacab84afcc4279e7a70e', expand=False) + version('20.2', sha256='d75f1fc98262dabf74656245c509213a5d0f52137e40e8f8ed5cc256ddd02923', expand=False) + version('19.3', sha256='e100a7eccf085f0720b4478d3bb838e1c179b1e128ec01c0403f84e86e0e2dfb', expand=False) + version('19.1.1', sha256='993134f0475471b91452ca029d4390dc8f298ac63a712814f101cd1b6db46676', expand=False) + version('19.0.3', sha256='bd812612bbd8ba84159d9ddc0266b7fbce712fc9bc98c82dee5750546ec8ec64', expand=False) + version('18.1', sha256='7909d0a0932e88ea53a7014dfd14522ffef91a464daaaf5c573343852ef98550', expand=False) + version('10.0.1', sha256='717cdffb2833be8409433a93746744b59505f42146e8d37de6c62b430e25d6d7', expand=False) + version('9.0.1', sha256='690b762c0a8460c303c089d5d0be034fb15a5ea2b75bdf565f40421f542fefb0', expand=False) + extends('python') depends_on('python@3.6:', when='@21:', type=('build', 'run')) depends_on('python@2.7:2.8,3.5:', when='@19.2:', type=('build', 'run')) depends_on('python@2.7:2.8,3.4:', when='@18:', type=('build', 'run')) depends_on('python@2.7:2.8,3.3:', when='@10:', type=('build', 'run')) depends_on('python@2.6:2.8,3.3:', type=('build', 'run')) - # Most Python packages only require setuptools as a build dependency. - # However, pip requires setuptools during runtime as well. - depends_on('py-setuptools', type=('build', 'run')) + def url_for_version(self, version): + url = "https://files.pythonhosted.org/packages/{0}/p/pip/pip-{1}-{0}-none-any.whl" + if version >= Version('21'): + python_tag = 'py3' + else: + python_tag = 'py2.py3' + return url.format(python_tag, version) + + def install(self, spec, prefix): + # To build and install pip from source, you need setuptools, wheel, and pip + # already installed. We get around this by using a pre-built wheel to install + # itself, see: + # https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306 + whl = self.stage.archive_file + args = [os.path.join(whl, 'pip')] + std_pip_args + ['--prefix=' + prefix, whl] + python(*args) + + def setup_dependent_package(self, module, dependent_spec): + pip = self.spec['python'].command + pip.add_default_arg('-m') + pip.add_default_arg('pip') + setattr(module, 'pip', pip) |