diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-06-18 15:16:40 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-06-18 23:19:51 +0200 |
commit | 870677cbb85d05688ba85deb9807fdef8bd94e19 (patch) | |
tree | fe35eab19f80bc1b2b516e2df89b5b669485c5ee | |
parent | 3fe43df716fb23da75e5ca6f8d817fbe01b0087d (diff) |
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.
-rw-r--r-- | guix/build/compile.scm | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/guix/build/compile.scm b/guix/build/compile.scm index 7b6e31107c..5a1363556a 100644 --- a/guix/build/compile.scm +++ b/guix/build/compile.scm @@ -196,6 +196,20 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"." (unless (zero? 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: ;;; eval: (put 'with-augmented-search-path 'scheme-indent-function 2) ;;; eval: (put 'with-target 'scheme-indent-function 1) |