diff --git a/winbuild/build.py b/winbuild/build.py index a58600b29..aacf13174 100644 --- a/winbuild/build.py +++ b/winbuild/build.py @@ -1,4 +1,4 @@ -#/usr/bin/env python3 +#!/usr/bin/env python3 import subprocess import shutil @@ -6,7 +6,8 @@ import sys import getopt import os -from config import * +from config import (compilers, compiler_from_env, pythons, pyversion_from_env, + VIRT_BASE, X64_EXT) def setup_vms(): @@ -131,8 +132,8 @@ def main(op): def run_one(op): - compiler = compiler_fromEnv() - py_version = pyversion_fromEnv() + compiler = compiler_from_env() + py_version = pyversion_from_env() run_script((py_version, "\n".join([header(op), diff --git a/winbuild/build_dep.py b/winbuild/build_dep.py index 02c4edb6a..4c397236b 100644 --- a/winbuild/build_dep.py +++ b/winbuild/build_dep.py @@ -1,10 +1,9 @@ -from fetch import fetch from unzip import unzip from untar import untar import os import hashlib -from config import bin_libs, compilers, compiler_fromEnv, libs +from config import compilers, compiler_from_env, libs def _relpath(*args): @@ -59,10 +58,10 @@ def extract(src, dest): return untar(src, dest) -def fetch_libs(): +def extract_libs(): for name, lib in libs.items(): if name == 'openjpeg': - filename = check_hash(fetch(lib['url']), lib['hash']) + filename = check_hash(lib['filename'], lib['hash']) for compiler in compilers.values(): if not os.path.exists(os.path.join( build_dir, lib['dir']+compiler['inc_dir'])): @@ -71,12 +70,7 @@ def fetch_libs(): os.path.join( build_dir, lib['dir']+compiler['inc_dir'])) else: - extract(check_hash(fetch(lib['url']), lib['hash']), build_dir) - - -def extract_binlib(): - lib = bin_libs['openjpeg'] - extract(lib['filename'], build_dir) + extract(check_hash(lib['filename'], lib['hash']), build_dir) def extract_openjpeg(compiler): @@ -306,13 +300,14 @@ def add_compiler(compiler): mkdirs() -fetch_libs() -# extract_binlib() -script = [header(), cp_tk(libs['tk-8.5']['version'], libs['tk-8.6']['version'])] +extract_libs() +script = [header(), + cp_tk(libs['tk-8.5']['version'], + libs['tk-8.6']['version'])] if 'PYTHON' in os.environ: - add_compiler(compiler_fromEnv()) + add_compiler(compiler_from_env()) else: # for compiler in compilers.values(): # add_compiler(compiler) diff --git a/winbuild/config.py b/winbuild/config.py index 275063af9..1b5d5e380 100644 --- a/winbuild/config.py +++ b/winbuild/config.py @@ -1,145 +1,154 @@ -import os - -SF_MIRROR = 'http://iweb.dl.sourceforge.net' - -pythons = { # '26': 7, - '27': 7, - # '32': 7, - '33': 7.1, - '34': 7.1} - -VIRT_BASE = "c:/vp/" -X64_EXT = os.environ.get('X64_EXT', "x64") - -libs = { - 'zlib': { - 'url': 'http://zlib.net/zlib128.zip', - 'hash': 'md5:126f8676442ffbd97884eb4d6f32afb4', - 'dir': 'zlib-1.2.8', - }, - 'jpeg': { - 'url': 'http://www.ijg.org/files/jpegsr9b.zip', - 'hash': 'md5:a21b8024d78ba05857a75272b4fa95ec', # not found - generated by wiredfool - 'dir': 'jpeg-9b', - }, - 'tiff': { - 'url': 'ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.6.zip', - 'hash': 'md5:f5b485d750b2001255ed64224b98b857', - 'dir': 'tiff-4.0.6', - }, - 'freetype': { - 'url': 'http://download.savannah.gnu.org/releases/freetype/freetype-2.6.5.tar.gz', - 'hash': 'md5:31b2276515d9ee1c7f37d9c9f4f3145a', - 'dir': 'freetype-2.6.5', - }, - 'lcms': { - 'url': SF_MIRROR+'/project/lcms/lcms/2.7/lcms2-2.7.zip', - 'hash': 'sha1:7ff1a5b721ca719760ba6eb4ec6f38d5e65381cf', - 'dir': 'lcms2-2.7', - }, - 'tcl-8.5': { - 'url': SF_MIRROR+'/project/tcl/Tcl/8.5.19/tcl8519-src.zip', - 'hash': 'sha1:9de57fd34bd688716c16c978db96fa16a5fde924', - 'dir': '', - }, - 'tk-8.5': { - 'url': SF_MIRROR+'/project/tcl/Tcl/8.5.19/tk8519-src.zip', - 'hash': 'sha1:78d0d2c81e024e0b48bfd7b2cc16718f08f46ed9', - 'dir': '', - 'version': '8.5.19', - }, - 'tcl-8.6': { - 'url': SF_MIRROR+'/project/tcl/Tcl/8.6.5/tcl865-src.zip', - 'hash': 'md5:932e360acb40ec760ebeed659bc893de', - 'dir': '', - }, - 'tk-8.6': { - 'url': SF_MIRROR+'/project/tcl/Tcl/8.6.5/tk865-src.zip', - 'hash': 'md5:f2f5802a5a3b1f70b906e6930db12089', - 'dir': '', - 'version': '8.6.5', - }, - 'webp': { - 'url': 'http://downloads.webmproject.org/releases/webp/libwebp-0.5.0.tar.gz', - 'hash': 'sha1:d3de815b272fcf88fc4f2dc1ab65d176bcb8df68', - 'dir': 'libwebp-0.5.0', - }, - 'openjpeg': { - 'url': SF_MIRROR+'/project/openjpeg/openjpeg/2.1.0/openjpeg-2.1.0.tar.gz', - 'hash': 'md5:f6419fcc233df84f9a81eb36633c6db6', - 'dir': 'openjpeg-2.1.0', - }, -} - -bin_libs = { - 'openjpeg': { - 'filename': 'openjpeg-2.0.0-win32-x86.zip', - 'hash': 'sha1:xxx', - 'version': '2.0' - }, -} - -compilers = { - (7, 64): { - 'env_version': 'v7.0', - 'vc_version': '2008', - 'env_flags': '/x64 /xp', - 'inc_dir': 'msvcr90-x64', - 'platform': 'x64', - 'webp_platform': 'x64', - }, - (7, 32): { - 'env_version': 'v7.0', - 'vc_version': '2008', - 'env_flags': '/x86 /xp', - 'inc_dir': 'msvcr90-x32', - 'platform': 'Win32', - 'webp_platform': 'x86', - }, - (7.1, 64): { - 'env_version': 'v7.1', - 'vc_version': '2010', - 'env_flags': '/x64 /vista', - 'inc_dir': 'msvcr10-x64', - 'platform': 'x64', - 'webp_platform': 'x64', - }, - (7.1, 32): { - 'env_version': 'v7.1', - 'vc_version': '2010', - 'env_flags': '/x86 /vista', - 'inc_dir': 'msvcr10-x32', - 'platform': 'Win32', - 'webp_platform': 'x86', - }, -} - - -def pyversion_fromEnv(): - py = os.environ['PYTHON'] - - py_version = '27' - for k in pythons.keys(): - if k in py: - py_version = k - break - - if '64' in py: - py_version = '%s%s' % (py_version, X64_EXT) - - return py_version - - -def compiler_fromEnv(): - py = os.environ['PYTHON'] - - for k, v in pythons.items(): - if k in py: - compiler_version = v - break - - bit = 32 - if '64' in py: - bit = 64 - - return compilers[(compiler_version, bit)] +import os + +SF_MIRROR = 'http://iweb.dl.sourceforge.net' +PILLOW_DEPENDS_DIR = 'C:\\pillow-depends\\' + +pythons = { # '26': 7, + '27': 7, + # '32': 7, + '33': 7.1, + '34': 7.1} + +VIRT_BASE = "c:/vp/" +X64_EXT = os.environ.get('X64_EXT', "x64") + +libs = { + # 'openjpeg': { + # 'filename': 'openjpeg-2.0.0-win32-x86.zip', + # 'hash': 'sha1:xxx', + # 'version': '2.0' + # }, + 'zlib': { + 'url': 'http://zlib.net/zlib128.zip', + 'filename': PILLOW_DEPENDS_DIR + 'zlib128.zip', + 'hash': 'md5:126f8676442ffbd97884eb4d6f32afb4', + 'dir': 'zlib-1.2.8', + }, + 'jpeg': { + 'url': 'http://www.ijg.org/files/jpegsr9b.zip', + 'filename': PILLOW_DEPENDS_DIR + 'jpegsr9b.zip', + 'hash': 'md5:a21b8024d78ba05857a75272b4fa95ec', # not found - generated by wiredfool + 'dir': 'jpeg-9b', + }, + 'tiff': { + 'url': 'ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.6.zip', + 'filename': PILLOW_DEPENDS_DIR + 'tiff-4.0.6.zip', + 'hash': 'md5:f5b485d750b2001255ed64224b98b857', + 'dir': 'tiff-4.0.6', + }, + 'freetype': { + 'url': 'http://download.savannah.gnu.org/releases/freetype/freetype-2.6.5.tar.gz', + 'filename': PILLOW_DEPENDS_DIR + 'freetype-2.6.5.tar.gz', + 'hash': 'md5:31b2276515d9ee1c7f37d9c9f4f3145a', + 'dir': 'freetype-2.6.5', + }, + 'lcms': { + 'url': SF_MIRROR+'/project/lcms/lcms/2.7/lcms2-2.7.zip', + 'filename': PILLOW_DEPENDS_DIR + 'lcms2-2.7.zip', + 'hash': 'sha1:7ff1a5b721ca719760ba6eb4ec6f38d5e65381cf', + 'dir': 'lcms2-2.7', + }, + 'tcl-8.5': { + 'url': SF_MIRROR+'/project/tcl/Tcl/8.5.19/tcl8519-src.zip', + 'filename': PILLOW_DEPENDS_DIR + 'tcl8519-src.zip', + 'hash': 'sha1:9de57fd34bd688716c16c978db96fa16a5fde924', + 'dir': '', + }, + 'tk-8.5': { + 'url': SF_MIRROR+'/project/tcl/Tcl/8.5.19/tk8519-src.zip', + 'filename': PILLOW_DEPENDS_DIR + 'tk8519-src.zip', + 'hash': 'sha1:78d0d2c81e024e0b48bfd7b2cc16718f08f46ed9', + 'dir': '', + 'version': '8.5.19', + }, + 'tcl-8.6': { + 'url': SF_MIRROR+'/project/tcl/Tcl/8.6.5/tcl865-src.zip', + 'filename': PILLOW_DEPENDS_DIR + 'tcl865-src.zip', + 'hash': 'md5:932e360acb40ec760ebeed659bc893de', + 'dir': '', + }, + 'tk-8.6': { + 'url': SF_MIRROR+'/project/tcl/Tcl/8.6.5/tk865-src.zip', + 'filename': PILLOW_DEPENDS_DIR + 'tk865-src.zip', + 'hash': 'md5:f2f5802a5a3b1f70b906e6930db12089', + 'dir': '', + 'version': '8.6.5', + }, + 'webp': { + 'url': 'http://downloads.webmproject.org/releases/webp/libwebp-0.5.0.tar.gz', + 'filename': PILLOW_DEPENDS_DIR + 'libwebp-0.5.0.tar.gz', + 'hash': 'sha1:d3de815b272fcf88fc4f2dc1ab65d176bcb8df68', + 'dir': 'libwebp-0.5.0', + }, + 'openjpeg': { + 'url': SF_MIRROR+'/project/openjpeg/openjpeg/2.1.0/openjpeg-2.1.0.tar.gz', + 'filename': PILLOW_DEPENDS_DIR + 'openjpeg-2.1.0.tar.gz', + 'hash': 'md5:f6419fcc233df84f9a81eb36633c6db6', + 'dir': 'openjpeg-2.1.0', + }, +} + +compilers = { + (7, 64): { + 'env_version': 'v7.0', + 'vc_version': '2008', + 'env_flags': '/x64 /xp', + 'inc_dir': 'msvcr90-x64', + 'platform': 'x64', + 'webp_platform': 'x64', + }, + (7, 32): { + 'env_version': 'v7.0', + 'vc_version': '2008', + 'env_flags': '/x86 /xp', + 'inc_dir': 'msvcr90-x32', + 'platform': 'Win32', + 'webp_platform': 'x86', + }, + (7.1, 64): { + 'env_version': 'v7.1', + 'vc_version': '2010', + 'env_flags': '/x64 /vista', + 'inc_dir': 'msvcr10-x64', + 'platform': 'x64', + 'webp_platform': 'x64', + }, + (7.1, 32): { + 'env_version': 'v7.1', + 'vc_version': '2010', + 'env_flags': '/x86 /vista', + 'inc_dir': 'msvcr10-x32', + 'platform': 'Win32', + 'webp_platform': 'x86', + }, +} + + +def pyversion_from_env(): + py = os.environ['PYTHON'] + + py_version = '27' + for k in pythons.keys(): + if k in py: + py_version = k + break + + if '64' in py: + py_version = '%s%s' % (py_version, X64_EXT) + + return py_version + + +def compiler_from_env(): + py = os.environ['PYTHON'] + + for k, v in pythons.items(): + if k in py: + compiler_version = v + break + + bit = 32 + if '64' in py: + bit = 64 + + return compilers[(compiler_version, bit)] diff --git a/winbuild/fetch.py b/winbuild/fetch.py index 1ab3e7208..7d140fd35 100644 --- a/winbuild/fetch.py +++ b/winbuild/fetch.py @@ -1,5 +1,5 @@ -import sys import os +import sys import urllib.parse import urllib.request