[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
14/14: gexp: 'compiled-modules' no longer overrides (guix build utils).
From: |
Ludovic Courtès |
Subject: |
14/14: gexp: 'compiled-modules' no longer overrides (guix build utils). |
Date: |
Fri, 1 Jun 2018 07:52:20 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 5d669883ecc104403c5d3ba7d172e9c02234577c
Author: Ludovic Courtès <address@hidden>
Date: Fri Jun 1 13:45:36 2018 +0200
gexp: 'compiled-modules' no longer overrides (guix build utils).
Until now 'compiled-modules' would override (guix build utils) with its
own. Thus, when asked to build a different (guix build utils),
via #:module-path, it would fail badly because a (guix build utils)
module was already loaded and possibly incompatible with the new one.
This happened when running 'guix pull --branch=core-updates' from
current master: in 'core-updates', (guix build utils) exports
'ignore-error?' but in 'master' it does not. Thus, 'guix pull' would
fail with:
no binding `invoke-error?' in module (guix build utils)
builder for `/gnu/store/…-module-import-compiled.drv' failed with exit
code 1
cannot build derivation `/gnu/store/…-compute-guix-derivation.drv': 1
dependencies couldn't be built
This patch fixes it.
* guix/gexp.scm (compiled-modules)[build-utils-hack?]: New variable.
[build]: Load MODULES/build/utils.scm when it exists.
---
guix/gexp.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index dd5eb81..fdfd734 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1075,6 +1075,14 @@ last one is created from the given <scheme-file> object."
"Return a derivation that builds a tree containing the `.go' files
corresponding to MODULES. All the MODULES are built in a context where
they can refer to each other."
+ (define build-utils-hack?
+ ;; To avoid a full rebuild, we limit the fix below to the case where
+ ;; MODULE-PATH is different from %LOAD-PATH. This happens when building
+ ;; modules for 'compute-guix-derivation' upon 'guix pull'. TODO: Make
+ ;; this unconditional on the next rebuild cycle.
+ (and (member '(guix build utils) modules)
+ (not (equal? module-path %load-path))))
+
(mlet %store-monad ((modules (imported-modules modules
#:system system
#:guile guile
@@ -1114,7 +1122,27 @@ they can refer to each other."
%auto-compilation-options))))
entries)))
+ (ungexp-splicing
+ (if build-utils-hack?
+ (gexp ((define mkdir-p
+ ;; Capture 'mkdir-p'.
+ (@ (guix build utils) mkdir-p))))
+ '()))
+
(set! %load-path (cons (ungexp modules) %load-path))
+
+ (ungexp-splicing
+ (if build-utils-hack?
+ ;; Above we loaded our own (guix build utils) but now we may
+ ;; need to load a compile a different one. Thus, force a
+ ;; reload.
+ (gexp ((let ((utils (ungexp
+ (file-append modules
+ "/guix/build/utils.scm"))))
+ (when (file-exists? utils)
+ (load utils)))))
+ '()))
+
(mkdir (ungexp output))
(chdir (ungexp modules))
(process-directory "." (ungexp output)))))
- 01/14: gnu: emacs-w3m: Update and allow builds with Emacs 26., (continued)
- 01/14: gnu: emacs-w3m: Update and allow builds with Emacs 26., Ludovic Courtès, 2018/06/01
- 05/14: gnu: Add ghc-bloomfilter., Ludovic Courtès, 2018/06/01
- 08/14: gnu: Add ghc-esqueleto., Ludovic Courtès, 2018/06/01
- 10/14: gnu: ghc-psqueues: Allow building with newer versions of QuickCheck., Ludovic Courtès, 2018/06/01
- 13/14: gnu: rust: Add support for building 32-bit packages on 64-bit hosts., Ludovic Courtès, 2018/06/01
- 09/14: gnu: Add ghc-safesemaphore., Ludovic Courtès, 2018/06/01
- 03/14: gnu: Add hpcguix-web., Ludovic Courtès, 2018/06/01
- 06/14: gnu: Add ghc-feed., Ludovic Courtès, 2018/06/01
- 11/14: gnu: Add ghc-disk-free-space., Ludovic Courtès, 2018/06/01
- 04/14: services: Add hpcguix-web., Ludovic Courtès, 2018/06/01
- 14/14: gexp: 'compiled-modules' no longer overrides (guix build utils).,
Ludovic Courtès <=
- 12/14: gnu: Add git-annex., Ludovic Courtès, 2018/06/01