unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: 33259@debbugs.gnu.org
Subject: [bug#33259] [PATCH 3/8] install: Add 'install-database-and-gc-roots'.
Date: Sun,  4 Nov 2018 23:10:31 +0100	[thread overview]
Message-ID: <20181104221036.4776-3-ludo@gnu.org> (raw)
In-Reply-To: <20181104221036.4776-1-ludo@gnu.org>

* gnu/build/install.scm (%root-profile): New variable.
(install-database-and-gc-roots): New procedure.
(populate-single-profile-directory): Replace inline code with a call to
'install-database-and-gc-roots'.
---
 gnu/build/install.scm | 48 ++++++++++++++++++++++++++++---------------
 1 file changed, 32 insertions(+), 16 deletions(-)

diff --git a/gnu/build/install.scm b/gnu/build/install.scm
index a31e1945d6..c9ebe124fe 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -26,6 +26,7 @@
             evaluate-populate-directive
             populate-root-file-system
             register-closure
+            install-database-and-gc-roots
             populate-single-profile-directory))
 
 ;;; Commentary:
@@ -140,6 +141,35 @@ includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM."
                 (try))
               (apply throw args)))))))
 
+(define %root-profile
+  "/var/guix/profiles/per-user/root")
+
+(define* (install-database-and-gc-roots root database profile
+                                        #:key (profile-name "guix-profile"))
+  "Install DATABASE, the store database, under directory ROOT.  Create
+PROFILE-NAME and have it link to PROFILE, a store item."
+  (define (scope file)
+    (string-append root "/" file))
+
+  (define (mkdir-p* dir)
+    (mkdir-p (scope dir)))
+
+  (define (symlink* old new)
+    (symlink old (scope new)))
+
+  (install-file database (scope "/var/guix/db/"))
+  (chmod (scope "/var/guix/db/db.sqlite") #o644)
+  (mkdir-p* "/var/guix/profiles")
+  (mkdir-p* "/var/guix/gcroots")
+  (symlink* "/var/guix/profiles" "/var/guix/gcroots/profiles")
+
+  ;; Make root's profile, which makes it a GC root.
+  (mkdir-p* %root-profile)
+  (symlink* profile
+            (string-append %root-profile "/" profile-name "-1-link"))
+  (symlink* (string-append profile-name "-1-link")
+            (string-append %root-profile "/" profile-name)))
+
 (define* (populate-single-profile-directory directory
                                             #:key profile closure
                                             (profile-name "guix-profile")
@@ -158,9 +188,6 @@ This is used to create the self-contained tarballs with 'guix pack'."
   (define (scope file)
     (string-append directory "/" file))
 
-  (define %root-profile
-    "/var/guix/profiles/per-user/root")
-
   (define (mkdir-p* dir)
     (mkdir-p (scope dir)))
 
@@ -171,19 +198,8 @@ This is used to create the self-contained tarballs with 'guix pack'."
   (populate-store (list closure) directory)
 
   (when database
-    (install-file database (scope "/var/guix/db/"))
-    (chmod (scope "/var/guix/db/db.sqlite") #o644)
-    (mkdir-p* "/var/guix/profiles")
-    (mkdir-p* "/var/guix/gcroots")
-    (symlink* "/var/guix/profiles"
-              "/var/guix/gcroots/profiles"))
-
-  ;; Make root's profile, which makes it a GC root.
-  (mkdir-p* %root-profile)
-  (symlink* profile
-            (string-append %root-profile "/" profile-name "-1-link"))
-  (symlink* (string-append profile-name "-1-link")
-            (string-append %root-profile "/" profile-name))
+    (install-database-and-gc-roots directory database profile
+                                   #:profile-name profile-name))
 
   (match profile-name
     ("guix-profile"
-- 
2.19.1

  parent reply	other threads:[~2018-11-04 22:20 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-04 22:01 [bug#33259] [PATCH 0/8] 'guix pack': Better '--localstatedir' handling and more tests Ludovic Courtès
2018-11-04 22:10 ` [bug#33259] [PATCH 1/8] pack: Move store database creation to a separate derivation Ludovic Courtès
2018-11-04 22:10   ` [bug#33259] [PATCH 2/8] pack: Import (guix store database) only when '--localstatedir' is passed Ludovic Courtès
2018-11-06 11:06     ` Danny Milosavljevic
2018-11-04 22:10   ` Ludovic Courtès [this message]
2018-11-06 11:05     ` [bug#33259] [PATCH 3/8] install: Add 'install-database-and-gc-roots' Danny Milosavljevic
2018-11-04 22:10   ` [bug#33259] [PATCH 4/8] pack: Docker backend now honors '--localstatedir' Ludovic Courtès
2018-11-06 10:57     ` Danny Milosavljevic
2018-11-06 14:45       ` Ludovic Courtès
2018-11-06 22:23         ` bug#33259: " Ludovic Courtès
2018-11-04 22:10   ` [bug#33259] [PATCH 5/8] pack: Squashfs " Ludovic Courtès
2018-11-06 11:00     ` Danny Milosavljevic
2018-11-06 14:44       ` Ludovic Courtès
2018-11-04 22:10   ` [bug#33259] [PATCH 6/8] pack: Add test for 'self-contained-tarball' with localstatedir Ludovic Courtès
2018-11-06 11:01     ` Danny Milosavljevic
2018-11-04 22:10   ` [bug#33259] [PATCH 7/8] store-copy: Canonicalize the mtime and permissions of the store copy Ludovic Courtès
2018-11-06 11:02     ` Danny Milosavljevic
2018-11-04 22:10   ` [bug#33259] [PATCH 8/8] pack: Add test for '--relocatable' Ludovic Courtès
2018-11-06 11:03     ` Danny Milosavljevic
2018-11-06 10:48   ` [bug#33259] [PATCH 1/8] pack: Move store database creation to a separate derivation Danny Milosavljevic
2018-11-06 14:43     ` Ludovic Courtès

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=20181104221036.4776-3-ludo@gnu.org \
    --to=ludo@gnu.org \
    --cc=33259@debbugs.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).