mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-08 03:14:21 +00:00
modify build_helpers files
Should close #1342. This makes the actual changes to the two test files (separated from the 'rename' patch to avoid VC complications).
This commit is contained in:
parent
533e4bc813
commit
d867765604
@ -12,7 +12,8 @@ def test():
|
||||
#
|
||||
# python setup.py --fakedependency -v test -s buildtest.test_build_with_fake_dist
|
||||
#
|
||||
# which imports fakedependency and passes if fakedependency.__version__ == '1.0.0'.
|
||||
# which requires "fakedependency >= 1.0.0", imports fakedependency
|
||||
# and passes if fakedependency.__version__ == '1.0.0'.
|
||||
#
|
||||
# The goal is to turn red if the build system tries to build the
|
||||
# source dist when it could have used the binary dist.
|
||||
|
@ -1,30 +1,87 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# We put a fake "pycryptopp-0.5.13" package on the PYTHONPATH so that
|
||||
# the build system thinks pycryptopp-0.5.13 is already installed. Then
|
||||
# we execute 'setup.py trial'. If the build system is too naive/greedy
|
||||
# about finding dependencies, it will latch onto the
|
||||
# "pycryptopp-0.5.13" and then will be unable to satisfy the
|
||||
# requirement (from _auto_deps.py) for pycryptopp >= 0.5.20 (or
|
||||
# pycryptopp >= 0.5.14, depending on machine architecture). This is
|
||||
# currently happening on trunk, see #1190. So with trunk, running
|
||||
# test-with-fake-pkg.py shows a failure, but with the ticket1190
|
||||
# branch, test-with-fake-pkg.py succeeds.
|
||||
import StringIO, os, platform, shutil, subprocess, sys, tarfile, zipfile
|
||||
import pkg_resources
|
||||
|
||||
import os, subprocess, sys
|
||||
def test():
|
||||
# We put a "fakedependency-0.9.9.egg" package and a
|
||||
# "fakedependency-1.0.0.tar.gz" into a directory, but the former is
|
||||
# booby-trapped so it will raise an exception when you try to import it.
|
||||
#
|
||||
# Then we run
|
||||
#
|
||||
# python setup.py --fakedependency -v test -s buildtest.test_build_with_fake_dist
|
||||
#
|
||||
# which requires "fakedependency >= 1.0.0", imports fakedependency
|
||||
# and passes if fakedependency.__version__ == '1.0.0'.
|
||||
#
|
||||
# The goal is to turn red if the build system tries to use the
|
||||
# source dist when it could have used the binary dist.
|
||||
#
|
||||
# Note that for this test to make sense, Tahoe-LAFS needs to be asking
|
||||
# for a version of fakedependency which can be satisfied by 1.0.0.
|
||||
# The --fakedependency option to setup.py arranges that.
|
||||
|
||||
fakepkgdir = 'misc/build_helpers/fakepkgs'
|
||||
fakepkgname = "pycryptopp"
|
||||
fakepkgversion = "0.5.13"
|
||||
testsuite = "allmydata.test.test_backupdb"
|
||||
fake_distdir = 'tahoe-deps'
|
||||
fake_distname = "fakedependency"
|
||||
fake_sdistversion = "1.0.0"
|
||||
fake_bdistversion = "0.9.9"
|
||||
|
||||
pkgdirname = os.path.join(os.getcwd(), fakepkgdir, '%s-%s.egg' % (fakepkgname, fakepkgversion))
|
||||
bdist_init = "raise Exception('Aha I caught you trying to import me. I am a fakedependency 0.9.9 package and you should not be satisfied with something < 1.0.0.')"
|
||||
sdist_setup = "import distutils.core\ndistutils.core.setup(name='fakedependency', version='1.0.0', packages=['fakedependency'])"
|
||||
sdist_init = "__version__ = '%s'" % (fake_sdistversion,)
|
||||
|
||||
try:
|
||||
os.makedirs(pkgdirname)
|
||||
except OSError:
|
||||
# probably already exists
|
||||
pass
|
||||
testsuite = "buildtest.test_build_with_fake_dist"
|
||||
|
||||
os.environ['PYTHONPATH']=pkgdirname+os.pathsep+os.environ.get('PYTHONPATH','')
|
||||
sys.exit(subprocess.call([sys.executable, 'setup.py', 'trial', '-s', testsuite], env=os.environ))
|
||||
dist_dirname = os.path.join(os.getcwd(), fake_distdir)
|
||||
|
||||
try:
|
||||
os.makedirs(dist_dirname)
|
||||
except OSError:
|
||||
# probably already exists
|
||||
pass
|
||||
|
||||
bdist_egg_name = os.path.join(dist_dirname, '%s-%s-py%s.%s-%s.egg' % (fake_distname, fake_bdistversion, platform.python_version_tuple()[0], platform.python_version_tuple()[1], pkg_resources.get_supported_platform()))
|
||||
try:
|
||||
bdist_egg = zipfile.ZipFile(bdist_egg_name, 'w')
|
||||
bdist_egg.writestr('fakedependency/__init__.py', bdist_init)
|
||||
bdist_egg.close()
|
||||
|
||||
sdist_name = os.path.join(dist_dirname, '%s-%s.tar' % (fake_distname, fake_sdistversion))
|
||||
sdist = tarfile.open(sdist_name, 'w:gz')
|
||||
sdist.errorlevel = 2
|
||||
tarinfo = tarfile.TarInfo('setup.py')
|
||||
tarinfo.errorlevel = 2
|
||||
tarinfo.size = len(sdist_setup)
|
||||
sdist.addfile(tarinfo, StringIO.StringIO(sdist_setup))
|
||||
tarinfo = tarfile.TarInfo('fakedependency/__init__.py')
|
||||
tarinfo.errorlevel = 2
|
||||
tarinfo.size = len(sdist_init)
|
||||
sdist.addfile(tarinfo, StringIO.StringIO(sdist_init))
|
||||
sdist.close()
|
||||
|
||||
sys.exit(subprocess.call([sys.executable, "setup.py", "--fakedependency", "-v", "test", "-s", testsuite],
|
||||
env=os.environ))
|
||||
finally:
|
||||
os.remove(bdist_egg_name)
|
||||
os.remove(sdist_name)
|
||||
cleanup()
|
||||
|
||||
def cleanup():
|
||||
egg_info = os.path.join('src', 'allmydata_tahoe.egg-info')
|
||||
bin_tahoe = os.path.join('bin', 'tahoe')
|
||||
bin_tahoe_pyscript = os.path.join('bin', 'tahoe.pyscript')
|
||||
|
||||
if os.path.exists('build'):
|
||||
shutil.rmtree('build')
|
||||
if os.path.exists('support'):
|
||||
shutil.rmtree('support')
|
||||
if os.path.exists(egg_info):
|
||||
shutil.rmtree(egg_info)
|
||||
if os.path.exists(bin_tahoe):
|
||||
os.remove(bin_tahoe)
|
||||
if os.path.exists(bin_tahoe_pyscript):
|
||||
os.remove(bin_tahoe_pyscript)
|
||||
|
||||
if __name__ == '__main__':
|
||||
test()
|
||||
|
Loading…
x
Reference in New Issue
Block a user