internal/rosa: musl libc artifact
All checks were successful
Test / Create distribution (push) Successful in 49s
Test / Sandbox (push) Successful in 2m47s
Test / ShareFS (push) Successful in 4m42s
Test / Sandbox (race detector) (push) Successful in 5m18s
Test / Hpkg (push) Successful in 5m30s
Test / Hakurei (push) Successful in 5m53s
Test / Hakurei (race detector) (push) Successful in 7m29s
Test / Flake checks (push) Successful in 1m44s
All checks were successful
Test / Create distribution (push) Successful in 49s
Test / Sandbox (push) Successful in 2m47s
Test / ShareFS (push) Successful in 4m42s
Test / Sandbox (race detector) (push) Successful in 5m18s
Test / Hpkg (push) Successful in 5m30s
Test / Hakurei (push) Successful in 5m53s
Test / Hakurei (race detector) (push) Successful in 7m29s
Test / Flake checks (push) Successful in 1m44s
This will likely be included in Rosa OS. The installation is modified to be entirely contained in prefix. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
67
internal/rosa/musl.go
Normal file
67
internal/rosa/musl.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package rosa
|
||||
|
||||
import (
|
||||
"slices"
|
||||
|
||||
"hakurei.app/internal/pkg"
|
||||
)
|
||||
|
||||
// MuslAttr holds the attributes that will be applied to musl.
|
||||
type MuslAttr struct {
|
||||
// Install headers only.
|
||||
Headers bool
|
||||
// Environment variables concatenated with defaults.
|
||||
Env []string
|
||||
// Dependencies concatenated with defaults.
|
||||
Extra []pkg.Artifact
|
||||
}
|
||||
|
||||
// NewMusl returns a [pkg.Artifact] containing an installation of musl libc.
|
||||
func (t Toolchain) NewMusl(attr *MuslAttr) pkg.Artifact {
|
||||
const (
|
||||
version = "1.2.5"
|
||||
checksum = "y6USdIeSdHER_Fw2eT2CNjqShEye85oEg2jnOur96D073ukmIpIqDOLmECQroyDb"
|
||||
)
|
||||
|
||||
if attr == nil {
|
||||
attr = new(MuslAttr)
|
||||
}
|
||||
|
||||
target := "install"
|
||||
script := `
|
||||
mv -v /work/lib/* /work/system/lib
|
||||
rmdir -v /work/lib/
|
||||
`
|
||||
if attr.Headers {
|
||||
target = "install-headers"
|
||||
script = ""
|
||||
}
|
||||
|
||||
extra := []pkg.Artifact{
|
||||
t.NewMake(),
|
||||
}
|
||||
if t == toolchainStage3 {
|
||||
extra = nil
|
||||
}
|
||||
|
||||
return t.New("musl-"+version, slices.Concat(
|
||||
attr.Extra,
|
||||
extra,
|
||||
), nil, slices.Concat([]string{
|
||||
"ROSA_MUSL_TARGET=" + target,
|
||||
}, attr.Env), `
|
||||
# expected to be writable in copies
|
||||
chmod -R +w /usr/src/musl/
|
||||
|
||||
cd "$(mktemp -d)"
|
||||
/usr/src/musl/configure \
|
||||
--prefix=/system \
|
||||
--target="${ROSA_TRIPLE}"
|
||||
make "-j$(nproc)" DESTDIR=/work "${ROSA_MUSL_TARGET}"
|
||||
`+script, pkg.Path(AbsUsrSrc.Append("musl"), true, pkg.NewHTTPGetTar(
|
||||
nil,
|
||||
"https://musl.libc.org/releases/musl-"+version+".tar.gz",
|
||||
mustDecode(checksum),
|
||||
pkg.TarGzip,
|
||||
)))
|
||||
}
|
||||
Reference in New Issue
Block a user