Browse Source

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
pull/11891/head
Max Gautier 2 months ago
parent
commit
ff3d9a0443
Failed to extract signature
2 changed files with 13 additions and 8 deletions
  1. 19
      scripts/download_hash.py
  2. 2
      scripts/list_releases.graphql

19
scripts/download_hash.py

@ -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))])
# only get:
# - patch versions (no minor or major bump)
# - newer ones (don't get old patch version)
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) (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()

2
scripts/list_releases.graphql

@ -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
}

Loading…
Cancel
Save