From 47c82c04aec0e4be42a858d09a9c27430595f957 Mon Sep 17 00:00:00 2001 From: Jonathan Ringer Date: Tue, 25 Jan 2022 19:31:30 -0800 Subject: [PATCH] update-python-libraries: use sri-hash --- .../update-python-libraries.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py b/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py index ee610b262026..5f55ed5ecaf1 100755 --- a/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py +++ b/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py @@ -340,13 +340,19 @@ def _update_package(path, target): raise ValueError("no file available for {}.".format(pname)) text = _replace_value('version', new_version, text) + # hashes from pypi are 16-bit encoded sha256's, normalize it to sri to avoid merge conflicts + # sri hashes have been the default format since nix 2.4+ + try: + sri_hash = subprocess.check_output(["nix", "hash", "to-sri", "--type", "sha256", new_sha256]).decode('utf-8').strip() + except subprocess.CalledProcessError: + # nix<2.4 compat + sri_hash = subprocess.check_output(["nix", "to-sri", "--type", "sha256", new_sha256]).decode('utf-8').strip() + # fetchers can specify a sha256, or a sri hash try: - text = _replace_value('sha256', new_sha256, text) + text = _replace_value('sha256', sri_hash, text) except ValueError: - # hashes from pypi are 16-bit encoded sha256's, need translate to an sri hash if used with "hash" - sri_hash = subprocess.check_output(["nix", "hash", "to-sri", "--type", "sha256", new_sha256]).decode('utf-8').strip() text = _replace_value('hash', sri_hash, text) if fetcher == 'fetchFromGitHub':