unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Mathieu Othacehe <m.othacehe@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 29409@debbugs.gnu.org
Subject: [bug#29409] [PATCH] build: utils: Introduce dd.
Date: Mon, 04 Dec 2017 15:31:46 +0100	[thread overview]
Message-ID: <87609m5zu5.fsf@gmail.com> (raw)
In-Reply-To: <87609qhax6.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 218 bytes --]


> Granted, that’s a bit more verbose, but it’s also very lightweight
> compared to using ‘dd’.

Here's a new implementation, using your snippet. I tested it with
"installed-extlinux-os", it seems ok.

Mathieu

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-bootloader-extlinux-Stop-using-dd-binary.patch --]
[-- Type: text/x-diff, Size: 3865 bytes --]

From 742662ceec2a40d664520f01977ddc4cbe64d369 Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe <m.othacehe@gmail.com>
Date: Fri, 1 Dec 2017 14:09:38 +0100
Subject: [PATCH] bootloader: extlinux: Stop using dd binary.

* gnu/bootloader/extlinux.scm (dd): Remove it,
(install-extlinux): replace dd call by Guile I/O procedures.
* gnu/system/vm.scm (qemu-image): Add (ice-9 binary-ports) to module-closure
and used-modules list to provide "get-bytevector-n" and "put-bytevector".
* guix/scripts/system.scm (bootloader-installer-derivation): Ditto.
---
 gnu/bootloader/extlinux.scm | 18 ++++++++----------
 gnu/system/vm.scm           |  6 ++++--
 guix/scripts/system.scm     |  6 ++++--
 3 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/gnu/bootloader/extlinux.scm b/gnu/bootloader/extlinux.scm
index 0db5598..98fad0c 100644
--- a/gnu/bootloader/extlinux.scm
+++ b/gnu/bootloader/extlinux.scm
@@ -85,14 +85,6 @@ TIMEOUT ~a~%"
 ;;; Install procedures.
 ;;;
 
-(define dd
-  #~(lambda (bs count if of)
-      (zero? (system* "dd"
-                      (string-append "bs=" (number->string bs))
-                      (string-append "count=" (number->string count))
-                      (string-append "if=" if)
-                      (string-append "of=" of)))))
-
 (define (install-extlinux mbr)
   #~(lambda (bootloader device mount-point)
       (let ((extlinux (string-append bootloader "/sbin/extlinux"))
@@ -102,8 +94,14 @@ TIMEOUT ~a~%"
                     (install-file file install-dir))
                   (find-files syslinux-dir "\\.c32$"))
 
-        (unless (and (zero? (system* extlinux "--install" install-dir))
-                     (#$dd 440 1 (string-append syslinux-dir "/" #$mbr) device))
+        (unless
+            (and (zero? (system* extlinux "--install" install-dir))
+                 (call-with-input-file (string-append syslinux-dir "/" #$mbr)
+                   (lambda (input)
+                     (let ((bv (get-bytevector-n input 440))
+                           (output (open-file device "wb0")))
+                       (put-bytevector output bv)
+                       (close-port output)))))
           (error "failed to install SYSLINUX")))))
 
 (define install-extlinux-mbr
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index b68cce3..b5fe786 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -274,11 +274,13 @@ the image."
   (expression->derivation-in-linux-vm
    name
    (with-imported-modules (source-module-closure '((gnu build vm)
-                                                   (guix build utils)))
+                                                   (guix build utils)
+                                                   (ice-9 binary-ports)))
      #~(begin
          (use-modules (gnu build vm)
                       (guix build utils)
-                      (srfi srfi-26))
+                      (srfi srfi-26)
+                      (ice-9 binary-ports))
 
          (let ((inputs
                 '#$(append (list qemu parted e2fsprogs dosfstools)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 91d151d..5116b82 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -674,9 +674,11 @@ any, are available.  Raise an error if they're not."
 and TARGET arguments."
   (with-monad %store-monad
     (gexp->file "bootloader-installer"
-                (with-imported-modules '((guix build utils))
+                (with-imported-modules '((guix build utils)
+                                         (ice-9 binary-ports))
                   #~(begin
-                      (use-modules (guix build utils))
+                      (use-modules (guix build utils)
+                                   (ice-9 binary-ports))
                       (#$installer #$bootloader #$device #$target))))))
 
 (define* (perform-action action os
-- 
2.7.4


  parent reply	other threads:[~2017-12-04 14:32 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23  9:45 [bug#29409] GuixSD ARM port Mathieu Othacehe
2017-11-23  9:49 ` [bug#29409] [PATCH] linux-libre: Adapt some arm options to match intel conf Mathieu Othacehe
2017-11-23 15:43   ` Ludovic Courtès
2017-11-23 19:09     ` bug#29409: " Mathieu Othacehe
2017-11-25  8:35   ` [bug#29409] " Danny Milosavljevic
2017-11-25 17:22     ` Mathieu Othacehe
2017-11-26  8:16       ` Danny Milosavljevic
2017-11-24 16:49 ` [bug#29409] [PATCH] vm: Use os-defined initrd intead of base-initrd Mathieu Othacehe
2017-11-24 21:36   ` Ludovic Courtès
2017-11-26 12:49     ` Mathieu Othacehe
2017-11-28  9:22 ` [bug#29409] [PATCH] gnu: dtc: Fix build on 32 bits platforms m.othacehe
2017-11-28  9:28 ` [bug#29409] [PATCH] gnu: grub: Disable tests on ARM platforms m.othacehe
2017-11-28 21:00   ` Leo Famulari
2017-11-29 14:03     ` Mathieu Othacehe
2017-11-29 14:20 ` [bug#29409] [PATCH] utils: Add target-arm? procedure m.othacehe
2017-11-29 14:20   ` [bug#29409] [PATCH] system: vm: Do not add EFI partition on ARM system m.othacehe
2017-12-01 20:14     ` Danny Milosavljevic
2017-12-02 12:46       ` Mathieu Othacehe
2017-12-08  9:24       ` Ludovic Courtès
2017-11-30 17:09   ` [bug#29409] [PATCH] utils: Add target-arm? procedure Ludovic Courtès
2017-12-01  9:21     ` Mathieu Othacehe
2017-11-29 17:34 ` [bug#29409] [PATCH] tests: install: Increase extlinux install partition size m.othacehe
2017-11-30 17:12   ` Ludovic Courtès
2017-12-01 13:02     ` Mathieu Othacehe
2017-12-01 14:57       ` Mathieu Othacehe
2017-12-01 16:07         ` Ludovic Courtès
2017-12-02 12:02           ` Mathieu Othacehe
2017-12-02 13:16             ` Mathieu Othacehe
2017-12-02 23:34             ` Ludovic Courtès
2017-12-03 19:31         ` Ludovic Courtès
2017-12-03 21:19           ` Mathieu Othacehe
2017-12-04  8:37             ` Ludovic Courtès
2017-12-04 14:29               ` Mathieu Othacehe
2017-12-04 14:30     ` Mathieu Othacehe
2017-11-30 10:47 ` [bug#29409] [PATCH] build: utils: Introduce dd m.othacehe
2017-12-01 12:47   ` Ludovic Courtès
2017-12-01 13:03     ` Mathieu Othacehe
2017-12-04 14:31     ` Mathieu Othacehe [this message]
2017-12-04 14:43       ` Ludovic Courtès
2017-12-04 15:53         ` Mathieu Othacehe
2017-12-04 17:17           ` Ludovic Courtès
2017-12-04 17:27             ` Mathieu Othacehe
2017-12-01 10:38 ` [bug#29409] [PATCH] utils: Add target-arm32? procedure m.othacehe
2017-12-01 10:38   ` [bug#29409] [PATCH] system: vm: Do not add EFI partition on ARM system m.othacehe
2017-12-01 11:01     ` Ludovic Courtès
2017-12-01 12:58       ` Mathieu Othacehe
2017-12-01 10:58   ` [bug#29409] [PATCH] utils: Add target-arm32? procedure Ludovic Courtès
2017-12-04 16:52 ` [bug#29409] [PATCH] build: vm: Use netdev qemu parameter m.othacehe
2017-12-04 18:19   ` Leo Famulari
2017-12-05  8:58     ` Mathieu Othacehe
2017-12-04 17:35 ` [bug#29409] [PATCH] build: vm: Use qemu drive device parameter m.othacehe
2017-12-08  9:38   ` Ludovic Courtès
2017-12-08 10:22     ` Mathieu Othacehe
2017-12-06 12:59 ` [bug#29409] [PATCH 0/4] ARM port m.othacehe
2017-12-06 12:59   ` [bug#29409] [PATCH 1/4] build: vm: Use netdev qemu parameter m.othacehe
2017-12-11 16:32     ` Ludovic Courtès
2017-12-11 17:36       ` Mathieu Othacehe
2017-12-12  9:00         ` Ludovic Courtès
2017-12-06 12:59   ` [bug#29409] [PATCH 2/4] build: vm: Use qemu drive device parameter m.othacehe
2017-12-11 16:33     ` Ludovic Courtès
2017-12-11 16:34     ` Ludovic Courtès
2017-12-06 12:59   ` [bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM m.othacehe
2017-12-11 16:38     ` Ludovic Courtès
2017-12-11 17:41       ` Mathieu Othacehe
2017-12-12  9:03         ` Ludovic Courtès
2017-12-06 12:59   ` [bug#29409] [PATCH 4/4] bootloader: Factorize write-file-on-device m.othacehe
2017-12-11 16:40     ` Ludovic Courtès
2017-12-11 17:41       ` Mathieu Othacehe
2017-12-07  8:52 ` [bug#29409] [PATCH] system: Add BeagleBone Black installer m.othacehe
2017-12-11 16:47   ` Ludovic Courtès
2017-12-11 17:32     ` ng0
2017-12-11 17:57     ` Mathieu Othacehe
2017-12-13 11:02 ` [bug#29409] [PATCH v2 1/4] vm: Adapt qemu command to ARM m.othacehe
2017-12-13 11:02   ` [bug#29409] [PATCH v2 2/4] bootloader: Factorize write-file-on-device m.othacehe
2017-12-15 10:34     ` Ludovic Courtès
2017-12-15 10:53       ` Mathieu Othacehe
2017-12-13 11:02   ` [bug#29409] [PATCH v2 3/4] scripts: system: Add --expression option m.othacehe
2017-12-15 10:39     ` Ludovic Courtès
2017-12-15 11:18       ` Mathieu Othacehe
2017-12-15 14:03         ` Ludovic Courtès
2017-12-15 15:38           ` Mathieu Othacehe
2017-12-13 11:02   ` [bug#29409] [PATCH v2 4/4] system: Add BeagleBone Black installer m.othacehe
2017-12-15 10:40     ` Ludovic Courtès
2017-12-15 10:33   ` [bug#29409] [PATCH v2 1/4] vm: Adapt qemu command to ARM Ludovic Courtès
2017-12-15 10:45     ` Mathieu Othacehe
2017-12-18 13:56 ` [bug#29409] [PATCH] system: examples: Add a template for BeagleBone Black m.othacehe
2017-12-18 14:22   ` Ludovic Courtès
2017-12-18 14:29     ` Mathieu Othacehe
2017-12-20 19:15 ` [bug#29409] Remove hugetlb control group on ARM32 Mathieu Othacehe
2017-12-21  1:16   ` Tobias Geerinckx-Rice
2017-12-21 10:07     ` Ludovic Courtès
2017-12-21  8:57   ` Danny Milosavljevic
2017-12-21 15:52     ` Ludovic Courtès
2017-12-22  7:54       ` Mathieu Othacehe
2017-12-22 10:50         ` Ludovic Courtès
2017-12-22 14:28           ` Mathieu Othacehe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87609m5zu5.fsf@gmail.com \
    --to=m.othacehe@gmail.com \
    --cc=29409@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).