diff options
author | Steven R. Loomis <srloomis@us.ibm.com> | 2019-04-23 10:01:07 -0700 |
---|---|---|
committer | Steven R. Loomis <srloomis@us.ibm.com> | 2019-04-26 08:24:04 -0700 |
commit | d04b37671716b4cdf6fbec9a5bc35e4a2295fe26 (patch) | |
tree | 12c42fe87de2e187bca31dd291f47b0d2d274582 /configure.py | |
parent | 744cdecbf42e9ba9bdff2d5006cb625f25b87917 (diff) | |
download | android-node-v8-d04b37671716b4cdf6fbec9a5bc35e4a2295fe26.tar.gz android-node-v8-d04b37671716b4cdf6fbec9a5bc35e4a2295fe26.tar.bz2 android-node-v8-d04b37671716b4cdf6fbec9a5bc35e4a2295fe26.zip |
build: allow icu download to use other hashes besides md5
- ICU uses sha512 instead of md5 in some recent releases
- Use hashlib.algorithms_guaranteed to choose the following algorithms:
sha1 sha224 sha384 sha256 sha512 md5
- No preference as to the priority of the algorithms
- This commit does not change the hash used for ICU.
Fixes: https://github.com/nodejs/node/issues/27369
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-by: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-by: Richard Lau <riclau@uk.ibm.com>
PR-URL: https://github.com/nodejs/node/pull/27370
Diffstat (limited to 'configure.py')
-rwxr-xr-x | configure.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/configure.py b/configure.py index 12d68ccfeb..1dd6da6d2b 100755 --- a/configure.py +++ b/configure.py @@ -1261,7 +1261,8 @@ def glob_to_var(dir_base, dir_sub, patch_dir): def configure_intl(o): def icu_download(path): - with open('tools/icu/current_ver.dep') as f: + depFile = 'tools/icu/current_ver.dep'; + with open(depFile) as f: icus = json.load(f) # download ICU, if needed if not os.access(options.download_path, os.W_OK): @@ -1270,7 +1271,12 @@ def configure_intl(o): attemptdownload = nodedownload.candownload(auto_downloads, "icu") for icu in icus: url = icu['url'] - md5 = icu['md5'] + (expectHash, hashAlgo, allAlgos) = nodedownload.findHash(icu) + if not expectHash: + error('''Could not find a hash to verify ICU download. + %s may be incorrect. + For the entry %s, + Expected one of these keys: %s''' % (depFile, url, ' '.join(allAlgos))) local = url.split('/')[-1] targetfile = os.path.join(options.download_path, local) if not os.path.isfile(targetfile): @@ -1279,13 +1285,13 @@ def configure_intl(o): else: print('Re-using existing %s' % targetfile) if os.path.isfile(targetfile): - print('Checking file integrity with MD5:\r') - gotmd5 = nodedownload.md5sum(targetfile) - print('MD5: %s %s' % (gotmd5, targetfile)) - if (md5 == gotmd5): + print('Checking file integrity with %s:\r' % hashAlgo) + gotHash = nodedownload.checkHash(targetfile, hashAlgo) + print('%s: %s %s' % (hashAlgo, gotHash, targetfile)) + if (expectHash == gotHash): return targetfile else: - warn('Expected: %s *MISMATCH*' % md5) + warn('Expected: %s *MISMATCH*' % expectHash) warn('\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile) return None icu_config = { |