Skip to content

Commit

Permalink
Fix setuptools bootstrapping now that dependencies are no longer vend…
Browse files Browse the repository at this point in the history
…ored (#3198)

* Fix setuptools bootstrapping now that dependencies are no longer vendored
* Reorder patch and comments
* Use exact same patch as ActiveState/appdirs#84
* Use exact same patch as https://sourceforge.net/p/pyparsing/patches/10/
  • Loading branch information
adamjstewart authored and tgamblin committed Feb 21, 2017
1 parent fbbcf45 commit d2a52d6
Show file tree
Hide file tree
Showing 7 changed files with 154 additions and 4 deletions.
44 changes: 44 additions & 0 deletions 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')
@@ -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 changes: 45 additions & 0 deletions 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')
14 changes: 12 additions & 2 deletions var/spack/repos/builtin/packages/py-pyparsing/package.py
Expand Up @@ -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.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')
@@ -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

9 changes: 9 additions & 0 deletions var/spack/repos/builtin/packages/py-setuptools/package.py
Expand Up @@ -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'))
9 changes: 7 additions & 2 deletions var/spack/repos/builtin/packages/py-six/package.py
Expand Up @@ -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')

0 comments on commit d2a52d6

Please sign in to comment.