diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-07-14 17:07:09 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-07-15 10:00:12 +0200 |
commit | 38302bd9392cc9518b04e2726cf6a38ee75922cc (patch) | |
tree | 82a2cde66ee1224057bbbdadfaf84d1153fc81eb | |
parent | 2f3c0fb39d8bc6fc9a629b79947691da48ca42e9 (diff) | |
download | patches-38302bd9392cc9518b04e2726cf6a38ee75922cc.tar patches-38302bd9392cc9518b04e2726cf6a38ee75922cc.tar.gz |
compile: Report the name of the file that cannot be compiled.
Fixes <https://bugs.gnu.org/36640>.
Reported by Robert Vollmert <rob@vllmrt.net>.
* guix/build/compile.scm (call/exit-on-exception): Add 'file' parameter
and honor it.
(exit-on-exception): Likewise.
(compile-files): Pass FILE to 'exit-on-exception'.
-rw-r--r-- | guix/build/compile.scm | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/guix/build/compile.scm b/guix/build/compile.scm index 29865f2f2e..c127456fd0 100644 --- a/guix/build/compile.scm +++ b/guix/build/compile.scm @@ -129,8 +129,9 @@ front." (lambda () (set! path initial-value))))) -(define (call/exit-on-exception thunk) - "Evaluate THUNK and exit right away if an exception is thrown." +(define (call/exit-on-exception file thunk) + "Evaluate THUNK and exit right away if an exception is thrown. Report FILE +as the file that was being compiled when the exception was thrown." (catch #t thunk (const #f) @@ -141,15 +142,18 @@ front." (stack (make-stack #t)) (depth (stack-length stack)) (frame (and (> depth 1) (stack-ref stack 1)))) + (newline port) + (format port "error: failed to compile '~a':~%~%" file) (false-if-exception (display-backtrace stack port)) (print-exception port frame key args))) ;; Don't go any further. (primitive-exit 1)))) -(define-syntax-rule (exit-on-exception exp ...) - "Evaluate EXP and exit if an exception is thrown." - (call/exit-on-exception (lambda () exp ...))) +(define-syntax-rule (exit-on-exception file exp ...) + "Evaluate EXP and exit if an exception is thrown. Report FILE as the faulty +file when an exception is thrown." + (call/exit-on-exception file (lambda () exp ...))) (define* (compile-files source-directory build-directory files #:key @@ -173,6 +177,7 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"." ;; Exit as soon as something goes wrong. (exit-on-exception + file (with-target host (lambda () (let ((relative (relative-file source-directory file))) |