summary refs log tree commit diff
path: root/gnu/build
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/build')
-rw-r--r--gnu/build/file-systems.scm4
-rw-r--r--gnu/build/linux-boot.scm14
-rw-r--r--gnu/build/linux-container.scm14
-rw-r--r--gnu/build/marionette.scm7
-rw-r--r--gnu/build/vm.scm8
5 files changed, 33 insertions, 14 deletions
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 3e516a4d3c..145b3b14e7 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -261,11 +261,11 @@ volume descriptor from ~s"
   "Return the raw contents of DEVICE's iso9660 primary volume descriptor
 as a bytevector, or #f if DEVICE does not contain an iso9660 file system."
   ;; Start reading at sector 16.
-  ;; Since we are not sure that the device contains an ISO9660 filesystem,
+  ;; Since we are not sure that the device contains an ISO9660 file system,
   ;; we have to find that out first.
   (if (read-superblock device (* 2048 16) 2048 iso9660-superblock?)
       (read-iso9660-primary-volume-descriptor device (* 2048 16))
-      #f)) ; Device does not contain an iso9660 filesystem.
+      #f)) ; Device does not contain an iso9660 file system.
 
 (define (iso9660-superblock-uuid sblock)
   "Return the modification time of an iso9660 primary volume descriptor
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 997107a67a..18d87260a9 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -37,11 +37,11 @@
   #:export (mount-essential-file-systems
             linux-command-line
             find-long-option
+            find-long-options
             make-essential-device-nodes
             make-static-device-nodes
             configure-qemu-networking
 
-            bind-mount
             device-number
             boot-system))
 
@@ -99,6 +99,16 @@ Return the value associated with OPTION, or #f on failure."
            (lambda (arg)
              (substring arg (+ 1 (string-index arg #\=)))))))
 
+(define (find-long-options option arguments)
+  "Find OPTIONs among ARGUMENTS, where OPTION is something like \"console\".
+Return the values associated with OPTIONs as a list, or the empty list if
+OPTION doesn't appear in ARGUMENTS."
+  (let ((opt (string-append option "=")))
+    (filter-map (lambda (arg)
+                  (and (string-prefix? opt arg)
+                       (substring arg (+ 1 (string-index arg #\=)))))
+                arguments)))
+
 (define* (make-disk-device-nodes base major #:optional (minor 0))
   "Make the block device nodes around BASE (something like \"/root/dev/sda\")
 with the given MAJOR number, starting with MINOR."
@@ -188,7 +198,7 @@ with the given MAJOR number, starting with MINOR."
     (lambda args
       (apply report-system-error name args))))
 
-;; Create a device node like the <device-node> passed here on the filesystem.
+;; Create a device node like the <device-node> passed here on the file system.
 (define create-device-node
   (match-lambda
     (($ <device-node> xname type major minor module)
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 70e789403f..65e1325577 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -61,9 +61,14 @@ exists."
     (const #t)
     (lambda ()
       (thunk)
-      (primitive-exit 0))
+
+      ;; XXX: Somehow we sometimes get EBADF from write(2) or close(2) upon
+      ;; exit (coming from fd finalizers) when used by the Shepherd.  To work
+      ;; around that, exit forcefully so fd finalizers don't have a chance to
+      ;; run and fail.
+      (primitive-_exit 0))
     (lambda ()
-      (primitive-exit 1))))
+      (primitive-_exit 1))))
 
 (define (purify-environment)
   "Unset all environment variables."
@@ -335,7 +340,8 @@ return the exit status."
      (match (container-excursion pid
               (lambda ()
                 (close-port in)
-                (write (thunk) out)))
+                (write (thunk) out)
+                (close-port out)))
        (0
         (close-port out)
         (let ((result (read in)))
diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm
index 7554a710a0..173a67cef9 100644
--- a/gnu/build/marionette.scm
+++ b/gnu/build/marionette.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -97,8 +97,11 @@ QEMU monitor and to the guest's backdoor REPL."
           "-monitor" (string-append "unix:" socket-directory "/monitor")
           "-chardev" (string-append "socket,id=repl,path=" socket-directory
                                     "/repl")
+
+          ;; See
+          ;; <http://www.linux-kvm.org/page/VMchannel_Requirements#Invocation>.
           "-device" "virtio-serial"
-          "-device" "virtconsole,chardev=repl"))
+          "-device" "virtserialport,chardev=repl,name=org.gnu.guix.port.0"))
 
   (define (accept* port)
     (match (select (list port) '() (list port) timeout)
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 404f324045..fe003ea458 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -262,7 +262,7 @@ actual /dev name based on DEVICE."
 
 (define* (create-ext-file-system partition type
                                  #:key label uuid)
-  "Create an ext-family filesystem of TYPE on PARTITION.  If LABEL is true,
+  "Create an ext-family file system of TYPE on PARTITION.  If LABEL is true,
 use that as the volume name.  If UUID is true, use it as the partition UUID."
   (format #t "creating ~a partition...\n" type)
   (unless (zero? (apply system* (string-append "mkfs." type)
@@ -277,8 +277,8 @@ use that as the volume name.  If UUID is true, use it as the partition UUID."
 
 (define* (create-fat-file-system partition
                                  #:key label uuid)
-  "Create a FAT filesystem on PARTITION.  The number of File Allocation Tables
-will be determined based on filesystem size.  If LABEL is true, use that as the
+  "Create a FAT file system on PARTITION.  The number of File Allocation Tables
+will be determined based on file system size.  If LABEL is true, use that as the
 volume name."
   ;; FIXME: UUID is ignored!
   (format #t "creating FAT partition...\n")
@@ -425,7 +425,7 @@ GRUB configuration and OS-DRV as the stuff in it."
                             "run=/tmp/root/run"
                             ;; /mnt is used as part of the installation
                             ;; process, as the mount point for the target
-                            ;; filesystem, so create it.
+                            ;; file system, so create it.
                             "mnt=/tmp/root/mnt"
                             "--"
                             "-volid" ,(string-upcase volume-id)