From b983917a6ef8c054347029c9f215f93ff8bd6214 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Fri, 20 Feb 2026 18:45:31 +0900 Subject: [PATCH] internal/rosa: expose kernel source This also removes the unused kernel helper. Signed-off-by: Ophestra --- internal/rosa/all.go | 2 ++ internal/rosa/kernel.go | 58 ++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 81f7272..2198994 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -39,6 +39,7 @@ const ( HakureiDist IniConfig KernelHeaders + KernelSource Kmod LibXau Libexpat @@ -153,6 +154,7 @@ func ResolveName(name string) (p PArtifact, ok bool) { "hakurei-dist": HakureiDist, "iniconfig": IniConfig, "kernel-headers": KernelHeaders, + "kernel-source": KernelSource, "kmod": Kmod, "libXau": LibXau, "libexpat": Libexpat, diff --git a/internal/rosa/kernel.go b/internal/rosa/kernel.go index 06c1d03..5aef20e 100644 --- a/internal/rosa/kernel.go +++ b/internal/rosa/kernel.go @@ -1,44 +1,38 @@ package rosa -import ( - "slices" +import "hakurei.app/internal/pkg" - "hakurei.app/internal/pkg" -) +const kernelVersion = "6.12.73" -// newKernel is a helper for interacting with Kbuild. -func (t Toolchain) newKernel( - flag int, - patches [][2]string, - script string, - extra ...pkg.Artifact, -) pkg.Artifact { - const ( - version = "6.12.73" - checksum = "29oUBJKF1ULIv1-XQLpEUUc3LgjUSmyvOSskG37MYUcBlBjMk7RcbCTLrD7UfSM6" - ) - return t.New("kernel-"+version, flag, slices.Concat([]pkg.Artifact{ - t.Load(Make), - }, extra), nil, nil, ` -export LLVM=1 -export HOSTLDFLAGS="${LDFLAGS}" -cd /usr/src/linux -`+script, pkg.Path(AbsUsrSrc.Append("linux"), true, t.NewPatchedSource( - "kernel", version, pkg.NewHTTPGetTar( - nil, - "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+ - "snapshot/linux-"+version+".tar.gz", - mustDecode(checksum), - pkg.TarGzip, - ), false, patches..., +func (t Toolchain) newKernelSource() pkg.Artifact { + const checksum = "29oUBJKF1ULIv1-XQLpEUUc3LgjUSmyvOSskG37MYUcBlBjMk7RcbCTLrD7UfSM6" + 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, pkg.NewHTTPGetTar( + nil, "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+ + "snapshot/linux-"+kernelVersion+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, ))) } +func init() { artifactsF[KernelSource] = Toolchain.newKernelSource } func (t Toolchain) newKernelHeaders() pkg.Artifact { - return t.newKernel(TEarly, nil, ` -make "-j$(nproc)" \ + return t.New("kernel-headers-"+kernelVersion, TEarly, []pkg.Artifact{ + t.Load(Make), + t.Load(Rsync), + + t.Load(KernelSource), + }, nil, nil, ` +cd /usr/src/linux +make \ + "-j$(nproc)" \ + LLVM=1 \ + HOSTLDFLAGS="${LDFLAGS}" \ INSTALL_HDR_PATH=/work/system \ headers_install -`, t.Load(Rsync)) +`) } func init() { artifactsF[KernelHeaders] = Toolchain.newKernelHeaders }