diff options
| author | quapka | 2024-08-08 16:55:34 +0200 |
|---|---|---|
| committer | quapka | 2024-08-08 16:57:18 +0200 |
| commit | 6a8ecdda92841fe87edab5f750af047c03911956 (patch) | |
| tree | fc1ed2dd82dde6113675fcff77ba27a0dc4807c5 /fetchReleases.py | |
| parent | a1033858ff932863599898e889b6ee4303208ae4 (diff) | |
| download | ECTester-6a8ecdda92841fe87edab5f750af047c03911956.tar.gz ECTester-6a8ecdda92841fe87edab5f750af047c03911956.tar.zst ECTester-6a8ecdda92841fe87edab5f750af047c03911956.zip | |
Diffstat (limited to 'fetchReleases.py')
| -rw-r--r-- | fetchReleases.py | 107 |
1 files changed, 90 insertions, 17 deletions
diff --git a/fetchReleases.py b/fetchReleases.py index 940dc6a..137d992 100644 --- a/fetchReleases.py +++ b/fetchReleases.py @@ -37,6 +37,7 @@ def get_source_hash(url, unpack=False): return digest_sri def fetch_botan(): + pkg = "botan" # NOTE: this way omits the older releases at https://botan.randombit.net/releases/old release_list = "https://botan.randombit.net/releases/" download_url = "https://botan.randombit.net/releases/{version}" @@ -48,6 +49,7 @@ def fetch_botan(): };""") renders = [] + versions = {} for link in soup.find_all("a"): if link.text.startswith("Botan") and not link.text.endswith('.asc'): download_link = download_url.format(version=link['href']) @@ -59,15 +61,25 @@ def fetch_botan(): digest = get_source_hash(download_link) # NOTE: use underscore to separate the versions? flat_version = f"v{match['major']}{match['minor']}{match['patch']}" + print(f"{version}:{digest}") - rendered = single_version_template.render(pkg="botan", digest=digest, ext=ext, flat_version=flat_version, version=version).strip() + rendered = single_version_template.render(pkg=pkg, digest=digest, ext=ext, flat_version=flat_version, version=version).strip() renders.append(rendered) + versions[flat_version] = { + "version": version, + "source_extension": ext, + "hash": digest + } all_versions = all_versions_template.render(pkg_versions=renders).strip() - with open("./nix/botan_pkg_versions.nix", "w") as handle: + with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + def fetch_cryptopp(): + pkg = "cryptopp" owner = "weidai11" repo = "cryptopp" release_url = f"https://api.github.com/repos/{owner}/{repo}/releases" @@ -77,6 +89,7 @@ def fetch_cryptopp(): {{ pkg }} = { version="{{ version }}"; hash="{{ digest }}"; }; };""") renders = [] + versions = {} for release in resp.json(): if not release['draft'] and not release['prerelease']: _, *version_values = release['tag_name'].split('_') @@ -84,15 +97,22 @@ def fetch_cryptopp(): flat_version = "v" + "".join(version_values) download_url = f"https://github.com/{owner}/{repo}/archive/{release['tag_name']}.tar.gz" digest = get_source_hash(download_url, unpack=True) + print(f"{underscored_version}:{digest}") - - rendered = single_version_template.render(pkg="cryptopp", digest=digest, flat_version=flat_version, version=underscored_version).strip() + rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=underscored_version).strip() renders.append(rendered) + versions[flat_version] = { + "version": underscored_version, + "hash": digest + } all_versions = all_versions_template.render(pkg_versions=renders).strip() - with open("./nix/cryptopp_pkg_versions.nix", "w") as handle: + with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + def fetch_openssl(): pkg = "openssl" owner = "openssl" @@ -104,6 +124,7 @@ def fetch_openssl(): {{ pkg }} = { version="{{ version }}"; hash="{{ digest }}"; }; };""") renders = [] + versions = {} for release in resp.json(): if not release['draft'] and not release['prerelease']: try: @@ -114,6 +135,10 @@ def fetch_openssl(): download_url = f"https://www.openssl.org/source/openssl-{dotted_version}.tar.gz" digest = get_source_hash(download_url) print(f"{dotted_version}:{digest}") + versions[flat_version] = { + "version": dotted_version, + "hash": digest + } rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=dotted_version).strip() @@ -123,12 +148,15 @@ def fetch_openssl(): with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + + def fetch_tomcrypt(): # fetch libtomcrypt pass def fetch_gcrypt(): - pkg = "gcrypt" release_list = "https://gnupg.org/ftp/gcrypt/libgcrypt/" download_url = "https://gnupg.org/ftp/gcrypt/libgcrypt/{version}" @@ -140,29 +168,35 @@ def fetch_gcrypt(): };""") renders = [] + versions = {} for link in soup.find_all("a"): if link.text.startswith("libgcrypt") and link.text.endswith("tar.bz2"): download_link = download_url.format(version=link['href']) match = re.match(r"libgcrypt-(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?P<dont>_do_not_use)?\.(?P<ext>.*)", link.text) version = f"{match['major']}.{match['minor']}.{match['patch']}" - print(version) digest = get_source_hash(download_link) - print(digest) + print(f"{version}:{digest}") flat_version = f"v{match['major']}{match['minor']}{match['patch']}" if match['dont']: flat_version += "_do_not_use" - rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=version).strip() renders.append(rendered) + versions[flat_version] = { + "version": version, + "hash": digest + } + all_versions = all_versions_template.render(pkg_versions=renders).strip() with open("./nix/gcrypt_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) def fetch_boringssl(): @@ -172,6 +206,7 @@ def fetch_boringssl(): {{ pkg }} = { rev="{{ rev }}"; hash="{{ digest }}"; }; };""") renders = [] + versions = {} with tempfile.TemporaryDirectory() as repodir, tempfile.TemporaryDirectory() as gitdir: repodir = pathlib.Path(repodir) gitdir = pathlib.Path(gitdir) @@ -190,11 +225,18 @@ def fetch_boringssl(): rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=f"r{abbrev_commit}", rev=rev).strip() renders.append(rendered) + versions[f"r{abbrev_commit}"] = { + "rev": rev, + "hash": digest, + } all_versions = all_versions_template.render(pkg_versions=renders).strip() with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + def fetch_mbedtls(): # Mbed-TLS/mbedtls pkg = "mbedtls" @@ -207,22 +249,29 @@ def fetch_mbedtls(): {{ pkg }} = { version="{{ version }}"; hash="{{ digest }}"; }; };""") renders = [] + versions = {} for release in resp.json(): if not release['draft'] and not release['prerelease']: version = release['tag_name'] - print(version) flat_version = version.replace('.', '') download_url = f"https://github.com/{owner}/{repo}/archive/{version}.tar.gz" digest = get_source_hash(download_url, unpack=True) - + print(f"{version}:{digest}") rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=version).strip() renders.append(rendered) + versions[flat_version] = { + "version": version, + "hash": digest, + } all_versions = all_versions_template.render(pkg_versions=renders).strip() with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + def fetch_ippcp(): # https://api.github.com/repos/intel/ipp-crypto/releases pkg = "ippcp" @@ -235,22 +284,29 @@ def fetch_ippcp(): {{ pkg }} = { version="{{ version }}"; hash="{{ digest }}"; }; };""") renders = [] + versions = {} for release in resp.json(): if not release['draft'] and not release['prerelease']: version = release['tag_name'].split('_')[1] - print(version) flat_version = "v" + version.replace('.', '_') download_url = f"https://github.com/{owner}/{repo}/archive/{release['tag_name']}.tar.gz" digest = get_source_hash(download_url, unpack=True) - + print(f"{version}:{digest}") rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=version).strip() renders.append(rendered) + versions[flat_version] = { + "version": version, + "hash": digest, + } all_versions = all_versions_template.render(pkg_versions=renders).strip() with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + def fetch_nettle(): # https://api.github.com/repos/intel/ipp-crypto/releases pkg = "nettle" @@ -263,6 +319,7 @@ def fetch_nettle(): {{ pkg }} = { version="{{ version }}"; tag="{{ tag }}"; hash="{{ digest }}"; }; };""") renders = [] + versions = {} for tag in resp.json(): if tag['name'] == 'release_nettle_0.2.20010617': continue @@ -273,17 +330,26 @@ def fetch_nettle(): flat_version = "v" + version.replace('.', '_') # download_url = f"https://github.com/{owner}/{repo}/archive/{tag['name']}.tar.gz" download_url = f"mirror://gnu/nettle/nettle-{version}.tar.gz" - print(download_url) digest = get_source_hash(download_url, unpack=False) + print(f"{version}:{digest}") rendered = single_version_template.render( pkg=pkg, digest=digest, flat_version=flat_version, tag=tag['name'], version=version).strip() renders.append(rendered) + versions[flat_version] = { + "version": version, + "tag": tag['name'], + "hash": digest, + } all_versions = all_versions_template.render(pkg_versions=renders).strip() with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) + + def fetch_libressl(): pkg = "libressl" release_list = "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/" @@ -296,23 +362,30 @@ def fetch_libressl(): };""") renders = [] + versions = {} for link in soup.find_all("a"): if link.text.startswith("libressl") and link.text.endswith('.tar.gz'): match = re.match(r"libressl-(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.tar.gz", link.text) version = f"{match['major']}.{match['minor']}.{match['patch']}" download_link = download_url.format(version=version) - print(version) digest = get_source_hash(download_link) + print(f"{version}:{digest}") # NOTE: use underscore to separate the versions? flat_version = f"v{match['major']}{match['minor']}{match['patch']}" - rendered = single_version_template.render(pkg="botan", digest=digest, flat_version=flat_version, version=version).strip() + rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=version).strip() renders.append(rendered) + versions[flat_version] = { + "version": version, + "hash": digest, + } all_versions = all_versions_template.render(pkg_versions=renders).strip() - with open("./nix/{pkg}_pkg_versions.nix", "w") as handle: + with open(f"./nix/{pkg}_pkg_versions.nix", "w") as handle: handle.write(all_versions) + with open(f"./nix/{pkg}_pkg_versions.json", "w") as handle: + json.dump(versions, handle, indent=4) def main(): parser = argparse.ArgumentParser() |
