From 988aa29238fca862c7e2cb55f15762a69b4c16ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 22 Dec 2017 16:57:54 +0100 Subject: [PATCH] compile: Load language modules upfront. Fixes a bug whereby "guild compile --target=arm-linux-gnueabihf --from=elisp ... language/elisp/boot.el" would fail with an exception from 'load-thunk-from-memory' while trying to load (language elisp spec) from the guile-being-compiled instead of using that of the guile-for-build. The problem did not manifest with --from=scheme because (language scheme spec) happened to be already loaded before we had changed %load-path. * module/scripts/compile.scm (compile): Add calls to 'lookup-language'. --- module/scripts/compile.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/module/scripts/compile.scm b/module/scripts/compile.scm index 939fb2564..b4d6b31a5 100644 --- a/module/scripts/compile.scm +++ b/module/scripts/compile.scm @@ -1,6 +1,6 @@ ;;; Compile --- Command-line Guile Scheme compiler -*- coding: iso-8859-1 -*- -;; Copyright 2005, 2008-2011, 2013, 2014, 2015 Free Software Foundation, Inc. +;; Copyright 2005, 2008-2011, 2013, 2014, 2015, 2017 Free Software Foundation, Inc. ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU Lesser General Public License @@ -29,6 +29,7 @@ ;;; Code: (define-module (scripts compile) + #:use-module ((system base language) #:select (lookup-language)) #:use-module ((system base compile) #:select (compile-file)) #:use-module (system base target) #:use-module (system base message) @@ -228,6 +229,13 @@ Report bugs to <~A>.~%" %guile-bug-report-address) (exit 0))) + ;; Load FROM and TO before we have changed the load path. That way, when + ;; cross-compiling Guile itself, we can be sure we're loading our own + ;; language modules and not those of the Guile being compiled, which may + ;; have incompatible .go files. + (lookup-language from) + (lookup-language to) + (set! %load-path (append load-path %load-path)) (set! %load-should-auto-compile #f)