package rosa import "hakurei.app/internal/pkg" func (t Toolchain) newMusl(headers bool) (pkg.Artifact, string) { const ( version = "1.2.6" checksum = "WtWb_OV_XxLDAB5NerOL9loLlHVadV00MmGk65PPBU1evaolagoMHfvpZp_vxEzS" ) name := "musl" helper := MakeHelper{ OmitDefaults: true, SkipCheck: true, Script: ` mkdir -p /work/system/bin COMPAT_LINKER_NAME="ld-musl-` + linuxArch() + `.so.1" ln -vs ../lib/libc.so /work/system/bin/linker 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 headers { name += "-headers" helper.Make = []string{ "DESTDIR=/work", "install-headers", } helper.Install = "# headers installed during make" helper.Script = "" } env := []string{ "LDFLAGS=" + earlyLDFLAGS(false), } if t.isStage0() { env = append(env, "CC=clang", "AR=ar", "RANLIB=ranlib", ) } return t.NewPackage(name, version, newTar( "https://musl.libc.org/releases/musl-"+version+".tar.gz", checksum, pkg.TarGzip, ), &PackageAttr{ // expected to be writable in copies Chmod: true, Env: env, }, &helper, Coreutils, ), version } func init() { artifactsM[Musl] = Metadata{ f: func(t Toolchain) (pkg.Artifact, string) { return t.newMusl(false) }, Name: "musl", Description: "an implementation of the C standard library", Website: "https://musl.libc.org/", ID: 11688, } artifactsM[muslHeaders] = Metadata{ f: func(t Toolchain) (pkg.Artifact, string) { return t.newMusl(true) }, Name: "musl-headers", Description: "system installation of musl headers", } }