package rosa import "hakurei.app/internal/pkg" func (t Toolchain) newMusl( headers bool, env []string, extra ...pkg.Artifact, ) (pkg.Artifact, string) { const ( version = "1.2.5" checksum = "y6USdIeSdHER_Fw2eT2CNjqShEye85oEg2jnOur96D073ukmIpIqDOLmECQroyDb" ) 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 = "" } return t.NewPackage(name, version, pkg.NewHTTPGetTar( nil, "https://musl.libc.org/releases/musl-"+version+".tar.gz", mustDecode(checksum), pkg.TarGzip, ), &PackageAttr{ NonStage0: extra, // 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, nil) }, Name: "musl", Description: "an implementation of the C standard library", Website: "https://musl.libc.org/", } }