mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 09:26:16 +03:00
python/multiprocessing build process + clean/dist options
This commit is contained in:
parent
2f7bbffb5b
commit
251749b110
|
@ -1,4 +1,8 @@
|
|||
#/usr/bin/env python34
|
||||
#/usr/bin/env python3
|
||||
|
||||
import subprocess, multiprocessing
|
||||
import shutil
|
||||
import sys, getopt
|
||||
|
||||
from config import *
|
||||
|
||||
|
@ -10,6 +14,29 @@ def setup_vms():
|
|||
(py, arch, VIRT_BASE, py, arch))
|
||||
return "\n".join(ret)
|
||||
|
||||
def run_script(params):
|
||||
(version, script) = params
|
||||
try:
|
||||
print ("Running %s" %version)
|
||||
filename = 'build_pillow_%s.cmd' % version
|
||||
with open(filename, 'w') as f:
|
||||
f.write(script)
|
||||
|
||||
command = ['powershell', "./%s" %filename]
|
||||
proc = subprocess.Popen(command,
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
(trace, stderr) = proc.communicate()
|
||||
status = proc.returncode
|
||||
print ("Done with %s: %s" % (version, status))
|
||||
return (version, status, trace, stderr)
|
||||
except Exception as msg:
|
||||
print ("Error with %s: %s" % (version, str(msg)))
|
||||
return (version, -1, "", str(msg))
|
||||
|
||||
|
||||
def header(op):
|
||||
return r"""
|
||||
setlocal
|
||||
|
@ -37,19 +64,53 @@ set INCLUDE=%%INCLUDE%%;%%INCLIB%%\%(inc_dir)s;%%INCLIB%%\tcl85\include
|
|||
|
||||
setlocal
|
||||
set LIB=%%LIB%%;C:\Python%(py_ver)s\tcl
|
||||
rd /q /s build
|
||||
call c:\vp\%(py_ver)s\Scripts\python.exe setup.py %%BLDOPT%%
|
||||
endlocal
|
||||
|
||||
endlocal
|
||||
""" % args
|
||||
|
||||
script = [setup_vms(), header('install')]
|
||||
for py_version, compiler_version in pythons.items():
|
||||
script.append(build_one(py_version, compilers[(compiler_version, 32)]))
|
||||
script.append(build_one("%sx64" %py_version, compilers[(compiler_version, 64)]))
|
||||
script.append(footer())
|
||||
def clean():
|
||||
try:
|
||||
shutil.rmtree('../build')
|
||||
except:
|
||||
# could already be removed
|
||||
pass
|
||||
run_script(('virtualenvs', setup_vms()))
|
||||
|
||||
with open('build_pillows.cmd', 'w') as f:
|
||||
f.write("\n".join(script))
|
||||
def main(op):
|
||||
scripts = []
|
||||
|
||||
for py_version, compiler_version in pythons.items():
|
||||
scripts.append((py_version,
|
||||
"\n".join([header(op),
|
||||
build_one(py_version,
|
||||
compilers[(compiler_version, 32)]),
|
||||
footer()])))
|
||||
|
||||
scripts.append(("%sx64" % py_version,
|
||||
"\n".join([header(op),
|
||||
build_one("%sx64" %py_version,
|
||||
compilers[(compiler_version, 64)]),
|
||||
footer()])))
|
||||
|
||||
pool = multiprocessing.Pool()
|
||||
results = pool.map(run_script, scripts)
|
||||
|
||||
for (version, status, trace, err) in results:
|
||||
print ("Compiled %s: %s" % (version, status))
|
||||
|
||||
|
||||
|
||||
if __name__=='__main__':
|
||||
opts, args = getopt.getopt(sys.argv[1:], '', ['clean', 'dist'])
|
||||
opts = dict(opts)
|
||||
|
||||
if '--clean' in opts:
|
||||
clean()
|
||||
|
||||
op = 'install'
|
||||
if '--dist' in opts:
|
||||
op = "bdist_wininst --user-access-control=auto"
|
||||
|
||||
main(op)
|
||||
|
|
Loading…
Reference in New Issue
Block a user