Use pillow-depends on HTTPError

This commit is contained in:
Andrew Murray 2019-10-28 23:11:13 +11:00
parent bb1fc75e55
commit 2296614e5f
3 changed files with 44 additions and 26 deletions

View File

@ -45,8 +45,6 @@ def extract(src, dest):
def extract_libs(): def extract_libs():
for name, lib in libs.items(): for name, lib in libs.items():
filename = lib["filename"]
if not os.path.exists(filename):
filename = fetch(lib["url"]) filename = fetch(lib["url"])
if name == "openjpeg": if name == "openjpeg":
for compiler in all_compilers(): for compiler in all_compilers():

View File

@ -28,96 +28,95 @@ libs = {
# }, # },
"zlib": { "zlib": {
"url": "http://zlib.net/zlib1211.zip", "url": "http://zlib.net/zlib1211.zip",
"filename": PILLOW_DEPENDS_DIR + "zlib1211.zip", "filename": "zlib1211.zip",
"dir": "zlib-1.2.11", "dir": "zlib-1.2.11",
}, },
"jpeg": { "jpeg": {
"url": "http://www.ijg.org/files/jpegsr9c.zip", "url": "http://www.ijg.org/files/jpegsr9c.zip",
"filename": PILLOW_DEPENDS_DIR + "jpegsr9c.zip", "filename": "jpegsr9c.zip",
"dir": "jpeg-9c", "dir": "jpeg-9c",
}, },
"tiff": { "tiff": {
"url": "ftp://download.osgeo.org/libtiff/tiff-4.0.10.tar.gz", "url": "ftp://download.osgeo.org/libtiff/tiff-4.0.10.tar.gz",
"filename": PILLOW_DEPENDS_DIR + "tiff-4.0.10.tar.gz", "filename": "tiff-4.0.10.tar.gz",
"dir": "tiff-4.0.10", "dir": "tiff-4.0.10",
}, },
"freetype": { "freetype": {
"url": "https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz", # noqa: E501 "url": "https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz", # noqa: E501
"filename": PILLOW_DEPENDS_DIR + "freetype-2.10.1.tar.gz", "filename": "freetype-2.10.1.tar.gz",
"dir": "freetype-2.10.1", "dir": "freetype-2.10.1",
}, },
"lcms-2.7": { "lcms-2.7": {
"url": SF_MIRROR + "/project/lcms/lcms/2.7/lcms2-2.7.zip", "url": SF_MIRROR + "/project/lcms/lcms/2.7/lcms2-2.7.zip",
"filename": PILLOW_DEPENDS_DIR + "lcms2-2.7.zip", "filename": "lcms2-2.7.zip",
"dir": "lcms2-2.7", "dir": "lcms2-2.7",
}, },
"lcms-2.8": { "lcms-2.8": {
"url": SF_MIRROR + "/project/lcms/lcms/2.8/lcms2-2.8.zip", "url": SF_MIRROR + "/project/lcms/lcms/2.8/lcms2-2.8.zip",
"filename": PILLOW_DEPENDS_DIR + "lcms2-2.8.zip", "filename": "lcms2-2.8.zip",
"dir": "lcms2-2.8", "dir": "lcms2-2.8",
}, },
"ghostscript": { "ghostscript": {
"url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs927/ghostscript-9.27.tar.gz", # noqa: E501 "url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs927/ghostscript-9.27.tar.gz", # noqa: E501
"filename": PILLOW_DEPENDS_DIR + "ghostscript-9.27.tar.gz", "filename": "ghostscript-9.27.tar.gz",
"dir": "ghostscript-9.27", "dir": "ghostscript-9.27",
}, },
"tcl-8.5": { "tcl-8.5": {
"url": SF_MIRROR + "/project/tcl/Tcl/8.5.19/tcl8519-src.zip", "url": SF_MIRROR + "/project/tcl/Tcl/8.5.19/tcl8519-src.zip",
"filename": PILLOW_DEPENDS_DIR + "tcl8519-src.zip", "filename": "tcl8519-src.zip",
"dir": "", "dir": "",
}, },
"tk-8.5": { "tk-8.5": {
"url": SF_MIRROR + "/project/tcl/Tcl/8.5.19/tk8519-src.zip", "url": SF_MIRROR + "/project/tcl/Tcl/8.5.19/tk8519-src.zip",
"filename": PILLOW_DEPENDS_DIR + "tk8519-src.zip", "filename": "tk8519-src.zip",
"dir": "", "dir": "",
"version": "8.5.19", "version": "8.5.19",
}, },
"tcl-8.6": { "tcl-8.6": {
"url": SF_MIRROR + "/project/tcl/Tcl/8.6.9/tcl869-src.zip", "url": SF_MIRROR + "/project/tcl/Tcl/8.6.9/tcl869-src.zip",
"filename": PILLOW_DEPENDS_DIR + "tcl869-src.zip", "filename": "tcl869-src.zip",
"dir": "", "dir": "",
}, },
"tk-8.6": { "tk-8.6": {
"url": SF_MIRROR + "/project/tcl/Tcl/8.6.9/tk869-src.zip", "url": SF_MIRROR + "/project/tcl/Tcl/8.6.9/tk869-src.zip",
"filename": PILLOW_DEPENDS_DIR + "tk869-src.zip", "filename": "tk869-src.zip",
"dir": "", "dir": "",
"version": "8.6.9", "version": "8.6.9",
}, },
"webp": { "webp": {
"url": "http://downloads.webmproject.org/releases/webp/libwebp-1.0.3.tar.gz", "url": "http://downloads.webmproject.org/releases/webp/libwebp-1.0.3.tar.gz",
"filename": PILLOW_DEPENDS_DIR + "libwebp-1.0.3.tar.gz", "filename": "libwebp-1.0.3.tar.gz",
"dir": "libwebp-1.0.3", "dir": "libwebp-1.0.3",
}, },
"openjpeg": { "openjpeg": {
"url": "https://github.com/uclouvain/openjpeg/archive/v2.3.1.tar.gz", "url": "https://github.com/uclouvain/openjpeg/archive/v2.3.1.tar.gz",
"filename": PILLOW_DEPENDS_DIR + "openjpeg-2.3.1.tar.gz", "filename": "openjpeg-2.3.1.tar.gz",
"dir": "openjpeg-2.3.1", "dir": "openjpeg-2.3.1",
}, },
"jpeg-turbo": { "jpeg-turbo": {
"url": SF_MIRROR + "/project/libjpeg-turbo/2.0.3/libjpeg-turbo-2.0.3.tar.gz", "url": SF_MIRROR + "/project/libjpeg-turbo/2.0.3/libjpeg-turbo-2.0.3.tar.gz",
"filename": PILLOW_DEPENDS_DIR + "libjpeg-turbo-2.0.3.tar.gz", "filename": "libjpeg-turbo-2.0.3.tar.gz",
"dir": "libjpeg-turbo-2.0.3", "dir": "libjpeg-turbo-2.0.3",
}, },
# ba653c8: Merge tag '2.12.5' into msvc # ba653c8: Merge tag '2.12.5' into msvc
"imagequant": { "imagequant": {
"url": "https://github.com/ImageOptim/libimagequant/archive/ba653c8ccb34dde4e21c6076d85a72d21ed9d971.zip", # noqa: E501 "url": "https://github.com/ImageOptim/libimagequant/archive/ba653c8ccb34dde4e21c6076d85a72d21ed9d971.zip", # noqa: E501
"filename": PILLOW_DEPENDS_DIR "filename": "libimagequant-ba653c8ccb34dde4e21c6076d85a72d21ed9d971.zip",
+ "libimagequant-ba653c8ccb34dde4e21c6076d85a72d21ed9d971.zip",
"dir": "libimagequant-ba653c8ccb34dde4e21c6076d85a72d21ed9d971", "dir": "libimagequant-ba653c8ccb34dde4e21c6076d85a72d21ed9d971",
}, },
"harfbuzz": { "harfbuzz": {
"url": "https://github.com/harfbuzz/harfbuzz/archive/2.6.1.zip", "url": "https://github.com/harfbuzz/harfbuzz/archive/2.6.1.zip",
"filename": PILLOW_DEPENDS_DIR + "harfbuzz-2.6.1.zip", "filename": "harfbuzz-2.6.1.zip",
"dir": "harfbuzz-2.6.1", "dir": "harfbuzz-2.6.1",
}, },
"fribidi": { "fribidi": {
"url": "https://github.com/fribidi/fribidi/archive/v1.0.7.zip", "url": "https://github.com/fribidi/fribidi/archive/v1.0.7.zip",
"filename": PILLOW_DEPENDS_DIR + "fribidi-1.0.7.zip", "filename": "fribidi-1.0.7.zip",
"dir": "fribidi-1.0.7", "dir": "fribidi-1.0.7",
}, },
"libraqm": { "libraqm": {
"url": "https://github.com/HOST-Oman/libraqm/archive/v0.7.0.zip", "url": "https://github.com/HOST-Oman/libraqm/archive/v0.7.0.zip",
"filename": PILLOW_DEPENDS_DIR + "libraqm-0.7.0.zip", "filename": "libraqm-0.7.0.zip",
"dir": "libraqm-0.7.0", "dir": "libraqm-0.7.0",
}, },
} }

View File

@ -3,16 +3,37 @@ import sys
import urllib.parse import urllib.parse
import urllib.request import urllib.request
from config import libs
def fetch(url): def fetch(url):
depends_filename = None
for lib in libs.values():
if lib["url"] == url:
depends_filename = lib["filename"]
break
if depends_filename and os.path.exists(depends_filename):
return depends_filename
name = urllib.parse.urlsplit(url)[2].split("/")[-1] name = urllib.parse.urlsplit(url)[2].split("/")[-1]
if not os.path.exists(name): if not os.path.exists(name):
print("Fetching", url)
def retrieve(request_url):
print("Fetching", request_url)
try: try:
r = urllib.request.urlopen(url) return urllib.request.urlopen(request_url)
except urllib.error.URLError: except urllib.error.URLError:
r = urllib.request.urlopen(url) return urllib.request.urlopen(request_url)
try:
r = retrieve(url)
except urllib.error.HTTPError:
if depends_filename:
r = retrieve(
"https://github.com/python-pillow/pillow-depends/raw/master/"
+ depends_filename
)
name = depends_filename
content = r.read() content = r.read()
with open(name, "wb") as fd: with open(name, "wb") as fd:
fd.write(content) fd.write(content)