summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/quirks.scm36
1 files changed, 24 insertions, 12 deletions
diff --git a/guix/quirks.scm b/guix/quirks.scm
index d292f4e932..1cffe971fc 100644
--- a/guix/quirks.scm
+++ b/guix/quirks.scm
@@ -139,18 +139,30 @@ corresponds to the given Guix COMMIT, a SHA1 hexadecimal string."
(define (accesses-guile-2.2-optimization-options? source commit)
(catch 'system-error
(lambda ()
- (match (call-with-input-file
- (string-append source "/guix/build/compile.scm")
- read)
- (('define-module ('guix 'build 'compile)
- _ ...
- #:use-module ('language 'tree-il 'optimize)
- #:use-module ('language 'cps 'optimize)
- #:export ('%default-optimizations
- '%lightweight-optimizations
- 'compile-files))
- #t)
- (_ #f)))
+ (call-with-input-file (string-append source
+ "/guix/build/compile.scm")
+ (lambda (port)
+ (match (read port)
+ (('define-module ('guix 'build 'compile)
+ _ ...
+ #:use-module ('language 'tree-il 'optimize)
+ #:use-module ('language 'cps 'optimize)
+ #:export ('%default-optimizations
+ '%lightweight-optimizations
+ 'compile-files))
+ #t)
+ (_
+ ;; Before v1.0.0 (ca. Dec. 2018), the 'use-modules' form
+ ;; would show up in a subsequent 'cond-expand' clause.
+ ;; See <https://bugs.gnu.org/42519>.
+ (match (read port)
+ (('cond-expand
+ ('guile-2.2 ('use-modules ('language 'tree-il 'optimize)
+ _ ...))
+ _ ...)
+ #t)
+ (_
+ #f)))))))
(const #f)))
(define (build-with-guile-2.2 source)