[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/02: installer: Skip the backtrace page on user abort.
From: |
guix-commits |
Subject: |
02/02: installer: Skip the backtrace page on user abort. |
Date: |
Wed, 2 Nov 2022 10:53:21 -0400 (EDT) |
mothacehe pushed a commit to branch master
in repository guix.
commit 62a3756bd90c922c701e899a6c01c556d8e3c75a
Author: Mathieu Othacehe <othacehe@gnu.org>
AuthorDate: Mon Oct 31 16:43:09 2022 +0100
installer: Skip the backtrace page on user abort.
When the user aborts the installation because a core dump is discovered or
the
installation command failed, displaying the abort backtrace doesn't make
much
sense. Hide it when the abort condition is &user-abort-error and skip
directly
to the dump page.
* gnu/installer/steps.scm (&user-abort-error): New variable.
(user-abort-error?): New procedure.
* gnu/installer/newt/final.scm (run-install-failed-page): Raise a
user-abort-error.
* gnu/installer/newt/welcome.scm (run-welcome-page): Ditto.
* gnu/installer.scm (installer-program): Hide the backtrace page and
directly
propose to dump the report when the a &user-abort-error is raised.
---
gnu/installer.scm | 18 ++++++++++++++----
gnu/installer/newt/final.scm | 5 ++---
gnu/installer/newt/welcome.scm | 3 +--
gnu/installer/steps.scm | 8 +++++++-
4 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 52c595b5b7..5cd1af8edf 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -453,11 +453,21 @@ selected keymap."
key args)
(define dump-dir
(prepare-dump key args #:result %current-result))
+
+ (define user-abort?
+ (match args
+ (((? user-abort-error? obj)) #t)
+ (_ #f)))
+
(define action
- ((installer-exit-error current-installer)
- (get-string-all
- (open-input-file
- (string-append dump-dir "/installer-backtrace")))))
+ (if user-abort?
+ 'dump
+ ((installer-exit-error current-installer)
+ (get-string-all
+ (open-input-file
+ (string-append dump-dir
+ "/installer-backtrace"))))))
+
(match action
('dump
(let* ((dump-files
diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm
index 6e55be5067..9f950a0551 100644
--- a/gnu/installer/newt/final.scm
+++ b/gnu/installer/newt/final.scm
@@ -92,9 +92,8 @@ a specific step, or restart the installer."))
;; Keep going, the installer will be restarted later on.
#t)
(3 (raise
- (condition
- (&message
- (message "User abort.")))))))
+ (condition
+ (&user-abort-error))))))
(_
(send-to-clients '(installation-failure))
#t)))
diff --git a/gnu/installer/newt/welcome.scm b/gnu/installer/newt/welcome.scm
index 5d47591d67..326996b005 100644
--- a/gnu/installer/newt/welcome.scm
+++ b/gnu/installer/newt/welcome.scm
@@ -145,8 +145,7 @@ first?"))
(1 #t)
(2 (raise
(condition
- (&message
- (message "User abort.")))))))
+ (&user-abort-error))))))
(run-menu-page
(G_ "GNU Guix install")
(G_ "Welcome to GNU Guix system installer!
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index 8b25ae97c8..0c505e40e4 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -28,7 +28,10 @@
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (rnrs io ports)
- #:export (<installer-step>
+ #:export (&user-abort-error
+ user-abort-error?
+
+ <installer-step>
installer-step
make-installer-step
installer-step?
@@ -50,6 +53,9 @@
%current-result))
+(define-condition-type &user-abort-error &error
+ user-abort-error?)
+
;; Hash table storing the step results. Use it only for logging and debug
;; purposes.
(define %current-result (make-hash-table))