package rosa import "hakurei.app/internal/pkg" const kernelVersion = "6.12.73" var kernelSource = pkg.NewHTTPGetTar( nil, "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+ "snapshot/linux-"+kernelVersion+".tar.gz", mustDecode("29oUBJKF1ULIv1-XQLpEUUc3LgjUSmyvOSskG37MYUcBlBjMk7RcbCTLrD7UfSM6"), pkg.TarGzip, ) func (t Toolchain) newKernelSource() pkg.Artifact { return t.New("kernel-"+kernelVersion+"-src", 0, nil, nil, nil, ` mkdir -p /work/usr/src/ cp -r /usr/src/linux /work/usr/src/ chmod -R +w /work/usr/src/linux/ `, pkg.Path(AbsUsrSrc.Append("linux"), false, kernelSource)) } func init() { artifactsF[KernelSource] = Toolchain.newKernelSource } func (t Toolchain) newKernelHeaders() pkg.Artifact { return t.NewViaMake("kernel-headers", kernelVersion, kernelSource, &MakeAttr{ SkipConfigure: true, SkipCheck: true, Make: []string{ "-f /usr/src/kernel-headers/Makefile", "O=/tmp/kbuild", "LLVM=1", `HOSTLDFLAGS="${LDFLAGS}"`, "INSTALL_HDR_PATH=/work/system", "headers_install", }, ScriptInstall: "\n", Flag: TEarly, }, t.Load(Rsync), ) } func init() { artifactsF[KernelHeaders] = Toolchain.newKernelHeaders } func (t Toolchain) newKernel() pkg.Artifact { return t.NewViaMake("kernel", kernelVersion, kernelSource, &MakeAttr{ OmitDefaults: true, SkipConfigure: true, // Build, install, and boot kernel before running kselftest on it. SkipCheck: true, Env: []string{ "PATH=/system/sbin", }, ScriptEarly: ` install -Dm0400 \ /usr/src/.config \ /tmp/kbuild/.config install -Dm0500 \ /usr/src/.installkernel \ /sbin/installkernel `, Make: []string{ "-f /usr/src/kernel/Makefile", "O=/tmp/kbuild", "LLVM=1", "KBUILD_BUILD_VERSION='1-Rosa'", "KBUILD_BUILD_TIMESTAMP='2106-02-07 06:28:15 UTC'", "KBUILD_BUILD_USER=kbuild", "KBUILD_BUILD_HOST=localhost", "all", }, ScriptInstall: ` make \ "-j$(nproc)" \ -f /usr/src/kernel/Makefile \ O=/tmp/kbuild \ LLVM=1 \ INSTALL_PATH=/work \ install \ INSTALL_MOD_PATH=/work \ modules_install rm -v /work/lib/modules/` + kernelVersion + `/build `, Paths: []pkg.ExecPath{ pkg.Path(AbsUsrSrc.Append( ".config", ), false, pkg.NewFile(".config", kernelConfig)), pkg.Path(AbsUsrSrc.Append( ".installkernel", ), false, pkg.NewFile("installkernel", []byte(`#!/bin/sh -e echo "Installing linux $1..." cp -av "$2" "$4" cp -av "$3" "$4" `))), }, }, t.Load(Flex), t.Load(Bison), t.Load(M4), t.Load(Tar), t.Load(Perl), t.Load(BC), t.Load(Sed), t.Load(Gawk), t.Load(Coreutils), t.Load(Diffutils), t.Load(XZ), t.Load(Zlib), t.Load(Gzip), t.Load(Bzip2), t.Load(Zstd), t.Load(Kmod), t.Load(Elfutils), t.Load(OpenSSL), t.Load(KernelHeaders), ) } func init() { artifactsF[Kernel] = Toolchain.newKernel }