From 78d8f1c69f39103f23e72f438f23a708d5388a77 Mon Sep 17 00:00:00 2001 From: Maxime Devos Date: Sat, 28 Aug 2021 14:42:32 +0200 Subject: [PATCH] build-self: Try printing nicer error messages. This prevents daunting backtraces like in by only printing the relevant information: that 'subversion' fails to build. * build-aux/self.scm (build-program): Wrap the 'run-with-store' in a 'with-error-handling'. * guix/ui.scm (guard*): Don't explode on old Guiles. --- build-aux/build-self.scm | 23 +++++++++++++++-------- guix/ui.scm | 16 +++++++++++----- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index 02822a2ee8..25a7b1e618 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès +;;; Copyright © 2021 Maxime Devos ;;; ;;; This file is part of GNU Guix. ;;; @@ -280,6 +281,7 @@ interface (FFI) of Guile.") ,@(source-module-closure `((guix store) (guix self) + (guix ui) (guix derivations) (gnu packages bootstrap)) (list source) @@ -316,6 +318,7 @@ interface (FFI) of Guile.") (read-disable 'positions)) (use-modules (guix store) + (guix ui) (guix self) (guix derivations) (srfi srfi-1)) @@ -347,14 +350,18 @@ interface (FFI) of Guile.") (parameterize ((current-warning-port (%make-void-port "w")) (current-build-output-port sock)) - (run-with-store store - (guix-derivation source version - #$guile-version - #:channel-metadata - '#$channel-metadata - #:pull-version - #$pull-version) - #:system system)) + ;; Use 'with-error-handling' to prevent scary + ;; backtraced like + ;; . + (with-error-handling + (run-with-store store + (guix-derivation source version + #$guile-version + #:channel-metadata + '#$channel-metadata + #:pull-version + #$pull-version) + #:system system))) derivation-file-name)))))) #:module-path (list source)))) diff --git a/guix/ui.scm b/guix/ui.scm index 238952723e..0afe75bbad 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2020 Arun Isaac ;;; Copyright © 2020 Maxim Cournoyer ;;; Copyright © 2018 Steve Sprang +;;; Copyright © 2022 Maxime Devos ;;; ;;; This file is part of GNU Guix. ;;; @@ -677,11 +678,16 @@ or remove one of them from the profile.") (define-syntax-rule (guard* (var clauses ...) exp ...) "This variant of SRFI-34 'guard' does not unwind the stack before evaluating the tests and bodies of CLAUSES." - (with-exception-handler - (lambda (var) - (cond clauses ... (else (raise var)))) - (lambda () exp ...) - #:unwind? #f)) + (apply with-exception-handler + (lambda (var) + (cond clauses ... (else (raise var)))) + (lambda () exp ...) + ;; Some old Guiles used by old versions of Guix don't support + ;; #:unwind. Avoid breaking "guix pull" from an old Guix to + ;; a new Guix, see . + (if (>= (string->number (major-version)) 3) + '(#:unwind? #f) + '()))) (define (call-with-error-handling thunk) "Call THUNK within a user-friendly error handler." base-commit: 29091731a0c6cb649cdfd72297575fe2bb2a9591 prerequisite-patch-id: e2faf5cdf72f293aca0aff5c89cc1f0dd874d29c -- 2.30.2