pull: Create a version 3 manifest.

This makes the profile readable by older Guix instances.  This is a
followup to c9fbd40785a99e13a59d8e530830ce85220a9871.

Fixes <https://issues.guix.gnu.org/57306>.
Reported by Arun Isaac <arunisaac@systemreboot.net>.

* guix/profiles.scm (%manifest-format-version): Export.
* guix/scripts/package.scm (build-and-use-profile): Add #:format-version
and pass it to 'profile-derivation'.
* guix/scripts/pull.scm (build-and-install): Pass #:format-version 3.
This commit is contained in:
Ludovic Courtès 2022-08-31 12:34:10 +02:00
parent 270e1b9e1e
commit 67a6828b2b
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 6 additions and 0 deletions

@ -128,6 +128,7 @@
packages->manifest packages->manifest
ca-certificate-bundle ca-certificate-bundle
%default-profile-hooks %default-profile-hooks
%manifest-format-version
profile-derivation profile-derivation
profile-search-paths profile-search-paths
load-profile load-profile

@ -145,6 +145,7 @@ denote ranges as interpreted by 'matching-generations'."
dry-run? dry-run?
(hooks %default-profile-hooks) (hooks %default-profile-hooks)
allow-collisions? allow-collisions?
(format-version %manifest-format-version)
bootstrap?) bootstrap?)
"Build a new generation of PROFILE, a file name, using the packages "Build a new generation of PROFILE, a file name, using the packages
specified in MANIFEST, a manifest object. When ALLOW-COLLISIONS? is true, specified in MANIFEST, a manifest object. When ALLOW-COLLISIONS? is true,
@ -154,6 +155,7 @@ hooks\" run when building the profile."
(profile-derivation manifest (profile-derivation manifest
#:allow-collisions? allow-collisions? #:allow-collisions? allow-collisions?
#:hooks (if bootstrap? '() hooks) #:hooks (if bootstrap? '() hooks)
#:format-version format-version
#:locales? (not bootstrap?)))) #:locales? (not bootstrap?))))
(prof (derivation->output-path prof-drv))) (prof (derivation->output-path prof-drv)))

@ -452,6 +452,9 @@ true, display what would be built without actually building it."
(mlet %store-monad ((manifest (channel-instances->manifest instances))) (mlet %store-monad ((manifest (channel-instances->manifest instances)))
(mbegin %store-monad (mbegin %store-monad
(update-profile profile manifest (update-profile profile manifest
;; Create a version 3 profile so that it is readable by
;; old instances of Guix.
#:format-version 3
#:hooks %channel-profile-hooks) #:hooks %channel-profile-hooks)
(return (return