[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/09: shell: ‘--development’ honors ‘--system’.
From: |
guix-commits |
Subject: |
02/09: shell: ‘--development’ honors ‘--system’. |
Date: |
Wed, 6 Dec 2023 17:54:45 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit d98a0203b733316a8a5c9440469dfdd10fc9613f
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Wed Dec 6 17:55:49 2023 +0100
shell: ‘--development’ honors ‘--system’.
Fixes a bug whereby ‘package->development-manifest’ would run with the
wrong system in mind, leading to errors like this:
$ guix shell -s i586-gnu -D shepherd --no-grafts
guix shell: error: package linux-libre-headers@5.15.49 does not support
i586-gnu
* guix/scripts/environment.scm (options/resolve-packages): Define
‘system’ and pass it to ‘package->development-manifest’.’
* tests/guix-shell.sh: Test it.
Change-Id: I95c471c1918913ab80dec7d3ca64fe38583cce78
---
guix/scripts/environment.scm | 10 +++++++---
tests/guix-shell.sh | 33 ++++++++++++++++++++++++++++++++-
2 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 6ae3b11e39..1d7a6e198d 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -311,6 +311,9 @@ use '--preserve' instead~%"))
(define (options/resolve-packages store opts)
"Return OPTS with package specification strings replaced by manifest entries
for the corresponding packages."
+ (define system
+ (assoc-ref opts 'system))
+
(define (manifest-entry=? e1 e2)
(and (eq? (manifest-entry-item e1) (manifest-entry-item e2))
(string=? (manifest-entry-output e1)
@@ -327,11 +330,11 @@ for the corresponding packages."
((? package? package)
(if (eq? mode 'ad-hoc-package)
(list (package->manifest-entry* package))
- (manifest-entries (package->development-manifest package))))
+ (manifest-entries (package->development-manifest package system))))
(((? package? package) (? string? output))
(if (eq? mode 'ad-hoc-package)
(list (package->manifest-entry* package output))
- (manifest-entries (package->development-manifest package))))
+ (manifest-entries (package->development-manifest package system))))
((lst ...)
(append-map (cut packages->outputs <> mode) lst))))
@@ -345,7 +348,8 @@ for the corresponding packages."
(('package 'package (? string? spec))
(manifest-entries
(package->development-manifest
- (transform (specification->package+output spec)))))
+ (transform (specification->package+output spec))
+ system)))
(('expression mode str)
;; Add all the outputs of the package STR evaluates to.
(packages->outputs (read/eval str) mode))
diff --git a/tests/guix-shell.sh b/tests/guix-shell.sh
index 2f5fd86809..b2f820bf26 100644
--- a/tests/guix-shell.sh
+++ b/tests/guix-shell.sh
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2021-2023 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@@ -103,6 +103,37 @@ guix shell --bootstrap --pure -D -f
"$tmpdir/empty-package.scm" \
guile-bootstrap -- guile --version
rm "$tmpdir/empty-package.scm"
+# Make sure '--development' honors '--system'.
+this_system="$(guile -c '(use-modules (guix utils))
+ (display (%current-system))')"
+other_system="$(guile -c '(use-modules (guix utils))
+ (display (if (string=? "riscv64-linux" (%current-system))
+ "x86_64-linux"
+ "riscv64-linux"))')"
+cat > "$tmpdir/some-package.scm" <<EOF
+(use-modules (guix utils)
+ (guix packages)
+ (gnu packages base))
+
+(define unsupported-dependency
+ (package
+ (inherit grep)
+ (name "unsupported-dependency")
+ (supported-systems '())))
+
+(package
+ (inherit hello)
+ (name "phony-package")
+ (inputs
+ (if (string=? (%current-system) "$this_system")
+ (list unsupported-dependency)
+ '())))
+EOF
+
+guix shell -D -f "$tmpdir/some-package.scm" -n && false
+guix shell -D -f "$tmpdir/some-package.scm" -n -s "$other_system"
+
+
if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
then
# Compute the build environment for the initial GNU Make.
- branch master updated (8c294e43eb -> cc681b5657), guix-commits, 2023/12/06
- 02/09: shell: ‘--development’ honors ‘--system’.,
guix-commits <=
- 05/09: gnu: libtorrent-rasterbar: Update to 1.2.19., guix-commits, 2023/12/06
- 08/09: gnu: qbittorrent: Update to 4.6.2., guix-commits, 2023/12/06
- 09/09: gnu: libtorrent-rasterbar: Update to 2.0.9., guix-commits, 2023/12/06
- 01/09: gnu: glibc-locales@2.37: Mark as hidden., guix-commits, 2023/12/06
- 04/09: gnu: python-autograd: Update to 1.5., guix-commits, 2023/12/06
- 03/09: gnu: emacs-guix: Update to 455272c., guix-commits, 2023/12/06
- 06/09: gnu: deluge: Update to 2.1.1., guix-commits, 2023/12/06
- 07/09: gnu: qbittorrent-enhanced: Update to 4.6.1.10., guix-commits, 2023/12/06