aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/go.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa/go.go')
-rw-r--r--internal/rosa/go.go77
1 files changed, 77 insertions, 0 deletions
diff --git a/internal/rosa/go.go b/internal/rosa/go.go
new file mode 100644
index 00000000..431ea1ae
--- /dev/null
+++ b/internal/rosa/go.go
@@ -0,0 +1,77 @@
+package rosa
+
+import (
+ "slices"
+
+ "hakurei.app/internal/pkg"
+)
+
+// newGoBootstrap returns the Go bootstrap toolchain.
+func (t Toolchain) newGoBootstrap() pkg.Artifact {
+ const checksum = "8o9JL_ToiQKadCTb04nvBDkp8O1xiWOolAxVEqaTGodieNe4lOFEjlOxN3bwwe23"
+ return t.New("go1.4-bootstrap", nil, nil, []string{
+ "CGO_ENABLED=0",
+ }, `
+mkdir -p /var/tmp
+cp -r /usr/src/go1.4-bootstrap /work
+cd /work/go1.4-bootstrap/src
+chmod -R +w ..
+CC="${CC} ${LDFLAGS}" sh make.bash
+`, pkg.Path(AbsUsrSrc.Append("go1.4-bootstrap"), false, pkg.NewHTTPGetTar(
+ nil, "https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ )))
+}
+
+// newGo returns a specific version of the Go toolchain.
+func (t Toolchain) newGo(
+ version, checksum string,
+ boot pkg.Artifact,
+ env ...string,
+) pkg.Artifact {
+ return t.New("go"+version, []pkg.Artifact{
+ boot,
+ }, nil, slices.Concat([]string{
+ "GOCACHE=/tmp/gocache",
+ "GOROOT_BOOTSTRAP=/system/go",
+ "CGO_" + ldflags(false) + " -O2 -g",
+ }, env), `
+mkdir /work/system
+cp -r /usr/src/go /work/system
+cd /work/system/go/src
+chmod -R +w ..
+sed -i 's/bash run.bash/sh run.bash/' all.bash
+sh make.bash
+`, pkg.Path(AbsUsrSrc.Append("go"), false, pkg.NewHTTPGetTar(
+ nil, "https://go.dev/dl/go"+version+".src.tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ )))
+}
+
+// NewGo returns a [pkg.Artifact] containing the Go toolchain.
+func (t Toolchain) NewGo() pkg.Artifact {
+ go119 := t.newGo(
+ "1.19",
+ "9_e0aFHsIkVxWVGsp9T2RvvjOc3p4n9o9S8tkNe9Cvgzk_zI2FhRQB7ioQkeAAro",
+ t.newGoBootstrap(),
+ "GOROOT_BOOTSTRAP=/go1.4-bootstrap",
+ )
+ go121 := t.newGo(
+ "1.21.13",
+ "YtrDka402BOAEwywx03Vz4QlVwoBiguJHzG7PuythMCPHXS8CVMLvzmvgEbu4Tzu",
+ go119,
+ )
+ go123 := t.newGo(
+ "1.23.12",
+ "wcI32bl1tkqbgcelGtGWPI4RtlEddd-PTd76Eb-k7nXA5LbE9yTNdIL9QSOOxMOs",
+ go121,
+ )
+ go125 := t.newGo(
+ "1.25.6",
+ "x0z430qoDvQbbw_fftjW0rh_GSoh0VJhPzttWk_0hj9yz9AKOjuwRMupF_Q0dbt7",
+ go123,
+ )
+ return go125
+}