diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-05-19 20:47:34 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-05-19 21:40:15 +0900 |
| commit | 962b02cf259403d25505983cc5e11cbc2993e224 (patch) | |
| tree | 615c0ffec34382914ad6244907badcc8b80182b8 /internal/rosa/package/kernel/package.az | |
| parent | 6fd6d971ed5251cf8b1114e142dacd3a2e8c4a44 (diff) | |
internal/rosa/package: migrate kernel
This introduces bindings for extra paths and KnownChecksum, and exposes a passthrough special case.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/package/kernel/package.az')
| -rw-r--r-- | internal/rosa/package/kernel/package.az | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/internal/rosa/package/kernel/package.az b/internal/rosa/package/kernel/package.az new file mode 100644 index 00000000..e3ce8b3e --- /dev/null +++ b/internal/rosa/package/kernel/package.az @@ -0,0 +1,160 @@ +package kernel-source { + description = "unpatched Linux kernel source tree"; + website = "https://kernel.org"; + + version* = "6.12.87"; + output = remoteTar { + url = "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+ + "snapshot/linux-"+version+".tar.gz"; + checksum = "QTl5teIy0K5KsOLYGHQ3FbnPCZNRH2bySXVzghiOoHDdM3zAcSPUkmdly85lMzHx"; + compress = gzip; + }; +} + +package kernel-headers { + description = "an installation of kernel headers"; + website = "https://kernel.org"; + + source = kernel-source; + + files = [ + // updated manually for API changes + "version.h", + ]; + toyboxEarly = true; + + exec = make { + skipConfigure = true; + make = [ + "-f /usr/src/kernel-headers/Makefile", + "O=/tmp/kbuild", + "LLVM=1", + `HOSTLDFLAGS="${LDFLAGS:-''}"`, + "INSTALL_HDR_PATH=/work/system", + "headers_install", + ]; + skipCheck = true; + install = ` +cat \ + /usr/src/version.h > \ + /work/system/include/linux/version.h +`; + }; + + checksum = arch { + default = ""; + + amd64 = "lCmBNcMeUmXifg0vecKOPy3GAaFcJSmOPnf3wit9xYTDSTsFADPt1xxUFfmTn1fD"; + arm64 = "PlRxp4JzZeMGx7CScRlT1NBzc2NVyJlb8Gm8sa3ofFght9ZT101ZJhcIXiCkHSHM"; + }; + inputs = [ rsync ]; +} + +package kernel { + description = "the generic Rosa OS linux kernel"; + website = "https://kernel.org"; + anitya = 375621; + + source = kernel-source; + patches = [ + "f54a91f5337cd918eb86cf600320d25b6cfd8209.patch", + "6ce6fbfddc5b127e4f57c3b5bfdcf40239a4fc2f.patch", + ]; + files = [ + arch { + amd64 = ".config:kernel_amd64.config"; + arm64 = ".config:kernel_arm64.config"; + riscv64 = ".config:kernel_riscv64.config"; + }, + + ".installkernel:installkernel", + ".depmod:depmod", + ]; + + env = [ + "PATH=/system/sbin", + ]; + + early = ` +install -Dm0400 \ + /usr/src/.config \ + /tmp/kbuild/.config +install -Dm0500 \ + /usr/src/.installkernel \ + /sbin/installkernel +`; + + exclusive = true; + + exec = make { + omitDefaults = true; + skipConfigure = true; + + // Build, install, and boot kernel before running kselftest on it. + skipCheck = true; + + make = [ + "-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", + ]; + + install = ` +# kernel is not aware of kmod moduledir +install -Dm0500 \ + /usr/src/.depmod \ + /sbin/depmod + +make \ + ` + jobsFlagE + ` \ + -f /usr/src/kernel/Makefile \ + O=/tmp/kbuild \ + LLVM=1 \ + INSTALL_PATH=/work \ + install \ + INSTALL_MOD_PATH=/work/system \ + DEPMOD=/sbin/depmod \ + modules_install +rm -v "/work/system/lib/modules/$(make -f /usr/src/kernel/Makefile kernelversion)/build" +`; + }; + + inputs = [ + flex, + bison, + m4, + tar, + perl, + bc, + sed, + gawk, + coreutils, + diffutils, + python, + + xz, + gzip, + kmod, + elfutils, + util-linux, + kernel-headers, + ]; +} + +package gen_init_cpio { + description = "a program in the kernel source tree for creating initramfs archive"; + source = kernel-source; + + exec = generic { + build = ` +mkdir -p /work/system/bin/ +cc -o /work/system/bin/gen_init_cpio usr/gen_init_cpio.c +`; + }; +} |
