From f625005ec3a7caaff6db4ae9be58946e877f5d6d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 23 Jul 2015 21:42:21 -0700 Subject: [PATCH] remove dependency on wget for 'build' and 'verify' To make the core tools portable to platforms like Mac OS X and Windows, remove the dependency on wget and instead use Python Requests, which probably has better performance anyway. --- fdroidserver/build.py | 4 +--- fdroidserver/common.py | 15 +++++++++++++++ fdroidserver/verify.py | 6 ++---- setup.py | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) 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', -- 2.30.2