diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2024-04-24 16:49:03 -0400 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2024-04-26 07:05:50 -0400 |
commit | 9593750698394b6fecd73e7fca00409ea1ffa2e3 (patch) | |
tree | 0e43622cf0a9e104f2077e15597cdce6c07e041d /gnu/system.scm | |
parent | e584ff08b162c46ef587daca438e97d56bc20b32 (diff) |
system: Warn when multiple nss-certs packages are used.
This can happen due to users providing 'nss-certs' and adding it to the
%base-packages, which now include 'nss-certs'.
* gnu/system.scm (operating-system-packages): Warn when multiple nss-certs
packages are detected; keep only the latest one.
Change-Id: I6104f134ea1cc155ae9e8e0ae70bb5a38fc05800
Reported-by: Ian Eure <ian@retrospec.tv>
Diffstat (limited to 'gnu/system.scm')
-rw-r--r-- | gnu/system.scm | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/gnu/system.scm b/gnu/system.scm index c7f8003ad2..025834328c 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -43,7 +43,8 @@ #:use-module (guix deprecation) #:use-module (guix derivations) #:use-module (guix profiles) - #:use-module ((guix utils) #:select (substitute-keyword-arguments)) + #:use-module ((guix utils) #:select (substitute-keyword-arguments + version>?)) #:use-module (guix i18n) #:use-module (guix diagnostics) #:use-module (guix ui) @@ -275,7 +276,7 @@ VERSION is the target version of the boot-parameters record." (issue operating-system-issue ; string (default %default-issue)) - (packages operating-system-packages ; list of (PACKAGE OUTPUT...) + (packages %operating-system-packages ; list of (PACKAGE OUTPUT...) (default %base-packages)) ; or just PACKAGE (timezone operating-system-timezone @@ -316,6 +317,29 @@ VERSION is the target version of the boot-parameters record." hosts-service-type (%operating-system-hosts-file os)) +;;; XXX: Remove after a new release of Guix no longer suggests to install +;;; nss-certs. +(define (operating-system-packages os) + "Return the packages of the OS <operating-system> record object." + ;; This wrapper is used to warn users that their operating system packages + ;; field contains a duplicated nss-certs packages. + (let* ((packages (%operating-system-packages os)) + (nss-certs-packages (sort (filter (lambda (p) + (string=? "nss-certs" (package-name p))) + packages) + (lambda (x y) + ;; Sort from newer to older versions. + (version>? (package-version x) + (package-version y)))))) + (if (> (length nss-certs-packages) 1) + (begin + (warning #f + (G_ "multiple 'nss-certs' packages found; 'nss-certs' \ +is now included by default in '%base-packages'; ensure it is not explicitly \ +listed in the operating system 'packages' field~%")) + (fold delete packages (drop nss-certs-packages 1))) + packages))) + (define* (operating-system-kernel-arguments os root-device #:key (version %boot-parameters-version)) "Return all the kernel arguments, including the ones not specified directly |