From 71977a6c59460e029c91741c8b11f3a544a70486 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 20 Apr 2020 23:31:01 +0200 Subject: Revert "system: Don’t create a module database when no modules are available." MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit b2fff3b5de7d510fe4809e9a97089dddf2a39ffc. Fixes . Reported by pkill9 . This commit is incorrect: its effect depends on whether KERNEL's build output is already available in the store, it breaks with non-package kernels as reported at , and the LINUX-MODULE-DATABASE hook is required at all times since 5c79f238634c5adb6657f1b4b1bb4ddb8bb73ef1 removed the relevant bits from the 'linux-libre' package. --- gnu/system.scm | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'gnu/system.scm') diff --git a/gnu/system.scm b/gnu/system.scm index fd456c6206..d79ea23f98 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -477,19 +477,13 @@ (define* (operating-system-directory-base-entries os) value of the SYSTEM-SERVICE-TYPE service." (let ((locale (operating-system-locale-directory os))) (mlet* %store-monad ((kernel -> (operating-system-kernel os)) - (kernel-modules (package-file kernel "lib/modules")) (modules -> (operating-system-kernel-loadable-modules os)) - (has-modules? -> - (or (not (null? modules)) - (file-exists? kernel-modules))) (kernel (profile-derivation (packages->manifest (cons kernel modules)) - #:hooks (if has-modules? - (list linux-module-database) - '()))) + #:hooks (list linux-module-database))) (initrd -> (operating-system-initrd-file os)) (params (operating-system-boot-parameters-file os))) (return `(("kernel" ,kernel) -- cgit v1.2.3 From 2e37d1583a25fa824e6c4674cdc35994ec8091a7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 22 Apr 2020 15:03:51 +0200 Subject: system: 'operating-system-boot-parameters-file' uses 'scheme-file'. * gnu/system.scm (operating-system-boot-parameters-file): Use 'scheme-file' instead of 'gexp->file'. (operating-system-directory-base-entries): Adjust accordingly. --- gnu/system.scm | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) (limited to 'gnu/system.scm') diff --git a/gnu/system.scm b/gnu/system.scm index d79ea23f98..fb48fedd7f 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -485,7 +485,7 @@ (define* (operating-system-directory-base-entries os) (cons kernel modules)) #:hooks (list linux-module-database))) (initrd -> (operating-system-initrd-file os)) - (params (operating-system-boot-parameters-file os))) + (params -> (operating-system-boot-parameters-file os))) (return `(("kernel" ,kernel) ("parameters" ,params) ("initrd" ,initrd) @@ -1078,28 +1078,29 @@ (define* (operating-system-boot-parameters-file os os device #:system-kernel-arguments? system-kernel-arguments?))) - (gexp->file "parameters" - #~(boot-parameters - (version 0) - (label #$(boot-parameters-label params)) - (root-device - #$(device->sexp - (boot-parameters-root-device params))) - (kernel #$(boot-parameters-kernel params)) - (kernel-arguments - #$(boot-parameters-kernel-arguments params)) - (initrd #$(boot-parameters-initrd params)) - (bootloader-name #$(boot-parameters-bootloader-name params)) - (bootloader-menu-entries - #$(map menu-entry->sexp - (or (and=> (operating-system-bootloader os) - bootloader-configuration-menu-entries) - '()))) - (store - (device - #$(device->sexp (boot-parameters-store-device params))) - (mount-point #$(boot-parameters-store-mount-point params)))) - #:set-load-path? #f))) + (scheme-file "parameters" + #~(boot-parameters + (version 0) + (label #$(boot-parameters-label params)) + (root-device + #$(device->sexp + (boot-parameters-root-device params))) + (kernel #$(boot-parameters-kernel params)) + (kernel-arguments + #$(boot-parameters-kernel-arguments params)) + (initrd #$(boot-parameters-initrd params)) + (bootloader-name #$(boot-parameters-bootloader-name params)) + (bootloader-menu-entries + #$(map menu-entry->sexp + (or (and=> (operating-system-bootloader os) + bootloader-configuration-menu-entries) + '()))) + (store + (device + #$(device->sexp (boot-parameters-store-device params))) + (mount-point #$(boot-parameters-store-mount-point + params)))) + #:set-load-path? #f))) (define-gexp-compiler (operating-system-compiler (os ) system target) -- cgit v1.2.3 From 93664feee1e61f586f5bda686b75d1c83da5d76d Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Sat, 4 Apr 2020 09:59:48 +0200 Subject: system: Split %BASE-PACKAGES in smaller parts. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/system.scm: (%base-packages-interactive, %base-packages-linux, %base-packages-networking, %base-packages-utils): New variables. (%base-packages): Use those new variables. Signed-off-by: Ludovic Courtès --- gnu/system.scm | 95 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 39 deletions(-) (limited to 'gnu/system.scm') diff --git a/gnu/system.scm b/gnu/system.scm index fb48fedd7f..3ee2c84235 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2019 Meiyo Peng ;;; Copyright © 2020 Danny Milosavljevic +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -142,6 +143,10 @@ (define-module (gnu system) %setuid-programs %sudoers-specification %base-packages + %base-packages-interactive + %base-packages-linux + %base-packages-networking + %base-packages-utils %base-firmware)) ;;; Commentary: @@ -575,48 +580,60 @@ (define %base-firmware (list ath9k-htc-firmware openfwwf-firmware)) +(define %base-packages-utils + ;; Default set of utilities packages. + (cons* procps psmisc which + (@ (gnu packages admin) shadow) ;for 'passwd' + + ;; XXX: We don't use (canonical-package guile-2.2) here because that + ;; would create a collision in the global profile between the GMP + ;; variant propagated by 'guile-final' and the GMP variant propagated + ;; by 'gnutls', itself propagated by 'guix'. + guile-2.2 + + ;; The packages below are also in %FINAL-INPUTS, so take them from + ;; there to avoid duplication. + (map canonical-package + (list bash coreutils findutils grep sed + diffutils patch gawk tar gzip bzip2 xz lzip)))) + +(define %base-packages-linux + ;; Default set of linux specific packages. + (list pciutils usbutils + util-linux+udev + ;; Get 'insmod' & co. from kmod, not module-init-tools, since udev + ;; already depends on it anyway. + kmod eudev)) + +(define %base-packages-interactive + ;; Default set of common interactive packages. + (list less zile nano + man-db + info-reader ;the standalone Info reader (no Perl) + bash-completion + kbd + ;; The 'sudo' command is already in %SETUID-PROGRAMS, but we also + ;; want the other commands and the man pages (notably because + ;; auto-completion in Emacs shell relies on man pages.) + sudo + guile-readline guile-colorized)) + +(define %base-packages-networking + ;; Default set of networking packages. + (list inetutils isc-dhcp + iproute + ;; wireless-tools is deprecated in favor of iw, but it's still what + ;; many people are familiar with, so keep it around. + iw wireless-tools)) + (define %base-packages ;; Default set of packages globally visible. It should include anything ;; required for basic administrator tasks. - (cons* procps psmisc which less zile nano - pciutils usbutils - util-linux+udev - inetutils isc-dhcp - (@ (gnu packages admin) shadow) ;for 'passwd' - - ;; wireless-tools is deprecated in favor of iw, but it's still what - ;; many people are familiar with, so keep it around. - iw wireless-tools - - iproute - man-db - info-reader ;the standalone Info reader (no Perl) - - ;; The 'sudo' command is already in %SETUID-PROGRAMS, but we also - ;; want the other commands and the man pages (notably because - ;; auto-completion in Emacs shell relies on man pages.) - sudo - - ;; Get 'insmod' & co. from kmod, not module-init-tools, since udev - ;; already depends on it anyway. - kmod eudev - - e2fsprogs kbd - - bash-completion - - ;; XXX: We don't use (canonical-package guile-2.2) here because that - ;; would create a collision in the global profile between the GMP - ;; variant propagated by 'guile-final' and the GMP variant propagated - ;; by 'gnutls', itself propagated by 'guix'. - guile-2.2 - guile-readline guile-colorized - - ;; The packages below are also in %FINAL-INPUTS, so take them from - ;; there to avoid duplication. - (map canonical-package - (list bash coreutils findutils grep sed - diffutils patch gawk tar gzip bzip2 xz lzip)))) + (append (list e2fsprogs) + %base-packages-interactive + %base-packages-linux + %base-packages-networking + %base-packages-utils)) (define %default-issue ;; Default contents for /etc/issue. -- cgit v1.2.3 From f91ad0b13d8d3d5b1ae92e209b1be6e8473385ba Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Wed, 22 Apr 2020 22:58:11 +0200 Subject: system: Automatically adjust linux-module packages to use the operating-system's kernel. * gnu/system.scm (package-for-kernel): New procedure. (operating-system-directory-base-entries): Use it. * gnu/tests/linux-module.scm: Test it. --- gnu/system.scm | 18 +++++++++++++++++- gnu/tests/linux-modules.scm | 11 ++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) (limited to 'gnu/system.scm') diff --git a/gnu/system.scm b/gnu/system.scm index 3ee2c84235..29e622872d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -33,6 +33,7 @@ (define-module (gnu system) #:use-module (guix derivations) #:use-module (guix profiles) #:use-module (guix ui) + #:use-module (guix utils) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages guile) @@ -477,6 +478,16 @@ (define (operating-system-kernel-file os) (file-append (operating-system-kernel os) "/" (system-linux-image-file-name))) +(define (package-for-kernel target-kernel module-package) + "Return a package like MODULE-PACKAGE, adapted for TARGET-KERNEL, if +possible (that is if there's a LINUX keyword argument in the build system)." + (package + (inherit module-package) + (arguments + (substitute-keyword-arguments (package-arguments module-package) + ((#:linux kernel #f) + target-kernel))))) + (define* (operating-system-directory-base-entries os) "Return the basic entries of the 'system' directory of OS for use as the value of the SYSTEM-SERVICE-TYPE service." @@ -487,7 +498,12 @@ (define* (operating-system-directory-base-entries os) (kernel (profile-derivation (packages->manifest - (cons kernel modules)) + (cons kernel + (map (lambda (module) + (if (package? module) + (package-for-kernel kernel module) + module)) + modules))) #:hooks (list linux-module-database))) (initrd -> (operating-system-initrd-file os)) (params -> (operating-system-boot-parameters-file os))) diff --git a/gnu/tests/linux-modules.scm b/gnu/tests/linux-modules.scm index 788bdc848a..953b132ef7 100644 --- a/gnu/tests/linux-modules.scm +++ b/gnu/tests/linux-modules.scm @@ -28,8 +28,10 @@ (define-module (gnu tests linux-modules) #:use-module (guix derivations) #:use-module (guix gexp) #:use-module (guix modules) + #:use-module (guix packages) #:use-module (guix monads) #:use-module (guix store) + #:use-module (guix utils) #:export (%test-loadable-kernel-modules-0 %test-loadable-kernel-modules-1 %test-loadable-kernel-modules-2)) @@ -118,5 +120,12 @@ (define %test-loadable-kernel-modules-2 (description "Tests loadable kernel modules facility of with two extra modules.") (value (run-loadable-kernel-modules-test - (list acpi-call-linux-module ddcci-driver-linux) + (list acpi-call-linux-module + (package + (inherit ddcci-driver-linux) + (arguments + `(#:linux #f + ,@(strip-keyword-arguments '(#:linux) + (package-arguments + ddcci-driver-linux)))))) '("acpi_call" "ddcci"))))) -- cgit v1.2.3