summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-02-27 15:35:54 +0100
committerLudovic Courtès <ludo@gnu.org>2023-02-27 15:54:09 +0100
commitfee1d08f0dd183ef78bcb9f1534d7b9e7f1df7ac (patch)
tree34eabec6a7535b0c93767e981c5fc5477595020f
parent2cf07434d8ae1751c1dc940ebeb33a586604566e (diff)
pack: Make sure tests can run without a world rebuild.
Commit 68380db4c40a2ee1156349a87254fd7b1f1a52d5 moved from 'gexp->derivation', which as a side effect, would lead tests to require a "world rebuild"--specifically, they'd have to build (default-guile). This was mitigated by 68775338a510f84e63657ab09242d79e726fa457, but that change introduced another regression. * guix/scripts/pack.scm (populate-profile-root): Define 'bootstrap?'. Pass #:guile to 'computed-file', with a value depending on 'bootstrap?'. * tests/pack.scm ("self-contained-tarball + localstatedir") ("docker-image + localstatedir", "squashfs-image + localstatedir") ("deb archive with symlinks and control files") ("rpm archive can be installed/uninstalled"): Use a <profile> record instead of a derivation.
-rw-r--r--guix/scripts/pack.scm8
-rw-r--r--tests/pack.scm40
2 files changed, 27 insertions, 21 deletions
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 51a7b8f1852..eb41eb55631 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015, 2017-2022 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2015, 2017-2023 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
4;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net> 4;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
5;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> 5;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
@@ -220,6 +220,11 @@ items, which relies on hard links."
220 (file-append (store-database (list profile)) 220 (file-append (store-database (list profile))
221 "/db/db.sqlite"))) 221 "/db/db.sqlite")))
222 222
223 (define bootstrap?
224 ;; Whether a '--bootstrap' environment is needed, for testing purposes.
225 ;; XXX: Infer that from available info.
226 (and (not database) (not (profile-locales? profile))))
227
223 (define (import-module? module) 228 (define (import-module? module)
224 ;; Since we don't use deduplication support in 'populate-store', don't 229 ;; Since we don't use deduplication support in 'populate-store', don't
225 ;; import (guix store deduplication) and its dependencies, which includes 230 ;; import (guix store deduplication) and its dependencies, which includes
@@ -287,6 +292,7 @@ items, which relies on hard links."
287 (for-each (cut evaluate-populate-directive <> #$output) 292 (for-each (cut evaluate-populate-directive <> #$output)
288 directives))) 293 directives)))
289 #:local-build? #f 294 #:local-build? #f
295 #:guile (if bootstrap? %bootstrap-guile (default-guile))
290 #:options (list #:references-graphs `(("profile" ,profile)) 296 #:options (list #:references-graphs `(("profile" ,profile))
291 #:target target))) 297 #:target target)))
292 298
diff --git a/tests/pack.scm b/tests/pack.scm
index 734ae1c69b6..87187bb62c7 100644
--- a/tests/pack.scm
+++ b/tests/pack.scm
@@ -138,10 +138,10 @@
138 (test-assertm "self-contained-tarball + localstatedir" store 138 (test-assertm "self-contained-tarball + localstatedir" store
139 (mlet* %store-monad 139 (mlet* %store-monad
140 ((guile (set-guile-for-build (default-guile))) 140 ((guile (set-guile-for-build (default-guile)))
141 (profile (profile-derivation (packages->manifest 141 (profile -> (profile
142 (list %bootstrap-guile)) 142 (content (packages->manifest (list %bootstrap-guile)))
143 #:hooks '() 143 (hooks '())
144 #:locales? #f)) 144 (locales? #f)))
145 (tarball (self-contained-tarball "tar-pack" profile 145 (tarball (self-contained-tarball "tar-pack" profile
146 #:localstatedir? #t)) 146 #:localstatedir? #t))
147 (check (gexp->derivation "check-tarball" 147 (check (gexp->derivation "check-tarball"
@@ -210,10 +210,10 @@
210 (test-assertm "docker-image + localstatedir" store 210 (test-assertm "docker-image + localstatedir" store
211 (mlet* %store-monad 211 (mlet* %store-monad
212 ((guile (set-guile-for-build (default-guile))) 212 ((guile (set-guile-for-build (default-guile)))
213 (profile (profile-derivation (packages->manifest 213 (profile -> (profile
214 (list %bootstrap-guile)) 214 (content (packages->manifest (list %bootstrap-guile)))
215 #:hooks '() 215 (hooks '())
216 #:locales? #f)) 216 (locales? #f)))
217 (tarball (docker-image "docker-pack" profile 217 (tarball (docker-image "docker-pack" profile
218 #:symlinks '(("/bin/Guile" -> "bin/guile")) 218 #:symlinks '(("/bin/Guile" -> "bin/guile"))
219 #:localstatedir? #t)) 219 #:localstatedir? #t))
@@ -250,10 +250,10 @@
250 (test-assertm "squashfs-image + localstatedir" store 250 (test-assertm "squashfs-image + localstatedir" store
251 (mlet* %store-monad 251 (mlet* %store-monad
252 ((guile (set-guile-for-build (default-guile))) 252 ((guile (set-guile-for-build (default-guile)))
253 (profile (profile-derivation (packages->manifest 253 (profile -> (profile
254 (list %bootstrap-guile)) 254 (content (packages->manifest (list %bootstrap-guile)))
255 #:hooks '() 255 (hooks '())
256 #:locales? #f)) 256 (locales? #f)))
257 (image (squashfs-image "squashfs-pack" profile 257 (image (squashfs-image "squashfs-pack" profile
258 #:symlinks '(("/bin" -> "bin")) 258 #:symlinks '(("/bin" -> "bin"))
259 #:localstatedir? #t)) 259 #:localstatedir? #t))
@@ -288,10 +288,10 @@
288 (test-assertm "deb archive with symlinks and control files" store 288 (test-assertm "deb archive with symlinks and control files" store
289 (mlet* %store-monad 289 (mlet* %store-monad
290 ((guile (set-guile-for-build (default-guile))) 290 ((guile (set-guile-for-build (default-guile)))
291 (profile (profile-derivation (packages->manifest 291 (profile -> (profile
292 (list %bootstrap-guile)) 292 (content (packages->manifest (list %bootstrap-guile)))
293 #:hooks '() 293 (hooks '())
294 #:locales? #f)) 294 (locales? #f)))
295 (deb (debian-archive 295 (deb (debian-archive
296 "deb-pack" profile 296 "deb-pack" profile
297 #:compressor %gzip-compressor 297 #:compressor %gzip-compressor
@@ -376,10 +376,10 @@
376 (test-assertm "rpm archive can be installed/uninstalled" store 376 (test-assertm "rpm archive can be installed/uninstalled" store
377 (mlet* %store-monad 377 (mlet* %store-monad
378 ((guile (set-guile-for-build (default-guile))) 378 ((guile (set-guile-for-build (default-guile)))
379 (profile (profile-derivation (packages->manifest 379 (profile -> (profile
380 (list %bootstrap-guile)) 380 (content (packages->manifest (list %bootstrap-guile)))
381 #:hooks '() 381 (hooks '())
382 #:locales? #f)) 382 (locales? #f)))
383 (rpm-pack (rpm-archive "rpm-pack" profile 383 (rpm-pack (rpm-archive "rpm-pack" profile
384 #:compressor %gzip-compressor 384 #:compressor %gzip-compressor
385 #:symlinks '(("/bin/guile" -> "bin/guile")) 385 #:symlinks '(("/bin/guile" -> "bin/guile"))