[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/07: channels: 'build-from-source' restores '%guile-for-build'.
From: |
guix-commits |
Subject: |
01/07: channels: 'build-from-source' restores '%guile-for-build'. |
Date: |
Fri, 15 May 2020 06:29:04 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 9db8836916d0e79f86ac63fbd9b77096d83abfa1
Author: Ludovic Courtès <address@hidden>
AuthorDate: Fri May 15 11:53:13 2020 +0200
channels: 'build-from-source' restores '%guile-for-build'.
Not restoring it would cause problems when running:
guix time-machine --commit=6298c3ffd9654d3231a6f25390b056483e8f407c
or similar because the target Guix would be built with 2.2, and then
we'd erroneously go on and attempt build the profile with 2.2. This
would fail because profile dependencies such as "guile-gdbm-ffi" now
target 3.0.
* guix/channels.scm (call-with-guile): New procedure.
(with-guile): New macro.
(build-from-source): Use it instead of calling 'set-guile-for-build'
just once. This ensures that '%guile-for-build' is restored
afterwards.
---
guix/channels.scm | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/guix/channels.scm b/guix/channels.scm
index aca8302..f0174de 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -347,6 +347,21 @@ to '%package-module-path'."
(((predicate . guile) rest ...)
(if (predicate source) (guile) (loop rest))))))
+(define (call-with-guile guile thunk)
+ (lambda (store)
+ (values (parameterize ((%guile-for-build
+ (if guile
+ (package-derivation store guile)
+ (%guile-for-build))))
+ (run-with-store store (thunk)))
+ store)))
+
+(define-syntax-rule (with-guile guile exp ...)
+ "Set GUILE as the '%guile-for-build' parameter for the dynamic extent of
+EXP, a series of monadic expressions."
+ (call-with-guile guile (lambda ()
+ (mbegin %store-monad exp ...))))
+
(define (with-trivial-build-handler mvalue)
"Run MVALUE, a monadic value, with a \"trivial\" build handler installed
that unconditionally resumes the continuation."
@@ -385,10 +400,7 @@ package modules under SOURCE using CORE, an instance of
Guix."
;; Note: BUILD can return #f if it does not support %PULL-VERSION. In
;; the future we'll fall back to a previous version of the protocol
;; when that happens.
- (mbegin %store-monad
- (mwhen guile
- (set-guile-for-build guile))
-
+ (with-guile guile
;; BUILD is usually quite costly. Install a "trivial" build handler
;; so we don't bounce an outer build-accumulator handler that could
;; cause us to redo half of the BUILD computation several times just
@@ -750,3 +762,7 @@ NEW. When OLD is omitted or is #f, return all the news
entries of CHANNEL."
(if (= GIT_ENOTFOUND (git-error-code error))
'()
(apply throw key error rest)))))
+
+;;; Local Variables:
+;;; eval: (put 'with-guile 'scheme-indent-function 1)
+;;; End:
- branch master updated (0419198 -> 1130e8c), guix-commits, 2020/05/15
- 02/07: quirks: Add patch for <https://bugs.gnu.org/41214>., guix-commits, 2020/05/15
- 03/07: gnu: Add openctm., guix-commits, 2020/05/15
- 07/07: gnu: Add python-selenium., guix-commits, 2020/05/15
- 01/07: channels: 'build-from-source' restores '%guile-for-build'.,
guix-commits <=
- 04/07: licenses: Update Zlib license URL., guix-commits, 2020/05/15
- 06/07: gnu: quaternion: Update to 0.0.9.4e., guix-commits, 2020/05/15
- 05/07: gnu: libqmatrixclient: Update to 0.5.3.2., guix-commits, 2020/05/15