summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAdam J. Stewart <ajstewart426@gmail.com>2017-02-20 20:09:03 -0600
committerTodd Gamblin <tgamblin@llnl.gov>2017-02-20 18:09:03 -0800
commitd2a52d6dd6232abc0a22ef3413b970b790837dd5 (patch)
treea3a6cebd8ba0f5babf8f4844b35f34ff79493ad6 /var
parentfbbcf456e9f8e14509ac0adc62ba0c8711018b5e (diff)
downloadspack-d2a52d6dd6232abc0a22ef3413b970b790837dd5.tar.gz
spack-d2a52d6dd6232abc0a22ef3413b970b790837dd5.tar.bz2
spack-d2a52d6dd6232abc0a22ef3413b970b790837dd5.tar.xz
spack-d2a52d6dd6232abc0a22ef3413b970b790837dd5.zip
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/
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/py-appdirs/package.py44
-rw-r--r--var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch17
-rw-r--r--var/spack/repos/builtin/packages/py-packaging/package.py45
-rw-r--r--var/spack/repos/builtin/packages/py-pyparsing/package.py14
-rw-r--r--var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch20
-rw-r--r--var/spack/repos/builtin/packages/py-setuptools/package.py9
-rw-r--r--var/spack/repos/builtin/packages/py-six/package.py9
7 files changed, 154 insertions, 4 deletions
diff --git a/var/spack/repos/builtin/packages/py-appdirs/package.py b/var/spack/repos/builtin/packages/py-appdirs/package.py
new file mode 100644
index 0000000000..360f56d987
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-appdirs/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch b/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch
new file mode 100644
index 0000000000..0b0eb4b84a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch
@@ -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 = []
diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py
new file mode 100644
index 0000000000..506bb6f976
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-packaging/package.py
@@ -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')
diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py
index cb158a76d6..936295a132 100644
--- a/var/spack/repos/builtin/packages/py-pyparsing/package.py
+++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py
@@ -28,6 +28,16 @@ from spack import *
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.0.3', '0fe479be09fc2cf005f753d3acc35939')
+ 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')
diff --git a/var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch b/var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch
new file mode 100644
index 0000000000..a4ba828c23
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch
@@ -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
+
diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py
index 38b316861e..c4f0ce9802 100644
--- a/var/spack/repos/builtin/packages/py-setuptools/package.py
+++ b/var/spack/repos/builtin/packages/py-setuptools/package.py
@@ -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'))
diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py
index 7d653fd102..b2faad3819 100644
--- a/var/spack/repos/builtin/packages/py-six/package.py
+++ b/var/spack/repos/builtin/packages/py-six/package.py
@@ -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')