Fix py27-cxfreeze tox environment
Use a custom script to install a patched version of cx_freeze, as required in Ubuntu 14.04 systems --HG-- branch : cx_freeze_ubuntu
This commit is contained in:
parent
a6b5f583a7
commit
6fe5493c3c
|
@ -25,6 +25,8 @@ syntax:glob
|
|||
doc/*/_build
|
||||
build/
|
||||
dist/
|
||||
testing/cx_freeze/build
|
||||
testing/cx_freeze/cx_freeze_source
|
||||
*.egg-info
|
||||
issue/
|
||||
env/
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
"""
|
||||
Installs cx_freeze from source, but first patching
|
||||
setup.py as described here:
|
||||
|
||||
http://stackoverflow.com/questions/25107697/compiling-cx-freeze-under-ubuntu
|
||||
"""
|
||||
import glob
|
||||
import shutil
|
||||
import tarfile
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
|
||||
if __name__ == '__main__':
|
||||
if 'ubuntu' not in platform.version().lower():
|
||||
|
||||
print('Not Ubuntu, installing using pip. (platform.version() is %r)' %
|
||||
platform.version())
|
||||
res = os.system('pip install cx_freeze')
|
||||
if res != 0:
|
||||
sys.exit(res)
|
||||
sys.exit(0)
|
||||
|
||||
if os.path.isdir('cx_freeze_source'):
|
||||
shutil.rmtree('cx_freeze_source')
|
||||
os.mkdir('cx_freeze_source')
|
||||
|
||||
res = os.system('pip install --download cx_freeze_source --no-use-wheel '
|
||||
'cx_freeze')
|
||||
if res != 0:
|
||||
sys.exit(res)
|
||||
|
||||
packages = glob.glob('cx_freeze_source/*.tar.gz')
|
||||
assert len(packages) == 1
|
||||
tar_filename = packages[0]
|
||||
|
||||
tar_file = tarfile.open(tar_filename)
|
||||
try:
|
||||
tar_file.extractall(path='cx_freeze_source')
|
||||
finally:
|
||||
tar_file.close()
|
||||
|
||||
basename = os.path.basename(tar_filename).replace('.tar.gz', '')
|
||||
setup_py_filename = 'cx_freeze_source/%s/setup.py' % basename
|
||||
with open(setup_py_filename) as f:
|
||||
lines = f.readlines()
|
||||
|
||||
line_to_patch = 'if not vars.get("Py_ENABLE_SHARED", 0):'
|
||||
for index, line in enumerate(lines):
|
||||
if line_to_patch in line:
|
||||
indent = line[:line.index(line_to_patch)]
|
||||
lines[index] = indent + 'if True:\n'
|
||||
print('Patched line %d' % (index + 1))
|
||||
break
|
||||
else:
|
||||
sys.exit('Could not find line in setup.py to patch!')
|
||||
|
||||
with open(setup_py_filename, 'w') as f:
|
||||
f.writelines(lines)
|
||||
|
||||
os.chdir('cx_freeze_source/%s' % basename)
|
||||
res = os.system('python setup.py install')
|
||||
if res != 0:
|
||||
sys.exit(res)
|
||||
|
||||
sys.exit(0)
|
2
tox.ini
2
tox.ini
|
@ -125,10 +125,10 @@ commands=
|
|||
-rfsxX --junitxml={envlogdir}/junit-{envname}2.xml []
|
||||
|
||||
[testenv:py27-cxfreeze]
|
||||
deps=cx_freeze
|
||||
changedir=testing/cx_freeze
|
||||
basepython=python2.7
|
||||
commands=
|
||||
{envpython} install_cx_freeze.py
|
||||
{envpython} runtests_setup.py build --build-exe build
|
||||
{envpython} tox_run.py
|
||||
|
||||
|
|
Loading…
Reference in New Issue