diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 7514e81a..e6ac3399 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -1088,9 +1088,7 @@ def main(): logging.info("...retrieving " + url) of = "{0}_{1}.apk.binary".format(app['id'], thisbuild['vercode']) of = os.path.join(output_dir, of) - p = FDroidPopen(['wget', '-nv', '-O', of, url]) - if p.returncode != 0 or not os.path.exists(of): - raise BuildException("...failed to retrieve " + url) + common.download_file(url, local_filename=of) build_succeeded.append(app) wikilog = "Build succeeded" diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 5dc98911..9daddb9c 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -22,6 +22,7 @@ import sys import re import shutil import glob +import requests import stat import subprocess import time @@ -2070,3 +2071,17 @@ def string_is_integer(string): return True except ValueError: return False + + +def download_file(url, local_filename=None, dldir='tmp'): + filename = url.split('/')[-1] + if local_filename is None: + local_filename = os.path.join(dldir, filename) + # the stream=True parameter keeps memory usage low + r = requests.get(url, stream=True) + with open(local_filename, 'wb') as f: + for chunk in r.iter_content(chunk_size=1024): + if chunk: # filter out keep-alive new chunks + f.write(chunk) + f.flush() + return local_filename diff --git a/fdroidserver/verify.py b/fdroidserver/verify.py index 9139d37a..fd0464eb 100644 --- a/fdroidserver/verify.py +++ b/fdroidserver/verify.py @@ -24,7 +24,7 @@ from optparse import OptionParser import logging import common -from common import FDroidPopen, FDroidException +from common import FDroidException options = None config = None @@ -78,9 +78,7 @@ def main(): os.remove(remoteapk) url = 'https://f-droid.org/repo/' + apkfilename logging.info("...retrieving " + url) - p = FDroidPopen(['wget', '-nv', url], cwd=tmp_dir) - if p.returncode != 0: - raise FDroidException("Failed to get " + apkfilename) + common.download_file(url, dldir=tmp_dir) compare_result = common.compare_apks( os.path.join(unsigned_dir, apkfilename), diff --git a/setup.py b/setup.py index 49281d9e..bfd5d106 100644 --- a/setup.py +++ b/setup.py @@ -28,6 +28,7 @@ setup(name='fdroidserver', 'apache-libcloud >= 0.14.1', 'pyasn1', 'pyasn1-modules', + 'requests', ], classifiers=[ 'Development Status :: 3 - Alpha',