compile: Work around non-thread-safe module autoloading.

* guix/build/compile.scm <top level>: Set 'try-module-autoload' when
running on Guile < 2.2.4.
This commit is contained in:
Ludovic Courtès 2018-06-18 15:16:40 +02:00
parent 3fe43df716
commit 870677cbb8
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 14 additions and 0 deletions

View File

@ -196,6 +196,20 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"."
(unless (zero? total) (unless (zero? total)
(report-compilation #f total total))))) (report-compilation #f total total)))))
(eval-when (eval load)
(when (and (string=? "2" (major-version))
(or (string=? "0" (minor-version))
(and (string=? (minor-version) "2")
(< (string->number (micro-version)) 4))))
;; Work around <https://bugs.gnu.org/31878> on Guile < 2.2.4.
;; Serialize 'try-module-autoload' calls.
(set! (@ (guile) try-module-autoload)
(let ((mutex (make-mutex 'recursive))
(real (@ (guile) try-module-autoload)))
(lambda* (module #:optional version)
(with-mutex mutex
(real module version)))))))
;;; Local Variables: ;;; Local Variables:
;;; eval: (put 'with-augmented-search-path 'scheme-indent-function 2) ;;; eval: (put 'with-augmented-search-path 'scheme-indent-function 2)
;;; eval: (put 'with-target 'scheme-indent-function 1) ;;; eval: (put 'with-target 'scheme-indent-function 1)