aboutsummaryrefslogtreecommitdiff
path: root/guix/quirks.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-05-29 16:33:09 +0200
committerLudovic Courtès <ludo@gnu.org>2020-05-29 18:31:35 +0200
commit36640207c9543e48cd6daa92930f023f80065a5d (patch)
tree6d2bd3dc118841d4dc524ebde4b145e420283e8c /guix/quirks.scm
parent60b81ec2f324c18d026e9ae05199493bc644960b (diff)
downloadguix-36640207c9543e48cd6daa92930f023f80065a5d.tar
guix-36640207c9543e48cd6daa92930f023f80065a5d.tar.gz
quirks: Build 'compute-guix-derivation' modules with 2.2 when needed.
Fixes <https://bugs.gnu.org/41595>. Reported by Jan Nieuwenhuizen <janneke@gnu.org>. * guix/quirks.scm (requires-guile-2.2?): New procedure. (%quirks): Add it. (%bug-41214-patch): Comment.
Diffstat (limited to 'guix/quirks.scm')
-rw-r--r--guix/quirks.scm16
1 files changed, 15 insertions, 1 deletions
diff --git a/guix/quirks.scm b/guix/quirks.scm
index d180bd2c09..d292f4e932 100644
--- a/guix/quirks.scm
+++ b/guix/quirks.scm
@@ -57,6 +57,18 @@
#f
(apply throw args)))))
+(define (requires-guile-2.2? source)
+ "Return true if SOURCE uses Guile 2.2 for the shebang of
+'compute-guix-derivation'."
+ (define content
+ (call-with-input-file (string-append source "/" %self-build-file)
+ read-string))
+
+ ;; The 'find-best-packages-by-name' call is inserted by %BUG-41214-PATCH.
+ (string-contains content
+ (object->string
+ '(find-best-packages-by-name "guile" "2.2"))))
+
(define (guile-2.2.4)
(module-ref (resolve-interface '(gnu packages guile))
'guile-2.2.4))
@@ -66,7 +78,8 @@
;; about specific Guile versions that old Guix revisions might need to use
;; just to be able to build and run the trampoline in %SELF-BUILD-FILE. See
;; <https://bugs.gnu.org/37506>
- `((,syscalls-reexports-local-variables? . ,guile-2.2.4)))
+ `((,syscalls-reexports-local-variables? . ,guile-2.2.4)
+ (,requires-guile-2.2? . ,guile-2.2.4)))
;;;
@@ -143,6 +156,7 @@ corresponds to the given Guix COMMIT, a SHA1 hexadecimal string."
(define (build-with-guile-2.2 source)
(substitute* (string-append source "/" %self-build-file)
(("\\(default-guile\\)")
+ ;; Note: This goes hand in hand with the 'requires-guile-2.2?' quirk.
(object->string '(car (find-best-packages-by-name "guile" "2.2"))))
(("\\(find-best-packages-by-name \"guile-gcrypt\" #f\\)")
(object->string '(find-best-packages-by-name "guile2.2-gcrypt" #f))))