Skip to content

openkal-musl 0.15.0 and openkal-llvm-runtime 0.11.0: the two mirrors carry the same bytes again - #443

Merged
Sunrisepeak merged 1 commit into
mainfrom
repair-mirrors-0.15.0-0.11.0
Sep 20, 2026
Merged

Sunrisepeak merged 1 commit into
mainfrom
repair-mirrors-0.15.0-0.11.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

承接 #442 里记下的那处缺陷——现在可以修了:资产已由仓库所有者在 GitCode 侧删除。

原来的状态

两个版本在 GitHub 上的标签是 v0.15.0 / v0.11.0,而描述符按惯例写无前缀形式,所以 GLOBAL 地址返回 14 字节的 Not Found;同时 GitCode 上的资产并不是 GitHub 的 archive(75803192…ee953bd8…),所以一个描述符只有一个 sha256 这件事本身就决定了:无论地址怎么写,两边不可能同时对。

修法:改源头而不是改描述符

  1. 两个仓库各补一个无前缀标签,指向与 v 标签相同的提交;
  2. 把该标签的 GitHub archive 用 gtc 上传到 GitCode,顶替原先那个资产;
  3. 描述符写这同一个文件的哈希。

下载两边比对(本地实测):

版本 sha256 GLOBAL vs CN
openkal-musl 0.15.0 ee953bd8… 逐字节相同
openkal-llvm-runtime 0.11.0 b9b8eddb… 逐字节相同

旧哈希(75803192…2e26674d…)只指向那个已被删除的 GitCode 资产,现在不指向任何东西。已经解析过这两个版本的消费者手里是旧字节,不受影响;现在解析的消费者从任一镜像得到同一棵树——这正是本 index 里其余每个发布的性质。

…carry the same bytes again

Both were tagged `v0.15.0` and `v0.11.0` on GitHub while their descriptors name
the plain form, so their GLOBAL url answered a 14-byte Not Found; and the
GitCode asset was not GitHub's archive, so the one sha256 a descriptor carries
could not have matched both mirrors whatever the url said.

Repaired at the source rather than in the descriptor: each repository now
carries the plain tag beside the `v` one, the GitHub archive of that tag was
uploaded to GitCode in place of the asset that was there, and the descriptor
states the hash of that one file. Measured afterwards by downloading both:

  openkal-musl         0.15.0  ee953bd8...  GLOBAL and CN identical
  openkal-llvm-runtime 0.11.0  b9b8eddb...  GLOBAL and CN identical

The previous hashes (75803192..., 2e26674d...) named the GitCode asset alone
and no longer name anything. A consumer that had already resolved either
version has the old bytes in its store and is unaffected; one resolving now
gets the same tree from either mirror, which is what every other release in
this index does.
@Sunrisepeak
Sunrisepeak merged commit d50468b into main Sep 20, 2026
16 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant