X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=scripts%2Fdl_github_archive.py;h=59fd7067be921dbca8987e90880755f2ccfb5315;hb=734a8c46e7037075d712e3d3844467672d0f91c9;hp=5a5a016e37e27f420e24fe54ff306902f2ccf8a9;hpb=04b9f8587370f96366c6e53fb411473279ba7c02;p=openwrt%2F.git diff --git a/scripts/dl_github_archive.py b/scripts/dl_github_archive.py index 5a5a016e37..59fd7067be 100755 --- a/scripts/dl_github_archive.py +++ b/scripts/dl_github_archive.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Copyright (c) 2018 Yousong Zhou # @@ -20,7 +20,7 @@ import ssl import subprocess import sys import time -import urllib2 +import urllib.request TMPDIR = os.environ.get('TMP_DIR') or '/tmp' TMPDIR_DL = os.path.join(TMPDIR, 'dl') @@ -177,7 +177,7 @@ class GitHubCommitTsCache(object): def set(self, k, v): """Update timestamp with ``k``.""" fileno = os.open(self.cachef, os.O_RDWR | os.O_CREAT) - with os.fdopen(fileno, 'wb+') as f: + with os.fdopen(fileno, 'w+') as f: try: fcntl.lockf(fileno, fcntl.LOCK_EX) self._cache_init(f) @@ -194,7 +194,7 @@ class GitHubCommitTsCache(object): self.cache[k] = (ts, updated) def _cache_flush(self, fout): - cache = sorted(self.cache.iteritems(), cmp=lambda a, b: b[1][1] - a[1][1]) + cache = sorted(self.cache.items(), key=lambda a: a[1][1]) cache = cache[:self.__cachen] self.cache = {} os.ftruncate(fout.fileno(), 0) @@ -345,6 +345,7 @@ class DownloadGitHubTarball(object): version_is_sha1sum = len(self.version) == 40 if not version_is_sha1sum: apis.insert(0, apis.pop()) + reasons = '' for api in apis: url = api['url'] attr_path = api['attr_path'] @@ -357,9 +358,9 @@ class DownloadGitHubTarball(object): self.commit_ts = ct self.commit_ts_cache.set(url, ct) return - except Exception: - pass - raise self._error('Cannot fetch commit ts: {}'.format(url)) + except Exception as e: + reasons += '\n' + (" {}: {}".format(url, e)) + raise self._error('Cannot fetch commit ts:{}'.format(reasons)) def _init_commit_ts_remote_get(self, url, attrpath): resp = self._make_request(url) @@ -397,9 +398,9 @@ class DownloadGitHubTarball(object): 'Accept': 'application/vnd.github.v3+json', 'User-Agent': 'OpenWrt', } - req = urllib2.Request(url, headers=headers) + req = urllib.request.Request(url, headers=headers) sslcontext = ssl._create_unverified_context() - fileobj = urllib2.urlopen(req, context=sslcontext) + fileobj = urllib.request.urlopen(req, context=sslcontext) return fileobj def _error(self, msg): @@ -415,12 +416,13 @@ def main(): parser.add_argument('--source', help='Source tarball filename') parser.add_argument('--hash', help='Source tarball\'s expected sha256sum') args = parser.parse_args() - method = DownloadGitHubTarball(args) try: + method = DownloadGitHubTarball(args) method.download() - except Exception: - sys.stderr.write('download {} from {} failed\n'.format(args.source, args.url)) - raise + except Exception as ex: + sys.stderr.write('{}: Download from {} failed\n'.format(args.source, args.url)) + sys.stderr.write('{}\n'.format(ex)) + sys.exit(1) if __name__ == '__main__': main()