download: Support for gvisor (part 2)

Gvisor releases, besides only being tags, have some particularities:
- they are of the form yyyymmdd.p -> this get interpreted as a yaml
  float, so we need to explicitely convert to string to make it work.
- there is no semver-like attached to the version numbers, but the API
  (= OCI container runtime interface) is expected to be stable (see
  linked discussion)
- some older tags don't have hashs for some archs

Link: https://groups.google.com/g/gvisor-users/c/SxMeHt0Yb6Y/m/Xtv7seULCAAJ
This commit is contained in:
Max Gautier
2024-12-21 16:44:41 +01:00
parent 6608efb2c4
commit ff3d9a0443
2 changed files with 13 additions and 8 deletions

View File

@@ -239,17 +239,22 @@ def download_hash(only_downloads: [str]) -> None:
new_versions = {
c:
{v for v in github_versions[c]
if any(v > version and (v.major, v.minor) == (version.major, version.minor)
for version in [max(minors) for _, minors in groupby(cur_v, lambda v: (v.minor, v.major))])
if any(v > version
and (
(v.major, v.minor) == (version.major, version.minor)
or c.startswith('gvisor')
)
for version in [max(minors) for _, minors in groupby(cur_v, lambda v: (v.minor, v.major))]
)
# only get:
# - patch versions (no minor or major bump)
# - patch versions (no minor or major bump) (exception for gvisor which does not have a major.minor.patch scheme
# - newer ones (don't get old patch version)
}
- set(cur_v)
for component, archs in data.items()
if (c := component.removesuffix('_checksums')) in downloads.keys()
# this is only to bound cur_v in the scope
and (cur_v := sorted(Version(k) for k in next(archs.values().__iter__()).keys()))
and (cur_v := sorted(Version(str(k)) for k in next(archs.values().__iter__()).keys()))
}
def get_hash(component: str, version: Version, arch: str):
@@ -280,7 +285,7 @@ def download_hash(only_downloads: [str]) -> None:
data[c] = {arch :
{v :
versions[v] for v in sorted(versions.keys(),
key=Version,
key=lambda v: Version(str(v)),
reverse=True)
}
for arch, versions in data[c].items()

View File

@@ -19,7 +19,7 @@ query($repoWithReleases: [ID!]!, $repoWithTags: [ID!]!) {
... on Repository {
nameWithOwner
refs(refPrefix: "refs/tags/", last: 100) {
refs(refPrefix: "refs/tags/", last: 25) {
nodes {
name
}