aboutsummaryrefslogtreecommitdiff
path: root/fetchReleases.py
diff options
context:
space:
mode:
Diffstat (limited to 'fetchReleases.py')
-rw-r--r--fetchReleases.py107
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()