diff options
-rw-r--r-- | mesonbuild/wrap/wrap.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index 14529ab..81a2f88 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.') |