aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa')
-rw-r--r--internal/rosa/llvm.go28
-rw-r--r--internal/rosa/musl.go62
2 files changed, 34 insertions, 56 deletions
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index 5bb95051..d0e0ac73 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -246,11 +246,8 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) {
{"COMPILER_RT_BUILD_XRAY", "OFF"},
},
append: []string{"compiler-rt"},
- extra: []pkg.Artifact{t.NewMusl(&MuslAttr{
- Headers: true,
- Env: []string{
- "CC=clang",
- },
+ extra: []pkg.Artifact{t.newMusl(true, []string{
+ "CC=clang",
})},
script: `
mkdir -p "${ROSA_INSTALL_PREFIX}/lib/clang/21/lib/"
@@ -267,18 +264,15 @@ ln -s \
`,
})
- musl = t.NewMusl(&MuslAttr{
- Extra: []pkg.Artifact{compilerRT},
- Env: stage0ExclConcat(t, []string{
- "CC=clang",
- "LIBCC=/system/lib/clang/21/lib/" +
- triplet() + "/libclang_rt.builtins.a",
- "AR=ar",
- "RANLIB=ranlib",
- },
- "LDFLAGS="+earlyLDFLAGS(false),
- ),
- })
+ musl = t.newMusl(false, stage0ExclConcat(t, []string{
+ "CC=clang",
+ "LIBCC=/system/lib/clang/21/lib/" +
+ triplet() + "/libclang_rt.builtins.a",
+ "AR=ar",
+ "RANLIB=ranlib",
+ },
+ "LDFLAGS="+earlyLDFLAGS(false),
+ ), compilerRT)
runtimes = t.newLLVMVariant("runtimes", &llvmAttr{
env: stage0ExclConcat(t, []string{},
diff --git a/internal/rosa/musl.go b/internal/rosa/musl.go
index 79678372..e06f777e 100644
--- a/internal/rosa/musl.go
+++ b/internal/rosa/musl.go
@@ -1,34 +1,24 @@
package rosa
-import (
- "slices"
+import "hakurei.app/internal/pkg"
- "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 {
+func (t Toolchain) newMusl(
+ headers bool,
+ env []string,
+ extra ...pkg.Artifact,
+) pkg.Artifact {
const (
version = "1.2.5"
checksum = "y6USdIeSdHER_Fw2eT2CNjqShEye85oEg2jnOur96D073ukmIpIqDOLmECQroyDb"
)
- if attr == nil {
- attr = new(MuslAttr)
- }
+ name := "musl"
+ attr := MakeAttr{
+ OmitDefaults: true,
+ SkipCheck: true,
- target := "install"
- script := `
+ Env: env,
+ Script: `
mkdir -p /work/system/bin
COMPAT_LINKER_NAME="ld-musl-` + linuxArch() + `.so.1"
ln -vs ../lib/libc.so /work/system/bin/linker
@@ -36,29 +26,23 @@ ln -vs ../lib/libc.so /work/system/bin/ldd
ln -vs libc.so "/work/system/lib/${COMPAT_LINKER_NAME}"
rm -v "/work/lib/${COMPAT_LINKER_NAME}"
rmdir -v /work/lib
-`
- if attr.Headers {
- target = "install-headers"
- script = ""
+`,
}
- return t.New("musl-"+version, 0, stage0Concat(t, attr.Extra,
- t.Load(Make),
- t.Load(Coreutils),
- ), nil, slices.Concat([]string{
- "ROSA_MUSL_TARGET=" + target,
- }, attr.Env), `
-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"), false, t.NewPatchedSource(
+ if headers {
+ name += "-headers"
+ attr.ScriptInstall = "make DESTDIR=/work install-headers"
+ attr.Script = ""
+ }
+
+ return t.NewViaMake(name, version, t.NewPatchedSource(
// expected to be writable in copies
"musl", version, pkg.NewHTTPGetTar(
nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
), false,
- )))
+ ), &attr, stage0Concat(t, extra,
+ t.Load(Coreutils),
+ )...)
}