From: Daira Hopwood Date: Sat, 2 May 2015 21:26:39 +0000 (+0100) Subject: Retire the setup_requires hack in cases where it isn't needed (and can cause build... X-Git-Tag: allmydata-tahoe-1.10.1a1~10 X-Git-Url: https://git.rkrishnan.org/pf/content/en/service/(%5B%5E?a=commitdiff_plain;h=07aa5e76b5faea91f55fc5f566e8b766c7685c51;p=tahoe-lafs%2Ftahoe-lafs.git Retire the setup_requires hack in cases where it isn't needed (and can cause build problems). refs #2286 Signed-off-by: Daira Hopwood --- 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",