internal/rosa/busybox: cross-platform binary
All checks were successful
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m52s
Test / Hakurei (push) Successful in 4m14s
Test / ShareFS (push) Successful in 4m15s
Test / Hpkg (push) Successful in 4m58s
Test / Sandbox (race detector) (push) Successful in 5m16s
Test / Hakurei (race detector) (push) Successful in 6m28s
Test / Flake checks (push) Successful in 2m3s

The initial binary seed is arch-specific.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-01-27 20:54:11 +09:00
parent 968d8dbaf1
commit fbe93fc771

View File

@@ -5,6 +5,7 @@ import (
"io"
"net/http"
"os"
"runtime"
"slices"
"strings"
"time"
@@ -78,10 +79,23 @@ func (a busyboxBin) Cure(t *pkg.TContext) (err error) {
// newBusyboxBin returns a [pkg.Artifact] containing a busybox installation from
// the https://busybox.net/downloads/binaries/ binary release.
func newBusyboxBin() pkg.Artifact {
const (
version = "1.35.0"
var version, url, checksum string
switch runtime.GOARCH {
case "amd64":
version = "1.35.0"
url = "https://busybox.net/downloads/binaries/" +
version + "-" + linuxArch() + "-linux-musl/busybox"
checksum = "L7OBIsPu9enNHn7FqpBT1kOg_mCLNmetSeNMA3i4Y60Z5jTgnlX3qX3zcQtLx5AB"
)
case "arm64":
version = "1.31.0"
url = "https://busybox.net/downloads/binaries/" +
version + "-defconfig-multiarch-musl/busybox-armv8l"
checksum = "npJjBO7iwhjW6Kx2aXeSxf8kXhVgTCDChOZTTsI8ZfFfa3tbsklxRiidZQdrVERg"
default:
panic("unsupported target " + runtime.GOARCH)
}
return pkg.NewExec(
"busybox-bin-"+version, nil, pkg.ExecTimeoutMax, false,
fhs.AbsRoot, []string{
@@ -96,9 +110,7 @@ func newBusyboxBin() pkg.Artifact {
&http.Client{Transport: &http.Transport{
// busybox website is really slow to respond
TLSHandshakeTimeout: 2 * time.Minute,
}},
"https://busybox.net/downloads/binaries/"+
version+"-"+linuxArch()+"-linux-musl/busybox",
}}, url,
mustDecode(checksum),
)}),
)