From patchwork Wed Nov 2 05:48:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chris Marusich X-Patchwork-Id: 17093 Received: (qmail 118039 invoked by uid 89); 2 Nov 2016 05:49:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.2 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=Functional X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: lists.gnu.org Received: from lists.gnu.org (HELO lists.gnu.org) (208.118.235.17) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 02 Nov 2016 05:48:45 +0000 Received: from localhost ([::1]:52702 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c1oPi-0007HN-G1 for patchwork@sourceware.org; Wed, 02 Nov 2016 01:48:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c1oPZ-0007FF-Oi for guix-devel@gnu.org; Wed, 02 Nov 2016 01:48:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c1oPY-0002Kn-MG for guix-devel@gnu.org; Wed, 02 Nov 2016 01:48:33 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:35913) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c1oPY-0002KT-Gi for guix-devel@gnu.org; Wed, 02 Nov 2016 01:48:32 -0400 Received: by mail-pf0-x242.google.com with SMTP id n85so726159pfi.3 for ; Tue, 01 Nov 2016 22:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EfAxpHeElgNbC/PRm/DtP6Qp9fUMxBKBt+6WM2TBlI0=; b=FvDGivHIaSreXVH2zI1NMmMd302IPk5W/BGQ++Yfdp1mZUNoCENQ5daHcTZVkIdzT9 12G4tpLD6fLyIVeN9p4lAQBEx0DHpOdXPhm6REUH1OE83k4qVQrOhAGro0D8RVdWxRGD MSH6BCXLW2ulghIiP2K/DcCcHHtUoYdEkAJneJadiGoHKI9z9yHdybqzTHGCzDUjuFz3 VNqETOYVm1DX1p8nGLQ/8Okwuz7BjTOGSneq/3Gff0wsvFZybVbW5FkFam5oWGJoRZrN BqvUCyDriLTzjQyGpQ7WomIIrC9r+MCZIqi1HiK0uBrqc8yn76syYyN72KQc33EGvSEz OmKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EfAxpHeElgNbC/PRm/DtP6Qp9fUMxBKBt+6WM2TBlI0=; b=HHgFQ5CzBdyD4QpgFYIfyHqpaok6WokzfY0yQ8jX3KDLgS/UTw6wMdu/loetDzQmyG xZk4tPG7LeIk0toVz79dlwUwQ0Ciprmq6ytWeQXFWhEgADXGOPBHM9kErGXSBG2I8Yvo qpn4DihWh4hB7dd3wDKi7XDTE/AxDGVg581vUYShK77ztKvMkeKpG0EQ/zdSAlOTSpEL w7M3XHDdfkPaITzPeLJvIQ8WVfEmkUfHCKznDy2odYZUlNv80p4MFzrGLJOvE9lc6edY kmH6lEbiKGakpeZqTbZpYn1aJkSUnfNIRe9l24lvgmzMnc9+Xfv2b8Bczv9Z5qUxUPDx Ruig== X-Gm-Message-State: ABUngvdFIzPZlaoioMIf7LthoTGjEoIm3fmsUIOxpBZchxqik0hf6xcGRuUMbNJFnt1xLg== X-Received: by 10.99.192.69 with SMTP id z5mr2963236pgi.169.1478065711372; Tue, 01 Nov 2016 22:48:31 -0700 (PDT) Received: from garuda.hsd1.wa.comcast.net. ([2601:602:9d02:4725:4e0f:6eff:fef6:70b9]) by smtp.gmail.com with ESMTPSA id u1sm950957pfb.96.2016.11.01.22.48.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 Nov 2016 22:48:30 -0700 (PDT) From: cmmarusich@gmail.com To: guix-devel@gnu.org Subject: [PATCH 4/5] install: Extract procedure: install-grub-config. Date: Tue, 1 Nov 2016 22:48:14 -0700 Message-Id: <20161102054815.11253-5-cmmarusich@gmail.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20161102054815.11253-1-cmmarusich@gmail.com> References: <87d1ihscmr.fsf@gnu.org> <20161102054815.11253-1-cmmarusich@gmail.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::242 X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+patchwork=sourceware.org@gnu.org Sender: "Guix-devel" From: Chris Marusich * gnu/build/install.scm (install-grub-config): New procedure. (install-grub): Use it. --- gnu/build/install.scm | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/gnu/build/install.scm b/gnu/build/install.scm index 7431a09..3d1594e 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès +;;; Copyright © 2016 Chris Marusich ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:export (install-grub + install-grub-config populate-root-file-system reset-timestamps register-closure @@ -36,13 +38,24 @@ ;;; ;;; Code: -(define* (install-grub grub.cfg device mount-point) +(define (install-grub grub.cfg device mount-point) "Install GRUB with GRUB.CFG on DEVICE, which is assumed to be mounted on MOUNT-POINT. Note that the caller must make sure that GRUB.CFG is registered as a GC root so that the fonts, background images, etc. referred to by GRUB.CFG are not GC'd." + (install-grub-config grub.cfg mount-point) + (unless (zero? (system* "grub-install" "--no-floppy" + "--boot-directory" + (string-append mount-point "/boot") + device)) + (error "failed to install GRUB"))) + +(define (install-grub-config grub.cfg mount-point) + "Atomically copy GRUB.CFG into boot/grub/grub.cfg on the MOUNT-POINT. Note +that the caller must make sure that GRUB.CFG is registered as a GC root so +that the fonts, background images, etc. referred to by GRUB.CFG are not GC'd." (let* ((target (string-append mount-point "/boot/grub/grub.cfg")) (pivot (string-append target ".new"))) (mkdir-p (dirname target)) @@ -50,13 +63,7 @@ GC'd." ;; Copy GRUB.CFG instead of just symlinking it, because symlinks won't ;; work when /boot is on a separate partition. Do that atomically. (copy-file grub.cfg pivot) - (rename-file pivot target) - - (unless (zero? (system* "grub-install" "--no-floppy" - "--boot-directory" - (string-append mount-point "/boot") - device)) - (error "failed to install GRUB")))) + (rename-file pivot target))) (define (evaluate-populate-directive directive target) "Evaluate DIRECTIVE, an sexp describing a file or directory to create under