From ad65a01073bce55948ce4b45381ee6941b5046b2 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Mon, 23 May 2016 21:03:52 +0200 Subject: remove curl dependency Teach importpkg how to download urls using urlopen and thus remove the need for invoking curl. --- README | 2 +- autoimport.py | 10 ++-------- importpkg.py | 16 +++++++++++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README b/README index bf4da52..5329bd8 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Required packages ----------------- - aptitude install python python-debian python-lzma curl python-jinja2 python-werkzeug sqlite3 python-imaging python-yaml python-concurrent.futures python-pkg-resources + aptitude install python python-debian python-lzma python-jinja2 python-werkzeug sqlite3 python-imaging python-yaml python-concurrent.futures python-pkg-resources Create a database ----------------- diff --git a/autoimport.py b/autoimport.py index 132e671..abd3a5f 100755 --- a/autoimport.py +++ b/autoimport.py @@ -70,15 +70,9 @@ def process_pkg(name, pkgdict, outpath): if "sha256hash" in pkgdict: importcmd.extend(["-H", pkgdict["sha256hash"]]) if filename.startswith(("http://", "https://", "ftp://", "file://")): + importcmd.append(filename) with open(outpath, "w") as outp: - dl = subprocess.Popen(["curl", "-s", filename], - stdout=subprocess.PIPE, close_fds=True) - imp = subprocess.Popen(importcmd, stdin=dl.stdout, stdout=outp, - close_fds=True) - if imp.wait(): - raise ValueError("importpkg failed") - if dl.wait(): - raise ValueError("curl failed") + subprocess.check_call(importcmd, stdout=outp, close_fds=True) else: with open(filename) as inp: with open(outpath, "w") as outp: diff --git a/importpkg.py b/importpkg.py index fedad73..badef15 100755 --- a/importpkg.py +++ b/importpkg.py @@ -9,6 +9,10 @@ import argparse import hashlib import sys import zlib +try: + from urllib.request import urlopen +except ImportError: + from urllib import urlopen import yaml @@ -72,20 +76,22 @@ class ImportpkgExtractor(DebExtractor): raise ProcessingFinished() def main(): - parser = argparse.ArgumentParser() - parser.add_argument("-H", "--hash", action="store", - help="verify that stdin hash given sha256 hash") - args = parser.parse_args() try: stdin = sys.stdin.buffer except AttributeError: # python2 stdin = sys.stdin + parser = argparse.ArgumentParser() + parser.add_argument("-H", "--hash", action="store", + help="verify that stdin hash given sha256 hash") + parser.add_argument("input", nargs='?', default=stdin, type=urlopen, + help="read from this location instead of stdin") + args = parser.parse_args() dumper = yaml.SafeDumper(sys.stdout) dumper.open() if args.hash: stdin = HashedStream(stdin, hashlib.sha256()) try: - ImportpkgExtractor(dumper.represent).process(stdin) + ImportpkgExtractor(dumper.represent).process(args.input) except ProcessingFinished: pass else: -- cgit v1.2.3