summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-07-10 00:20:24 +0200
committerLudovic Courtès <ludo@gnu.org>2021-07-10 00:24:59 +0200
commit2ea2bca1ddb1e3ba9d843ff7544c22925de7f6d7 (patch)
tree1e32e539b55de2e07037f2e622cef611442c7fed
parent4ac2e09051d2962ee4dd3fe2b19b1b7f8052c567 (diff)
downloadguix-2ea2bca1ddb1e3ba9d843ff7544c22925de7f6d7.tar.gz
services: qemu-binfmt: Preserve argv[0] by default.
Previously, argv[0] would be replaced by the absolute file name of the
executable.  This could cause discrepancies, for example in the
Coreutils test suite: <https://issues.guix.gnu.org/49485>.

* gnu/services/virtualization.scm (<qemu-platform>)[flags]: Default to "FP".
-rw-r--r--gnu/services/virtualization.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 36e9feb05c..c8adcd06d0 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
-;;; Copyright © 2018, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -561,7 +561,17 @@ potential infinite waits blocking libvirt."))
   (family   qemu-platform-family)                 ;string
   (magic    qemu-platform-magic)                  ;bytevector
   (mask     qemu-platform-mask)                   ;bytevector
-  (flags    qemu-platform-flags (default "F")))   ;string
+
+  ;; Default flags:
+  ;;
+  ;;   "F": fix binary.  Open the qemu-user binary (statically linked) as soon
+  ;;   as binfmt_misc interpretation is handled.
+  ;;
+  ;;   "P": preserve argv[0].  QEMU 6.0 detects whether it's started with this
+  ;;   flag and automatically does the right thing.  Without this flag,
+  ;;   argv[0] is replaced by the absolute file name of the executable, an
+  ;;   observable difference that can cause discrepancies.
+  (flags    qemu-platform-flags (default "FP")))  ;string
 
 (define-syntax bv
   (lambda (s)