diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-01-19 01:03:19 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-01-19 01:03:19 +0900 |
| commit | 2df913999b3ab5e79248fc892bd2dd089cac7f26 (patch) | |
| tree | 1fe90c702438e3bed0cd53ea3fb631a5bc92002b /internal | |
| parent | 52c959bd6af3a59bdafc67ffb19d8f90454449bd (diff) | |
internal/rosa: kernel headers
This is required by the toolchain and many other programs.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/rosa/kernel.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/rosa/kernel.go b/internal/rosa/kernel.go new file mode 100644 index 00000000..7ca5b30f --- /dev/null +++ b/internal/rosa/kernel.go @@ -0,0 +1,41 @@ +package rosa + +import ( + "slices" + + "hakurei.app/internal/pkg" +) + +// newKernel is a helper for interacting with Kbuild. +func (t Toolchain) newKernel( + script string, + extra ...pkg.Artifact, +) pkg.Artifact { + const ( + version = "6.18.5" + checksum = "-V1e1WWl7HuePkmm84sSKF7nLuHfUs494uNMzMqXEyxcNE_PUE0FICL0oGWn44mM" + ) + return t.New("kernel-"+version, slices.Concat([]pkg.Artifact{ + t.NewMake(), + }, extra), nil, nil, ` +export LLVM=1 +export HOSTCFLAGS="${ROSA_CFLAGS}" +export HOSTLDFLAGS="${LDFLAGS}" +chmod -R +w /usr/src/linux && cd /usr/src/linux +`+script, pkg.Path(AbsUsrSrc.Append("linux"), true, pkg.NewHTTPGetTar( + nil, + "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+ + "snapshot/linux-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ))) +} + +// NewKernelHeaders returns a [pkg.Artifact] containing kernel headers. +func (t Toolchain) NewKernelHeaders() pkg.Artifact { + return t.newKernel(` +make "-j$(nproc)" \ + INSTALL_HDR_PATH=/work/system \ + headers_install +`, t.NewRsync()) +} |
