From c93bce78397de6cc96f0ed57ec4b01b582415db0 Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 29 Sep 2017 18:33:18 +0800 Subject: [PATCH] Don't download patch archive if already download the behavior of download patch should keep same as download package. --- mesonbuild/wrap/wrap.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index 14529abf3..81a2f8853 100644 --- a/mesonbuild/wrap/wrap.py +++ b/mesonbuild/wrap/wrap.py @@ -292,15 +292,19 @@ class Resolver: raise RuntimeError('Incorrect hash for source %s:\n %s expected\n %s actual.' % (packagename, expected, dhash)) os.rename(tmpfile, ofname) if p.has_patch(): - purl = p.get('patch_url') - mlog.log('Downloading patch from', mlog.bold(purl)) - phash, tmpfile = self.get_data(purl) - expected = p.get('patch_hash') - if phash != expected: - os.remove(tmpfile) - raise RuntimeError('Incorrect hash for patch %s:\n %s expected\n %s actual' % (packagename, expected, phash)) - filename = os.path.join(self.cachedir, p.get('patch_filename')) - os.rename(tmpfile, filename) + patch_filename = p.get('patch_filename') + filename = os.path.join(self.cachedir, patch_filename) + if os.path.exists(filename): + mlog.log('Using', mlog.bold(patch_filename), 'from cache.') + else: + purl = p.get('patch_url') + mlog.log('Downloading patch from', mlog.bold(purl)) + phash, tmpfile = self.get_data(purl) + expected = p.get('patch_hash') + if phash != expected: + os.remove(tmpfile) + raise RuntimeError('Incorrect hash for patch %s:\n %s expected\n %s actual' % (packagename, expected, phash)) + os.rename(tmpfile, filename) else: mlog.log('Package does not require patch.')