From 402f44a628dcfe8383040d1d5d5faf9b148a61e4 Mon Sep 17 00:00:00 2001 From: Noel Georgi Date: Fri, 31 Mar 2023 16:38:30 +0530 Subject: [PATCH] feat: use cache kernel build output Use cache for kernel build output and re-use in downstream steps. Signed-off-by: Noel Georgi --- drbd/pkg.yaml | 15 ++++++++------- gasket-driver/pkg.yaml | 15 ++++++++------- kernel/build/pkg.yaml | 6 ++++-- kernel/kernel/pkg.yaml | 7 ++++--- nonfree/kmod-nvidia/pkg.yaml | 13 +++++++------ nvidia-open-gpu-kernel-modules/pkg.yaml | 13 +++++++------ 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/drbd/pkg.yaml b/drbd/pkg.yaml index f5dcfb9f2..20d4de10a 100644 --- a/drbd/pkg.yaml +++ b/drbd/pkg.yaml @@ -5,26 +5,27 @@ dependencies: - stage: kernel-build steps: - sources: - - url: https://pkg.linbit.com//downloads/drbd/{{ regexReplaceAll ".\\d+\\.\\d+$" .drbd_version "${1}" }}/drbd-{{ .drbd_version }}.tar.gz + - url: https://pkg.linbit.com/downloads/drbd/{{ regexReplaceAll ".\\d+\\.\\d+$" .drbd_version "${1}" }}/drbd-{{ .drbd_version }}.tar.gz destination: drbd.tar.gz sha256: "{{ .drbd_sha256 }}" sha512: "{{ .drbd_sha512 }}" env: ARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}x86_64{{ else }}unsupported{{ end }} + cache: /src/build prepare: - | tar -xzf drbd.tar.gz --strip-components=1 build: - | - make -j $(nproc) -C drbd KERNEL_SOURCES=/src MODVERSIONS=detect KDIR=/src + make -j $(nproc) -C drbd KERNEL_SOURCES=/src MODVERSIONS=detect KDIR=/src/build install: - | - mkdir -p /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.order /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ + mkdir -p /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.order /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ - make -j $(nproc) -C /src M=$(pwd)/drbd modules_install DESTDIR=/rootfs INSTALL_MOD_PATH=/rootfs INSTALL_MOD_DIR=extras INSTALL_MOD_STRIP=1 CONFIG_MODULE_SIG_ALL=y + make -j $(nproc) -C /src/build M=$(pwd)/drbd modules_install DESTDIR=/rootfs INSTALL_MOD_PATH=/rootfs INSTALL_MOD_DIR=extras INSTALL_MOD_STRIP=1 CONFIG_MODULE_SIG_ALL=y test: - | # https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html#signed-modules-and-stripping diff --git a/gasket-driver/pkg.yaml b/gasket-driver/pkg.yaml index f3a0246f6..7ba9dcc23 100644 --- a/gasket-driver/pkg.yaml +++ b/gasket-driver/pkg.yaml @@ -11,23 +11,24 @@ steps: sha512: "{{ .gasket_driver_sha512 }}" env: ARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}x86_64{{ else }}unsupported{{ end }} + cache: /src/build prepare: - | tar xf gasket-driver.tar.gz --strip-components=1 build: - | cd src - sed -i 's|/lib/modules/$(KVERSION)/build|/src|' ./Makefile - make all + sed -i 's|/lib/modules/$(KVERSION)/build|/src/build|' ./Makefile + make -j $(nproc) all install: - | - mkdir -p /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.order /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ + mkdir -p /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.order /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ - make -C /src M=$(pwd)/src modules_install INSTALL_MOD_PATH=/rootfs INSTALL_MOD_DIR=extras INSTALL_MOD_STRIP=1 + make -j $(nproc) -C /src/build M=$(pwd)/src modules_install INSTALL_MOD_PATH=/rootfs INSTALL_MOD_DIR=extras INSTALL_MOD_STRIP=1 test: - | # https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html#signed-modules-and-stripping diff --git a/kernel/build/pkg.yaml b/kernel/build/pkg.yaml index a799a48b6..87dcd8329 100644 --- a/kernel/build/pkg.yaml +++ b/kernel/build/pkg.yaml @@ -7,15 +7,17 @@ steps: - env: CARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}amd64{{ else }}unsupported{{ end }} ARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}x86_64{{ else }}unsupported{{ end }} + KBUILD_OUTPUT: /src/build + cache: /src/build prepare: - | cd /src - cp -v /pkg/config-${CARCH} .config + cp -v /pkg/config-${CARCH} ${KBUILD_OUTPUT}/.config cp -v /pkg/certs/* certs/ build: - | cd /src - python3 /toolchain/kconfig-hardened-check/bin/kconfig-hardened-check -c .config -m json | python3 /pkg/scripts/filter-hardened-check.py + python3 /toolchain/kconfig-hardened-check/bin/kconfig-hardened-check -c ${KBUILD_OUTPUT}/.config -m json | python3 /pkg/scripts/filter-hardened-check.py - | cd /src diff --git a/kernel/kernel/pkg.yaml b/kernel/kernel/pkg.yaml index 6f7e0a3b6..555d3eb07 100644 --- a/kernel/kernel/pkg.yaml +++ b/kernel/kernel/pkg.yaml @@ -6,18 +6,19 @@ dependencies: steps: - env: ARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}x86_64{{ else }}unsupported{{ end }} + cache: /src/build install: - | - cd /src + cd /src/build mkdir -p /rootfs/boot mkdir -p /rootfs/dtb case $ARCH in x86_64) - mv arch/x86/boot/bzImage /rootfs/boot/vmlinuz + cp arch/x86/boot/bzImage /rootfs/boot/vmlinuz ;; arm64) - mv arch/arm64/boot/Image /rootfs/boot/vmlinuz + cp arch/arm64/boot/Image /rootfs/boot/vmlinuz cd ./arch/arm64/boot/dts for vendor in $(find . -not -path . -type d); do dest="/rootfs/dtb/$vendor" diff --git a/nonfree/kmod-nvidia/pkg.yaml b/nonfree/kmod-nvidia/pkg.yaml index fe452985d..627ad7d6a 100644 --- a/nonfree/kmod-nvidia/pkg.yaml +++ b/nonfree/kmod-nvidia/pkg.yaml @@ -18,6 +18,7 @@ steps: # {{ end }} This in fact is YAML comment, but Go templating instruction is evaluated by bldr env: ARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}x86_64{{ else }}unsupported{{ end }} + cache: /src/build prepare: - | export PATH=/toolchain/bin:$PATH @@ -31,17 +32,17 @@ steps: - | cd NVIDIA-Linux-*/kernel - make -j $(nproc) SYSSRC=/src + make -j $(nproc) SYSSRC=/src SYSOUT=/src/build install: - | cd NVIDIA-Linux-*/kernel - mkdir -p /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.order /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ + mkdir -p /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.order /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ - make -j $(nproc) modules_install SYSSRC=/src DEPMOD=/toolchain/bin/depmod INSTALL_MOD_PATH=/rootfs INSTALL_MOD_DIR=extras INSTALL_MOD_STRIP=1 + make -j $(nproc) modules_install SYSSRC=/src SYSOUT=/src/build DEPMOD=/toolchain/bin/depmod INSTALL_MOD_PATH=/rootfs INSTALL_MOD_DIR=extras INSTALL_MOD_STRIP=1 finalize: - from: /rootfs to: / diff --git a/nvidia-open-gpu-kernel-modules/pkg.yaml b/nvidia-open-gpu-kernel-modules/pkg.yaml index 58edb9bdf..b5de1f962 100644 --- a/nvidia-open-gpu-kernel-modules/pkg.yaml +++ b/nvidia-open-gpu-kernel-modules/pkg.yaml @@ -9,6 +9,7 @@ steps: destination: open-gpu-kernel-modules.tar.gz sha256: "{{ .nvidia_driver_sha256 }}" sha512: "{{ .nvidia_driver_sha512 }}" + cache: /src/build env: ARCH: {{ if eq .ARCH "aarch64"}}arm64{{ else if eq .ARCH "x86_64" }}x86_64{{ else }}unsupported{{ end }} prepare: @@ -22,15 +23,15 @@ steps: tar xf open-gpu-kernel-modules.tar.gz --strip-components=1 build: - | - make -j $(nproc) SYSSRC=/src + make -j $(nproc) SYSSRC=/src SYSOUT=/src/build install: - | - mkdir -p /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.order /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ - cp /src/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/include/config/kernel.release)/ + mkdir -p /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.order /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ + cp /src/build/modules.builtin.modinfo /rootfs/lib/modules/$(cat /src/build/include/config/kernel.release)/ - make -j $(nproc) modules_install SYSSRC=/src DEPMOD=/toolchain/bin/depmod INSTALL_MOD_PATH=/rootfs INSTALL_MOD_STRIP=1 + make -j $(nproc) modules_install SYSSRC=/src SYSOUT=/src/build DEPMOD=/toolchain/bin/depmod INSTALL_MOD_PATH=/rootfs INSTALL_MOD_STRIP=1 test: - | # https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html#signed-modules-and-stripping