guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/11: compile: Report the name of the file that cannot be compiled.


From: guix-commits
Subject: 01/11: compile: Report the name of the file that cannot be compiled.
Date: Mon, 15 Jul 2019 04:18:16 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 38302bd9392cc9518b04e2726cf6a38ee75922cc
Author: Ludovic Court├Ęs <address@hidden>
Date:   Sun Jul 14 17:07:09 2019 +0200

    compile: Report the name of the file that cannot be compiled.
    
    Fixes <https://bugs.gnu.org/36640>.
    Reported by Robert Vollmert <address@hidden>.
    
    * 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'.
---
 guix/build/compile.scm | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/guix/build/compile.scm b/guix/build/compile.scm
index 29865f2..c127456 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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]