compile: Pre-load the compiler outside 'with-target'.

* guix/build/compile.scm (compile-files): Move call to 'compile' before
'with-target'.  Failing to do that, if the target has a different word
size than the host, the first call to 'compile-file' fails with:

  ice-9/eval.scm:293:34: In procedure load-thunk-from-memory: ELF file does not have native word size

while attempting loading 'language/spec.go'.
This commit is contained in:
Ludovic Courtès 2020-04-23 23:10:19 +02:00
parent 0f25feb159
commit 12da5162e4
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -194,6 +194,11 @@ (define (build file)
(with-augmented-search-path %load-path source-directory (with-augmented-search-path %load-path source-directory
(with-augmented-search-path %load-compiled-path build-directory (with-augmented-search-path %load-compiled-path build-directory
(with-fluids ((*current-warning-prefix* "")) (with-fluids ((*current-warning-prefix* ""))
;; Make sure the compiler's modules are loaded before 'with-target'
;; (since 'with-target' influences the .go loader), and before
;; starting to compile files in parallel.
(compile #f)
(with-target host (with-target host
(lambda () (lambda ()
;; FIXME: To work around <https://bugs.gnu.org/15602>, we first ;; FIXME: To work around <https://bugs.gnu.org/15602>, we first
@ -202,10 +207,6 @@ (define (build file)
#:report-load report-load #:report-load report-load
#:debug-port debug-port) #:debug-port debug-port)
;; Make sure compilation related modules are loaded before
;; starting to compile files in parallel.
(compile #f)
;; XXX: Don't use too many workers to work around the insane ;; XXX: Don't use too many workers to work around the insane
;; memory requirements of the compiler in Guile 2.2.2: ;; memory requirements of the compiler in Guile 2.2.2:
;; <https://lists.gnu.org/archive/html/guile-devel/2017-05/msg00033.html>. ;; <https://lists.gnu.org/archive/html/guile-devel/2017-05/msg00033.html>.