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.
This commit is contained in:
Ludovic Courtès 2020-05-29 16:33:09 +02:00
parent 60b81ec2f3
commit 36640207c9
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -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))))