From 07aa5e76b5faea91f55fc5f566e8b766c7685c51 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Sat, 2 May 2015 22:26:39 +0100 Subject: [PATCH] Retire the setup_requires hack in cases where it isn't needed (and can cause build problems). refs #2286 Signed-off-by: Daira Hopwood --- setup.py | 18 +----------------- src/allmydata/_auto_deps.py | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/setup.py b/setup.py index 5f687853..190c339c 100644 --- a/setup.py +++ b/setup.py @@ -64,6 +64,7 @@ else: adglobals = {} execfile('src/allmydata/_auto_deps.py', adglobals) install_requires = adglobals['install_requires'] +setup_requires = adglobals['setup_requires'] if len(sys.argv) > 1 and sys.argv[1] == '--fakedependency': del sys.argv[1] @@ -113,23 +114,6 @@ trove_classifiers=[ ] -setup_requires = [] - -# Nevow imports itself when building, which causes Twisted and zope.interface -# to be imported. We need to make sure that the versions of Twisted and -# zope.interface used at build time satisfy Nevow's requirements. If not -# then there are two problems: -# - prior to Nevow v0.9.33, Nevow didn't declare its dependency on Twisted -# in a way that enabled setuptools to satisfy that requirement at -# build time. -# - some versions of zope.interface, e.g. v3.6.4, are incompatible with -# Nevow, and we need to avoid those both at build and run-time. -# -# This only matters when compatible versions of Twisted and zope.interface -# are not already installed. Retire this hack when -# https://bugs.launchpad.net/nevow/+bug/812537 has been fixed. -setup_requires += [req for req in install_requires if req.startswith('Twisted') or req.startswith('zope.interface')] - # We no longer have any requirements specific to tests. tests_require=[] diff --git a/src/allmydata/_auto_deps.py b/src/allmydata/_auto_deps.py index e8e2b172..ba74b1ae 100644 --- a/src/allmydata/_auto_deps.py +++ b/src/allmydata/_auto_deps.py @@ -121,12 +121,25 @@ if not hasattr(sys, 'frozen'): # already installed. # # +# When the fallback is used we also need to work around the fact +# that Nevow imports itself when building, which causes Twisted +# and zope.interface to be imported; therefore, we need to set +# setup_requires to make sure that the versions of Twisted and +# zope.interface used at build time satisfy Nevow's requirements. +# # In cases where this fallback isn't needed, we prefer Nevow >= 0.11.1 # which can be installed using pip, and Twisted >= 13.0.0 which -# Nevow 0.11.1 depends on. +# Nevow 0.11.1 depends on. In this case we should *not* use the +# setup_requires hack, because if we do then the build will break +# when Twisted < 13.0.0 is already installed (even though it could +# have succeeded by building a later version under support/ ). +# # # # +# + +setup_requires = [] _use_old_Twisted_and_Nevow = False if sys.platform == "win32": @@ -140,6 +153,8 @@ if _use_old_Twisted_and_Nevow: "Twisted >= 11.1.0, <= 12.1.0", "Nevow >= 0.9.33, <= 0.10", ] + setup_requires += [req for req in install_requires if req.startswith('Twisted') + or req.startswith('zope.interface')] else: install_requires += [ "Twisted >= 13.0.0", -- 2.45.2