summaryrefslogtreecommitdiffstats
path: root/build-scripts/download-external-libs
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2020-10-25 01:31:09 +0200
committerJay Berkenbilt <ejb@ql.org>2020-10-25 23:06:16 +0100
commit4e8d21d849dc4c562d02c4aa22683296cbd314f7 (patch)
tree3cd6beac7fecc761c9404bcefff0ab0a8365e638 /build-scripts/download-external-libs
parent026330ebcdbef825a340eb04915483573b3c8be2 (diff)
downloadqpdf-4e8d21d849dc4c562d02c4aa22683296cbd314f7.tar.zst
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.
Diffstat (limited to 'build-scripts/download-external-libs')
-rwxr-xr-xbuild-scripts/download-external-libs56
1 files changed, 56 insertions, 0 deletions
diff --git a/build-scripts/download-external-libs b/build-scripts/download-external-libs
new file mode 100755
index 00000000..94d3ff52
--- /dev/null
+++ b/build-scripts/download-external-libs
@@ -0,0 +1,56 @@
+#!/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())