aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/rosa/all.go3
-rw-r--r--internal/rosa/busybox.go5
-rw-r--r--internal/rosa/gnu.go5
-rw-r--r--internal/rosa/go.go13
-rw-r--r--internal/rosa/llvm.go3
-rw-r--r--internal/rosa/rosa.go16
-rw-r--r--internal/rosa/stage0.go39
-rw-r--r--internal/rosa/tamago.go8
8 files changed, 39 insertions, 53 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index c8eddd7f..4966db49 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -183,7 +183,8 @@ const (
// PresetUnexportedStart is the first unexported preset.
PresetUnexportedStart
- llvmSource = iota - 1
+ stage0Dist = iota - 1
+ llvmSource
// earlyCompilerRT is an early, standalone compiler-rt installation for the
// standalone runtimes build.
//
diff --git a/internal/rosa/busybox.go b/internal/rosa/busybox.go
index 437e05e4..fcfe1648 100644
--- a/internal/rosa/busybox.go
+++ b/internal/rosa/busybox.go
@@ -5,7 +5,6 @@ import (
"io"
"net/http"
"os"
- "runtime"
"time"
"hakurei.app/fhs"
@@ -88,7 +87,7 @@ func (a busyboxBin) Cure(t *pkg.TContext) (err error) {
// the https://busybox.net/downloads/binaries/ binary release.
func newBusyboxBin() pkg.Artifact {
var version, url, checksum string
- switch runtime.GOARCH {
+ switch arch {
case "amd64":
version = "1.35.0"
url = "https://busybox.net/downloads/binaries/" +
@@ -101,7 +100,7 @@ func newBusyboxBin() pkg.Artifact {
checksum = "npJjBO7iwhjW6Kx2aXeSxf8kXhVgTCDChOZTTsI8ZfFfa3tbsklxRiidZQdrVERg"
default:
- panic("unsupported target " + runtime.GOARCH)
+ panic("unsupported target " + arch)
}
return pkg.NewExec(
diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go
index 4abe7eda..f52df524 100644
--- a/internal/rosa/gnu.go
+++ b/internal/rosa/gnu.go
@@ -1,7 +1,6 @@
package rosa
import (
- "runtime"
"slices"
"strconv"
"strings"
@@ -843,7 +842,7 @@ func (t Toolchain) newGnuTLS() (pkg.Artifact, string) {
)
var configureExtra []KV
- switch runtime.GOARCH {
+ switch arch {
case "arm64":
configureExtra = []KV{
{"disable-hardware-acceleration"},
@@ -1148,7 +1147,7 @@ func (t Toolchain) newGCC() (pkg.Artifact, string) {
)
var configureExtra []KV
- switch runtime.GOARCH {
+ switch arch {
case "amd64", "arm64":
configureExtra = append(configureExtra, KV{"with-multilib-list", "''"})
}
diff --git a/internal/rosa/go.go b/internal/rosa/go.go
index ed337207..f955c3aa 100644
--- a/internal/rosa/go.go
+++ b/internal/rosa/go.go
@@ -1,7 +1,6 @@
package rosa
import (
- "runtime"
"slices"
"hakurei.app/internal/pkg"
@@ -69,7 +68,7 @@ func (t Toolchain) newGoLatest() (pkg.Artifact, string) {
finalEnv []string
)
- switch runtime.GOARCH {
+ switch arch {
case "amd64":
bootstrapExtra = append(bootstrapExtra, t.newGoBootstrap())
@@ -79,7 +78,7 @@ func (t Toolchain) newGoLatest() (pkg.Artifact, string) {
finalEnv = append(finalEnv, "CGO_ENABLED=0")
default:
- panic("unsupported target " + runtime.GOARCH)
+ panic("unsupported target " + arch)
}
go119 := t.newGo(
@@ -104,7 +103,7 @@ echo \
[]string{"CGO_ENABLED=0"}, `
sed -i \
's,/lib/ld-musl-`+linuxArch()+`.so.1,/system/bin/linker,' \
- cmd/link/internal/`+runtime.GOARCH+`/obj.go
+ cmd/link/internal/`+arch+`/obj.go
rm \
crypto/tls/handshake_client_test.go \
@@ -122,7 +121,7 @@ echo \
[]string{"CGO_ENABLED=0"}, `
sed -i \
's,/lib/ld-musl-`+linuxArch()+`.so.1,/system/bin/linker,' \
- cmd/link/internal/`+runtime.GOARCH+`/obj.go
+ cmd/link/internal/`+arch+`/obj.go
`, go121,
)
@@ -132,7 +131,7 @@ sed -i \
[]string{"CGO_ENABLED=0"}, `
sed -i \
's,/lib/ld-musl-`+linuxArch()+`.so.1,/system/bin/linker,' \
- cmd/link/internal/`+runtime.GOARCH+`/obj.go
+ cmd/link/internal/`+arch+`/obj.go
rm \
os/root_unix_test.go \
@@ -150,7 +149,7 @@ rm \
finalEnv, `
sed -i \
's,/lib/ld-musl-`+linuxArch()+`.so.1,/system/bin/linker,' \
- cmd/link/internal/`+runtime.GOARCH+`/obj.go
+ cmd/link/internal/`+arch+`/obj.go
sed -i \
's/cpu.X86.HasAVX512VBMI/& \&\& cpu.X86.HasPOPCNT/' \
internal/runtime/gc/scan/scan_amd64.go
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index 121b2fbe..93e0e7d8 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -2,7 +2,6 @@ package rosa
import (
"regexp"
- "runtime"
"slices"
"strings"
@@ -248,7 +247,7 @@ func (t Toolchain) newLLVM() (pkg.Artifact, string) {
// unwind: fails on musl
"eh_frame_fde_pc_range",
}
- switch runtime.GOARCH {
+ switch arch {
case "arm64":
skipChecks = append(skipChecks,
// LLVM: intermittently crashes
diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go
index fb4e8a4b..6bf51fcb 100644
--- a/internal/rosa/rosa.go
+++ b/internal/rosa/rosa.go
@@ -4,7 +4,6 @@ package rosa
import (
"errors"
"path"
- "runtime"
"slices"
"strconv"
"strings"
@@ -54,10 +53,9 @@ var (
AbsSystem = fhs.AbsRoot.Append("system")
)
-// linuxArch returns the architecture name used by linux corresponding to
-// [runtime.GOARCH].
+// linuxArch returns the architecture name used by linux corresponding to arch.
func linuxArch() string {
- switch runtime.GOARCH {
+ switch arch {
case "amd64":
return "x86_64"
case "arm64":
@@ -66,11 +64,11 @@ func linuxArch() string {
return "riscv64"
default:
- panic("unsupported target " + runtime.GOARCH)
+ panic("unsupported target " + arch)
}
}
-// triplet returns the Rosa OS host triple corresponding to [runtime.GOARCH].
+// triplet returns the Rosa OS host triple corresponding to arch.
func triplet() string {
return linuxArch() + "-rosa-linux-musl"
}
@@ -80,9 +78,9 @@ type perArch[T any] map[string]T
// unwrap returns the value for the current architecture.
func (p perArch[T]) unwrap() T {
- v, ok := p[runtime.GOARCH]
+ v, ok := p[arch]
if !ok {
- panic("unsupported target " + runtime.GOARCH)
+ panic("unsupported target " + arch)
}
return v
}
@@ -268,7 +266,7 @@ func (t Toolchain) New(
support = append(support, extra...)
support = append(support, cureEtc{})
if t == toolchainStage0 {
- support = append(support, NewStage0())
+ support = append(support, t.Load(stage0Dist))
} else {
support = append(support, _toolchainBusybox.New("gentoo", 0, nil, nil, nil, `
tar -C /work -xf /usr/src/stage3.tar.xz
diff --git a/internal/rosa/stage0.go b/internal/rosa/stage0.go
index 21c8d3ed..1862e47a 100644
--- a/internal/rosa/stage0.go
+++ b/internal/rosa/stage0.go
@@ -1,8 +1,6 @@
package rosa
import (
- "sync"
-
"hakurei.app/fhs"
"hakurei.app/internal/pkg"
)
@@ -32,25 +30,22 @@ func init() {
}
}
-var (
- // stage0 stores the tarball unpack artifact.
- stage0 pkg.Artifact
- // stage0Once is for lazy initialisation of stage0.
- stage0Once sync.Once
-)
+func init() {
+ const version = "20260504"
+ artifactsM[stage0Dist] = Metadata{
+ f: func(Toolchain) (pkg.Artifact, string) {
+ return newTar(
+ "https://hakurei.app/seed/"+version+"/"+
+ "stage0-"+triplet()+".tar.bz2",
+ perArch[string]{
+ "amd64": "IQjFDkiAVLo1XzflgMMiLP3gnVY2hhDMTzl-QqJDCQhcLQ3lLtRzjI5WCxGyW_lk",
+ "arm64": "6fmwl2Umx2QssKQvxxb1JOGkAjzfA_MXKku0jVdGjYGb35OvwEVA5NYtd0HIy3yH",
+ }.unwrap(),
+ pkg.TarBzip2,
+ ), version
+ },
-// NewStage0 returns a stage0 distribution created from curing [Stage0].
-func NewStage0() pkg.Artifact {
- stage0Once.Do(func() {
- stage0 = newTar(
- "https://hakurei.app/seed/20260504/"+
- "stage0-"+triplet()+".tar.bz2",
- perArch[string]{
- "amd64": "IQjFDkiAVLo1XzflgMMiLP3gnVY2hhDMTzl-QqJDCQhcLQ3lLtRzjI5WCxGyW_lk",
- "arm64": "6fmwl2Umx2QssKQvxxb1JOGkAjzfA_MXKku0jVdGjYGb35OvwEVA5NYtd0HIy3yH",
- }.unwrap(),
- pkg.TarBzip2,
- )
- })
- return stage0
+ Name: "stage0-dist",
+ Description: "Rosa OS stage0 bootstrap seed",
+ }
}
diff --git a/internal/rosa/tamago.go b/internal/rosa/tamago.go
index 538dc65e..f1b493c4 100644
--- a/internal/rosa/tamago.go
+++ b/internal/rosa/tamago.go
@@ -1,10 +1,6 @@
package rosa
-import (
- "runtime"
-
- "hakurei.app/internal/pkg"
-)
+import "hakurei.app/internal/pkg"
func (t Toolchain) newTamaGo() (pkg.Artifact, string) {
const (
@@ -26,7 +22,7 @@ chmod -R +w ..
sed -i \
's,/lib/ld-musl-`+linuxArch()+`.so.1,/system/bin/linker,' \
- cmd/link/internal/`+runtime.GOARCH+`/obj.go
+ cmd/link/internal/`+arch+`/obj.go
sed -i \
's/cpu.X86.HasAVX512VBMI/& \&\& cpu.X86.HasPOPCNT/' \
internal/runtime/gc/scan/scan_amd64.go