Fix setuptools bootstrapping now that dependencies are no longer vendored (#3198)
* Fix setuptools bootstrapping now that dependencies are no longer vendored * Reorder patch and comments * Use exact same patch as https://github.com/ActiveState/appdirs/pull/84 * Use exact same patch as https://sourceforge.net/p/pyparsing/patches/10/
This commit is contained in:
parent
fbbcf456e9
commit
d2a52d6dd6
44
var/spack/repos/builtin/packages/py-appdirs/package.py
Normal file
44
var/spack/repos/builtin/packages/py-appdirs/package.py
Normal file
@ -0,0 +1,44 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the LICENSE file for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
|
||||
|
||||
class PyAppdirs(PythonPackage):
|
||||
"""A small Python module for determining appropriate platform-specific
|
||||
dirs, e.g. a "user data dir"."""
|
||||
|
||||
homepage = "https://github.com/ActiveState/appdirs"
|
||||
url = "https://pypi.io/packages/source/a/appdirs/appdirs-1.4.0.tar.gz"
|
||||
|
||||
version('1.4.0', '1d17b4c9694ab84794e228f28dc3275b')
|
||||
|
||||
patch('setuptools-import.patch', when='@:1.4.0')
|
||||
|
||||
# Newer versions of setuptools require appdirs. Although setuptools is an
|
||||
# optional dependency of appdirs, if it is not found, setup.py will
|
||||
# fallback on distutils.core instead. Don't add a setuptools dependency
|
||||
# or we won't be able to bootstrap setuptools.
|
||||
|
||||
# depends_on('py-setuptools', type='build')
|
@ -0,0 +1,17 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index ccd1e72..5d907aa 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -2,7 +2,12 @@
|
||||
import sys
|
||||
import os
|
||||
import os.path
|
||||
-from setuptools import setup
|
||||
+# appdirs is a dependency of setuptools, so allow installing without it.
|
||||
+try:
|
||||
+ from setuptools import setup
|
||||
+except ImportError:
|
||||
+ from distutils.core import setup
|
||||
import appdirs
|
||||
|
||||
tests_require = []
|
45
var/spack/repos/builtin/packages/py-packaging/package.py
Normal file
45
var/spack/repos/builtin/packages/py-packaging/package.py
Normal file
@ -0,0 +1,45 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the LICENSE file for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
|
||||
|
||||
class PyPackaging(PythonPackage):
|
||||
"""Core utilities for Python packages."""
|
||||
|
||||
homepage = "https://github.com/pypa/packaging"
|
||||
url = "https://pypi.io/packages/source/p/packaging/packaging-16.8.tar.gz"
|
||||
|
||||
version('16.8', '53895cdca04ecff80b54128e475b5d3b')
|
||||
|
||||
# Not needed for the installation, but used at runtime
|
||||
depends_on('py-six', type='run')
|
||||
depends_on('py-pyparsing', type='run')
|
||||
|
||||
# Newer versions of setuptools require packaging. Although setuptools is an
|
||||
# optional dependency of packaging, if it is not found, setup.py will
|
||||
# fallback on distutils.core instead. Don't add a setuptools dependency
|
||||
# or we won't be able to bootstrap setuptools.
|
||||
|
||||
# depends_on('py-setuptools', type='build')
|
@ -28,6 +28,16 @@
|
||||
class PyPyparsing(PythonPackage):
|
||||
"""A Python Parsing Module."""
|
||||
homepage = "https://pypi.python.org/pypi/pyparsing"
|
||||
url = "https://pypi.python.org/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz"
|
||||
url = "https://pypi.io/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz"
|
||||
|
||||
version('2.1.10', '065908b92904e0d3634eb156f44cc80e')
|
||||
version('2.0.3', '0fe479be09fc2cf005f753d3acc35939')
|
||||
|
||||
patch('setuptools-import.patch', when='@:2.1.10')
|
||||
|
||||
# Newer versions of setuptools require pyparsing. Although setuptools is an
|
||||
# optional dependency of pyparsing, if it is not found, setup.py will
|
||||
# fallback on distutils.core instead. Don't add a setuptools dependency
|
||||
# or we won't be able to bootstrap setuptools.
|
||||
|
||||
# depends_on('py-setuptools', type='build')
|
||||
|
@ -0,0 +1,20 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 82061c6..ff342af 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -1,7 +1,13 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""Setup script for the pyparsing module distribution."""
|
||||
-from setuptools import setup
|
||||
+
|
||||
+# Setuptools depends on pyparsing (via packaging) as of version 34, so allow
|
||||
+# installing without it to avoid bootstrap problems.
|
||||
+try:
|
||||
+ from setuptools import setup
|
||||
+except ImportError:
|
||||
+ from distutils.core import setup
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
@ -42,3 +42,12 @@ class PySetuptools(PythonPackage):
|
||||
version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06')
|
||||
version('16.0', '0ace0b96233516fc5f7c857d086aa3ad')
|
||||
version('11.3.1', '01f69212e019a2420c1693fb43593930')
|
||||
|
||||
depends_on('python@2.6:2.7,3.3:')
|
||||
|
||||
# Previously, setuptools vendored all of its dependencies to allow
|
||||
# easy bootstrapping. As of version 34.0.0, this is no longer done
|
||||
# and the dependencies need to be installed externally.
|
||||
depends_on('py-packaging@16.8:', when='@34.0.0:', type=('build', 'run'))
|
||||
depends_on('py-six@1.6.0:', when='@34.0.0:', type=('build', 'run'))
|
||||
depends_on('py-appdirs@1.4.0:', when='@34.0.0:', type=('build', 'run'))
|
||||
|
@ -29,11 +29,16 @@ class PySix(PythonPackage):
|
||||
"""Python 2 and 3 compatibility utilities."""
|
||||
|
||||
homepage = "https://pypi.python.org/pypi/six"
|
||||
url = "https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz"
|
||||
url = "https://pypi.io/packages/source/s/six/six-1.9.0.tar.gz"
|
||||
|
||||
version('1.10.0', '34eed507548117b2ab523ab14b2f8b55')
|
||||
version('1.9.0', '476881ef4012262dfc8adc645ee786c4')
|
||||
|
||||
extends('python', ignore=r'bin/pytest')
|
||||
|
||||
depends_on('py-setuptools', type='build')
|
||||
# Newer versions of setuptools require six. Although setuptools is an
|
||||
# optional dependency of six, if it is not found, setup.py will fallback
|
||||
# on distutils.core instead. Don't add a setuptools dependency or we
|
||||
# won't be able to bootstrap setuptools.
|
||||
|
||||
# depends_on('py-setuptools', type='build')
|
||||
|
Loading…
Reference in New Issue
Block a user