initial commit
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Fetch the hash-pinned non-V8 PDFium dependency for Linux or Windows x64."""
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import platform
|
||||
import tarfile
|
||||
import tempfile
|
||||
import urllib.request
|
||||
|
||||
root = Path(__file__).resolve().parent.parent
|
||||
lock = json.loads((root / 'cmake/pdfium.lock.json').read_text())
|
||||
host = {'Linux': 'linux-x64', 'Windows': 'windows-x64'}.get(platform.system())
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--platform', choices=['linux-x64', 'windows-x64'], default=host)
|
||||
parser.add_argument('--destination', type=Path)
|
||||
args = parser.parse_args()
|
||||
if args.platform is None or (args.platform == host and platform.machine() not in ('x86_64', 'AMD64')):
|
||||
raise SystemExit('A supported x64 platform is required; specify --platform for a cross-platform download.')
|
||||
prefix = 'windowsX64' if args.platform == 'windows-x64' else 'linuxX64'
|
||||
destination = args.destination or root / '.deps' / ('pdfium' if args.platform == host else 'pdfium-' + args.platform.split('-')[0])
|
||||
with tempfile.TemporaryDirectory(prefix='docview-pdfium-') as temporary:
|
||||
archive = Path(temporary) / 'pdfium.tgz'
|
||||
urllib.request.urlretrieve(lock[prefix + 'Archive'], archive)
|
||||
if hashlib.sha256(archive.read_bytes()).hexdigest() != lock[prefix + 'Sha256']:
|
||||
raise SystemExit('PDFium archive hash mismatch; dependency not installed.')
|
||||
destination.mkdir(parents=True, exist_ok=True)
|
||||
with tarfile.open(archive) as bundle:
|
||||
bundle.extractall(destination, filter='data')
|
||||
print(f'Installed pinned PDFium {lock["version"]} in {destination}')
|
||||
Reference in New Issue
Block a user