[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#33259] [PATCH 5/8] pack: Squashfs backend now honors '--localstated
From: |
Ludovic Courtès |
Subject: |
[bug#33259] [PATCH 5/8] pack: Squashfs backend now honors '--localstatedir'. |
Date: |
Sun, 4 Nov 2018 23:10:33 +0100 |
* guix/scripts/pack.scm (squashfs-image)[database]: New variable.
[build]: Add (gnu build install) to the closure. Call
'install-database-and-gc-roots' when DATABASE is true, and invoke
mksquashfs once more.
* tests/pack.scm ("squashfs-image + localstatedir"): New test.
---
guix/scripts/pack.scm | 19 +++++++++++++++++--
tests/pack.scm | 36 ++++++++++++++++++++++++++++++++++++
2 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 09fc88988a..a86b95dd38 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -53,6 +53,7 @@
lookup-compressor
self-contained-tarball
docker-image
+ squashfs-image
guix-pack))
@@ -288,18 +289,27 @@ points for virtual file systems (like procfs), and
optional symlinks.
SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
added to the pack."
+ (define database
+ (and localstatedir?
+ (file-append (store-database (list profile))
+ "/db/db.sqlite")))
+
(define build
(with-imported-modules (source-module-closure
'((guix build utils)
- (guix build store-copy))
+ (guix build store-copy)
+ (gnu build install))
#:select? not-config?)
#~(begin
(use-modules (guix build utils)
(guix build store-copy)
+ (gnu build install)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
+ (define database #+database)
+
(setenv "PATH" (string-append #$archiver "/bin"))
;; We need an empty file in order to have a valid file argument when
@@ -352,7 +362,12 @@ added to the pack."
;; Create empty mount points.
"-p" "/proc d 555 0 0"
"-p" "/sys d 555 0 0"
- "-p" "/dev d 555 0 0")))))
+ "-p" "/dev d 555 0 0"))
+
+ (when database
+ ;; Initialize /var/guix.
+ (install-database-and-gc-roots "var-etc" database #$profile)
+ (invoke "mksquashfs" "var-etc" #$output)))))
(gexp->derivation (string-append name
(compressor-extension compressor)
diff --git a/tests/pack.scm b/tests/pack.scm
index e8d4f9f18d..63fef70c64 100644
--- a/tests/pack.scm
+++ b/tests/pack.scm
@@ -28,6 +28,7 @@
#:use-module (guix tests)
#:use-module (guix gexp)
#:use-module (gnu packages bootstrap)
+ #:use-module ((gnu packages compression) #:select (squashfs-tools-next))
#:use-module (srfi srfi-64))
(define %store
@@ -126,6 +127,41 @@
(string=? (string-append #$profile "/bin/guile")
(pk 'guilelink (readlink
"bin/Guile"))))
(mkdir #$output)))))))
+ (built-derivations (list check))))
+
+ (unless store (test-skip 1))
+ (test-assertm "squashfs-image + localstatedir" store
+ (mlet* %store-monad
+ ((guile (set-guile-for-build (default-guile)))
+ (profile (profile-derivation (packages->manifest
+ (list %bootstrap-guile))
+ #:hooks '()
+ #:locales? #f))
+ (image (squashfs-image "squashfs-pack" profile
+ #:symlinks '(("/bin" -> "bin"))
+ #:localstatedir? #t))
+ (check (gexp->derivation
+ "check-tarball"
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils)
+ (ice-9 match))
+
+ (define bin
+ (string-append "." #$profile "/bin"))
+
+ (setenv "PATH"
+ (string-append #$squashfs-tools-next "/bin"))
+ (invoke "unsquashfs" #$image)
+ (with-directory-excursion "squashfs-root"
+ (when (and (file-exists? (string-append bin
+ "/guile"))
+ (file-exists? "var/guix/db/db.sqlite")
+ (string=? (string-append
#$%bootstrap-guile "/bin")
+ (pk 'binlink (readlink bin)))
+ (string=? (string-append #$profile
"/bin")
+ (pk 'guilelink (readlink
"bin"))))
+ (mkdir #$output))))))))
(built-derivations (list check)))))
(test-end)
--
2.19.1
- [bug#33259] [PATCH 8/8] pack: Add test for '--relocatable'., (continued)
[bug#33259] [PATCH 7/8] store-copy: Canonicalize the mtime and permissions of the store copy., Ludovic Courtès, 2018/11/04
[bug#33259] [PATCH 6/8] pack: Add test for 'self-contained-tarball' with localstatedir., Ludovic Courtès, 2018/11/04
[bug#33259] [PATCH 5/8] pack: Squashfs backend now honors '--localstatedir'.,
Ludovic Courtès <=
[bug#33259] [PATCH 3/8] install: Add 'install-database-and-gc-roots'., Ludovic Courtès, 2018/11/04
[bug#33259] [PATCH 1/8] pack: Move store database creation to a separate derivation., Danny Milosavljevic, 2018/11/06