Plan 0.3.15: the DMG row (7996240 build)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
6f6d058c9f
commit
f0660d59c3
3 changed files with 33 additions and 31 deletions
|
|
@ -46,6 +46,7 @@ Cut 6 October 2026, staged by the release engineer under the coordinator; the li
|
|||
| hive igneum-worker-opencl (generator 4) | Mac zig | 563485b tree | ef9fbd03e7ce14d1b2b9b85964397b244dc153edee0607d71f26dbc640a4c5e6 | 307,328 |
|
||||
| igneum-prove-host (Linux, cuda, WSL2) | igneum-build-1 | master e1b5bc9 | 71bc2438856bb141f6cad3d18489f708568144fad5a06a002fbadefb9ce256f9 | 73,161,528 |
|
||||
| igneum-prove-export (Linux, WSL2) | igneum-build-1 | master e1b5bc9 | 263bf4cef70af4a13a45b2e79b8dbab373282ea4c571f624d02ddb5791935361 | 3,609,360 |
|
||||
| Igneum-Miner-0.3.15.dmg (miner-ui-4 9bef742) | Mac | d8d8fe0 | 4de47c4c3d2b708991af1b5ced8728d1dad632f1ce9852aa014afbd35e7f1fc0 | 41,961,908 |
|
||||
| igneum-hive-0.3.15.tar.gz | Mac | | 1715e58ea1d4a1ed1b733881de51b8754ca975f0359b3b29ecb49061d02124c7 | 24,713,232 |
|
||||
|
||||
Installer, zip, DMG and manifest rows are filled by the ship run (`tools/ship-app.mjs 0.3.15 ... --until manifest`).
|
||||
|
|
|
|||
31
packaging/ota/aliases.py
Normal file
31
packaging/ota/aliases.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env python3
|
||||
# The public aliases: what the two manifests and the newest HiveOS package in dl/public/ name (publish-public.sh calls
|
||||
# this with <pub dir> <dry 0|1>; a separate file because bash 3.2 mis-parses a heredoc with parentheses inside $( )).
|
||||
import json, os, re, sys
|
||||
pub, dry = sys.argv[1], sys.argv[2] == "1"
|
||||
# a platform the current manifest lacks keeps the newest versioned file of that platform already in dl/public/ (6 October
|
||||
# 2026, 0.3.15: the Mac row moved first while the Windows installer waited on the GitHub billing block; the Windows link of the site
|
||||
# must stay on the version that exists, never go dark, and never name a version that is not there). The index below
|
||||
# reads such a file"s version from its name, so the site stamps the carried version honestly.
|
||||
CARRY = {"windows": r"Igneum-Miner-Setup-(\d+\.\d+\.\d+)\.exe", "mac": r"Igneum-Miner-(\d+\.\d+\.\d+)\.dmg"}
|
||||
def newest(pattern):
|
||||
fs = [f for f in os.listdir(pub) if re.fullmatch(pattern, f)] if os.path.isdir(pub) else []
|
||||
fs.sort(key=lambda f: tuple(int(x) for x in re.findall(r"\d+", f)[:3]))
|
||||
return fs[-1] if fs else None
|
||||
def entry(name, plat):
|
||||
p = os.path.join(pub, name)
|
||||
if not os.path.exists(p): return None
|
||||
e = json.load(open(p)).get("platforms", {}).get(plat)
|
||||
if not e:
|
||||
return newest(CARRY[plat]) if name == "igneum-app-latest.json" and plat in CARRY else None
|
||||
f = e["url"].rsplit("/", 1)[1]
|
||||
return f if os.path.exists(os.path.join(pub, f)) or dry else None
|
||||
hive = sorted([f for f in os.listdir(pub) if re.fullmatch(r"igneum-hive-\d+\.\d+\.\d+\.tar\.gz", f)],
|
||||
key=lambda f: tuple(int(x) for x in re.findall(r"\d+", f)[:3])) if os.path.isdir(pub) else []
|
||||
aliases = {
|
||||
"igneum-miner-windows.exe": entry("igneum-app-latest.json", "windows"),
|
||||
"igneum-miner-mac.dmg": entry("igneum-app-latest.json", "mac"),
|
||||
"igneum-miner-hive.tar.gz": hive[-1] if hive else None,
|
||||
"igneum-wallet-mac.dmg": entry("igneum-wallet-latest.json", "mac"),
|
||||
}
|
||||
print(json.dumps(aliases))
|
||||
|
|
@ -120,37 +120,7 @@ if [ -n "$HIVE" ]; then
|
|||
fi
|
||||
|
||||
# the aliases: what the two manifests and the newest HiveOS package in dl/public/ name, nothing else
|
||||
ALIASES_JSON="$(python3 - "$PUB" "$DRY" <<'PY'
|
||||
import json, os, re, sys
|
||||
pub, dry = sys.argv[1], sys.argv[2] == "1"
|
||||
# a platform the current manifest lacks keeps the newest versioned file of that platform already in dl/public/ (6 October
|
||||
# 2026, 0.3.15: the Mac row moved first while the Windows installer waited on the GitHub billing block; the Windows link of the site
|
||||
# must stay on the version that exists, never go dark, and never name a version that is not there). The index below
|
||||
# reads such a file"s version from its name, so the site stamps the carried version honestly.
|
||||
CARRY = {"windows": r"Igneum-Miner-Setup-(\d+\.\d+\.\d+)\.exe", "mac": r"Igneum-Miner-(\d+\.\d+\.\d+)\.dmg"}
|
||||
def newest(pattern):
|
||||
fs = [f for f in os.listdir(pub) if re.fullmatch(pattern, f)] if os.path.isdir(pub) else []
|
||||
fs.sort(key=lambda f: tuple(int(x) for x in re.findall(r"\d+", f)[:3]))
|
||||
return fs[-1] if fs else None
|
||||
def entry(name, plat):
|
||||
p = os.path.join(pub, name)
|
||||
if not os.path.exists(p): return None
|
||||
e = json.load(open(p)).get("platforms", {}).get(plat)
|
||||
if not e:
|
||||
return newest(CARRY[plat]) if name == "igneum-app-latest.json" and plat in CARRY else None
|
||||
f = e["url"].rsplit("/", 1)[1]
|
||||
return f if os.path.exists(os.path.join(pub, f)) or dry else None
|
||||
hive = sorted([f for f in os.listdir(pub) if re.fullmatch(r"igneum-hive-\d+\.\d+\.\d+\.tar\.gz", f)],
|
||||
key=lambda f: tuple(int(x) for x in re.findall(r"\d+", f)[:3])) if os.path.isdir(pub) else []
|
||||
aliases = {
|
||||
"igneum-miner-windows.exe": entry("igneum-app-latest.json", "windows"),
|
||||
"igneum-miner-mac.dmg": entry("igneum-app-latest.json", "mac"),
|
||||
"igneum-miner-hive.tar.gz": hive[-1] if hive else None,
|
||||
"igneum-wallet-mac.dmg": entry("igneum-wallet-latest.json", "mac"),
|
||||
}
|
||||
print(json.dumps(aliases))
|
||||
PY
|
||||
)"
|
||||
ALIASES_JSON="$(python3 "$HERE/aliases.py" "$PUB" "$DRY")"
|
||||
KEEP="$(python3 -c 'import json,sys; a=json.loads(sys.argv[1]); print(" ".join(v for v in a.values() if v))' "$ALIASES_JSON")"
|
||||
log "aliases (vercel.json rewrites under /public/):"
|
||||
python3 -c 'import json,sys; a=json.loads(sys.argv[1]); [print(" /public/%s -> %s" % (k, ("/dl/public/" + v) if v else "(no file yet; alias left out)")) for k,v in a.items()]' "$ALIASES_JSON" | scrub
|
||||
|
|
|
|||
Loading…
Reference in a new issue