From 4114060cd0ca2188de525436ea56ecea22ab40a8 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 12 May 2024 20:48:11 -0400 Subject: [PATCH] gnu: linux: Turn %default-extra-linux-options into a procedure. This is to allow version-specific options to the list of defaults. * gnu/packages/linux.scm (%default-extra-linux-options): Transform to... (default-extra-linux-options): ... this procedure, which accepts a 'version' argument. (make-linux-libre, linux-libre-arm-generic, linux-libre-arm-generic-5.10) (linux-libre-arm-generic-5.4, linux-libre-arm64-generic) (linux-libre-arm64-generic-5.10, linux-libre-arm64-generic-5.4) (linux-libre-riscv64-generic, linux-libre-mips64el-fuloong2e) (linux-libre-with-bpf): Adjust accordingly. * doc/guix-cookbook.texi (Customizing the Kernel): Adjust accordingly. Change-Id: Ifd3be8b7ed8699bada224a938dbc84205366ff3d --- doc/guix-cookbook.texi | 17 +++++++++-------- gnu/packages/linux.scm | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi index 93874489c2..dd30483436 100644 --- a/doc/guix-cookbook.texi +++ b/doc/guix-cookbook.texi @@ -1682,7 +1682,7 @@ creates a package. ;; See kernel-config for an example. (configuration-file #f) (defconfig "defconfig") - (extra-options %default-extra-linux-options)) + (extra-options (default-extra-linux-options version))) ...) @end lisp @@ -1750,7 +1750,7 @@ The second way to create a custom kernel is to pass a new value to the it: @lisp -(define %default-extra-linux-options +(define (default-extra-linux-options version) `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #true) ;; Modules required for initrd: @@ -1800,7 +1800,7 @@ custom kernel: %file-systems %efi-support %emulation - (@@@@ (gnu packages linux) %default-extra-linux-options))) + ((@@@@ (gnu packages linux) default-extra-linux-options) version))) (define-public linux-libre-macbook41 ;; XXX: Access the internal 'make-linux-libre*' procedure, which is @@ -1814,11 +1814,12 @@ custom kernel: #:extra-options %macbook41-config-options)) @end lisp -In the above example @code{%file-systems} is a collection of flags enabling -different file system support, @code{%efi-support} enables EFI support and -@code{%emulation} enables a x86_64-linux machine to act in 32-bit mode also. -@code{%default-extra-linux-options} are the ones quoted above, which had to be -added in since they were replaced in the @code{extra-options} keyword. +In the above example @code{%file-systems} is a collection of flags +enabling different file system support, @code{%efi-support} enables EFI +support and @code{%emulation} enables a x86_64-linux machine to act in +32-bit mode also. The @code{default-extra-linux-options} procedure is +the one defined above, which had to be used to avoid loosing the default +configuration options of the @code{extra-options} keyword. This all sounds like it should be doable, but how does one even know which modules are required for a particular system? Two places that can be helpful diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index d061935c8c..fca309e73e 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -852,7 +852,7 @@ ARCH and optionally VARIANT, or #f if there is no such configuration." (config (search-auxiliary-file file))) (and config (local-file config)))) -(define %default-extra-linux-options +(define (default-extra-linux-options version) `(;; Make the kernel config available at /proc/config.gz ("CONFIG_IKCONFIG" . #t) ("CONFIG_IKCONFIG_PROC" . #t) @@ -965,7 +965,7 @@ ARCH and optionally VARIANT, or #f if there is no such configuration." ;; for an example. (configuration-file #f) (defconfig "defconfig") - (extra-options %default-extra-linux-options) + (extra-options (default-extra-linux-options version)) (patches `(,%boot-logo-patch ,@(if (apply-infodoc-patch? version) @@ -991,7 +991,7 @@ ARCH and optionally VARIANT, or #f if there is no such configuration." ;; See kernel-config for an example. (configuration-file #f) (defconfig "defconfig") - (extra-options %default-extra-linux-options)) + (extra-options (default-extra-linux-options version))) (package (name (if extra-version (string-append "linux-libre-" extra-version) @@ -1243,7 +1243,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (append `(;; needed to fix the RTC on rockchip platforms ("CONFIG_RTC_DRV_RK808" . #t)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-version)))) (define-public linux-libre-arm-generic-5.10 (make-linux-libre* linux-libre-5.10-version @@ -1256,7 +1256,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (append `(;; needed to fix the RTC on rockchip platforms ("CONFIG_RTC_DRV_RK808" . #t)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-5.10-version)))) (define-public linux-libre-arm-generic-5.4 (make-linux-libre* linux-libre-5.4-version @@ -1269,7 +1269,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (append `(;; needed to fix the RTC on rockchip platforms ("CONFIG_RTC_DRV_RK808" . #t)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-5.4-version)))) (define-public linux-libre-arm-generic-4.19 (make-linux-libre* linux-libre-4.19-version @@ -1321,7 +1321,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") ("CONFIG_BATTERY_CW2015" . m) ("CONFIG_CHARGER_GPIO" . m) ("CONFIG_SND_SOC_ES8316" . m)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-version)))) (define-public linux-libre-arm64-generic-5.10 (make-linux-libre* linux-libre-5.10-version @@ -1347,7 +1347,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") ("CONFIG_BATTERY_CW2015" . m) ("CONFIG_CHARGER_GPIO" . m) ("CONFIG_SND_SOC_ES8316" . m)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-5.10-version)))) (define-public linux-libre-arm64-generic-5.4 (make-linux-libre* linux-libre-5.4-version @@ -1360,7 +1360,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (append `(;; needed to fix the RTC on rockchip platforms ("CONFIG_RTC_DRV_RK808" . #t)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-5.4-version)))) (define-public linux-libre-riscv64-generic (make-linux-libre* linux-libre-version @@ -1384,7 +1384,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") ("CONFIG_HW_RANDOM_VIRTIO" . m) ("CONFIG_VIRTIO_CONSOLE" . m) ("CONFIG_CRYPTO_XTS" . m)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-version)))) (define-public linux-libre-mips64el-fuloong2e (make-linux-libre* linux-libre-version @@ -1396,7 +1396,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") #:extra-options (append `(("CONFIG_OVERLAY_FS" . m)) - %default-extra-linux-options))) + (default-extra-linux-options linux-libre-version)))) (define-public linux-libre-with-bpf (let ((base-linux-libre @@ -1410,7 +1410,7 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config #:extra-options (append %bpf-extra-linux-options - %default-extra-linux-options)))) + (default-extra-linux-options linux-libre-6.8-version))))) (package (inherit base-linux-libre) (inputs (modify-inputs (package-inputs base-linux-libre)