2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-11-02 19:49:43 +00:00
qpdf/build-scripts/download-external-libs
Jay Berkenbilt 4e8d21d849 Build Windows releases with openssl; automate external libraries
External libraries for Windows are now built automatically in the
qpdf/external-libs repository and include openssl in addition to zlib
and jpeg. Use these, and update the Windows build to build with the
openssl crypto provider by default. We leave the native crypto
provider enabled in case there is a problem with openssl and also to
continue to exercise that code.
2020-10-25 18:06:16 -04:00

57 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
import json
import os
import requests
import sys
from zipfile import ZipFile
from operator import itemgetter
def warn(*args, **kwargs):
print(*args, **kwargs, file=sys.stderr)
def download_file(url, local_filename):
# From https://stackoverflow.com/questions/16694907/
# download-large-file-in-python-with-requests
if os.path.exists(local_filename):
warn('Using existing', local_filename)
return
warn('Downloading', local_filename)
with requests.get(url, stream=True) as r:
r.raise_for_status()
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
return local_filename
bin_name = 'qpdf-external-libs-bin.zip'
src_name = 'qpdf-external-libs-src.zip'
dir_name = 'external-libs-dist'
os.makedirs(dir_name, exist_ok=True)
r = requests.get(
'https://api.github.com/repos/qpdf/external-libs/releases')
releases = json.loads(r.text)
by_tag = sorted(
[(r['tag_name'], r) for r in releases
if r['prerelease'] is False],
reverse=True)
latest = by_tag[0][1]
bin_url = None
src_url = None
for i in latest['assets']:
if i['name'] == bin_name:
bin_url = i['browser_download_url']
elif i['name'] == src_name:
src_url = i['browser_download_url']
print(bin_url)
download_file(bin_url, f'{dir_name}/{bin_name}')
download_file(src_url, f'{dir_name}/{src_name}')
print('\n** external library information **')
with ZipFile(f'{dir_name}/{src_name}') as z1:
with z1.open('external-libs-src/versions') as z2:
print(z2.read().decode())