aboutsummaryrefslogtreecommitdiff
path: root/fetchReleases.py
diff options
context:
space:
mode:
Diffstat (limited to 'fetchReleases.py')
-rw-r--r--fetchReleases.py52
1 files changed, 38 insertions, 14 deletions
diff --git a/fetchReleases.py b/fetchReleases.py
index 2de5437..4fe4e53 100644
--- a/fetchReleases.py
+++ b/fetchReleases.py
@@ -68,6 +68,7 @@ def fetch_botan():
match = re.match(r"Botan-(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.(?P<ext>.*)", link.text)
if match['major'] == "3":
# TODO: Handle Botan-3
+ print(f"Skipping Botan-3 {match}")
continue
version = f"{match['major']}.{match['minor']}.{match['patch']}"
ext = f"{match['ext']}"
@@ -122,31 +123,54 @@ def fetch_openssl():
owner = "openssl"
repo = "openssl"
release_url = f"https://api.github.com/repos/{owner}/{repo}/releases"
- resp = requests.get(release_url)
+ resp_releases = requests.get(release_url)
+ tags_url = f"https://api.github.com/repos/{owner}/{repo}/git/matching-refs/tags"
+ resp_tags = requests.get(tags_url)
+
+ tags = [release["tag_name"] for release in resp_releases.json() if not release["draft"] and not release["prerelease"]]
+ tags += [tag_ref["ref"].split("/")[-1] for tag_ref in resp_tags.json() if tag_ref["ref"].startswith("refs/tags/openssl-") or tag_ref["ref"].startswith("refs/tags/OpenSSL_")]
+ tags = list(filter(lambda tag: "FIPS" not in tag and "reformat" not in tag and "alpha" not in tag and "beta" not in tag and "pre" not in tag, tags))
+ for tag in tags:
+ print(tag)
+
single_version_template = env.from_string("""{{ flat_version }} = buildECTesterStandalone {
{{ pkg }} = { version="{{ version }}"; hash="{{ digest }}"; };
};""")
renders = []
versions = {}
- for release in resp.json():
- if not release['draft'] and not release['prerelease']:
+ for tag in tags:
+ print(tag)
+ if tag.startswith("OpenSSL_"):
+ match = re.match(r"OpenSSL_(?P<major>\d+)_(?P<minor>\d+)_(?P<patch>\d+)(?P<ext>.*)", tag)
+ sort_version = f"{match['major']}.{match['minor']}.{match['patch']}{'+' + match['ext'] if match['ext'] else ''}"
+ dotted_version = f"{match['major']}.{match['minor']}.{match['patch']}{ match['ext'] if match['ext'] else ''}"
+ else:
try:
- _, dotted_version = release['tag_name'].split('-')
+ _, dotted_version = tag.split('-')
+ sort_version = dotted_version
except ValueError:
continue
- flat_version = "v" + "".join(dotted_version.split('.'))
- download_url = f"https://www.openssl.org/source/openssl-{dotted_version}.tar.gz"
+ flat_version = "v" + "".join(dotted_version.split('.'))
+ download_url = f"https://www.openssl.org/source/openssl-{dotted_version}.tar.gz"
+ old_url = f"https://www.openssl.org/source/old/openssl-{dotted_version}.tar.gz"
+ try:
digest = get_source_hash(download_url)
- print(f"{dotted_version}:{digest}")
- versions[flat_version] = {
- "version": dotted_version,
- "hash": digest,
- "sort": parse_version(dotted_version)
- }
+ except Exception:
+ try:
+ digest = get_source_hash(old_url)
+ except Exception:
+ print(f"Skipping {dotted_version} (unavailable)")
+ continue
+ print(f"{dotted_version}:{digest}")
+ versions[flat_version] = {
+ "version": dotted_version,
+ "hash": digest,
+ "sort": parse_version(sort_version)
+ }
- rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=dotted_version).strip()
- renders.append(rendered)
+ rendered = single_version_template.render(pkg=pkg, digest=digest, flat_version=flat_version, version=dotted_version).strip()
+ renders.append(rendered)
serialize_versions(pkg, renders, versions)