summaryrefslogtreecommitdiff
path: root/gnu/installer.scm
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2021-12-29 13:45:26 +0100
committerMathieu Othacehe <othacehe@gnu.org>2022-02-02 16:46:42 +0100
commit0d37a5df7e709cadca97cfbbf9c680dfe54b8302 (patch)
treef9b5877771fe70c92d7b7db327419dc2c6fd7c76 /gnu/installer.scm
parent8f585083277e64ea1e9a0848ef3c49f12327618c (diff)
installer: Add crash dump upload support.
Suggested-by: Josselin Poiret <dev@jpoiret.xyz> * gnu/installer/dump.scm: New file. * gnu/installer/newt/dump.scm: New file. * gnu/local.mk (INSTALLER_MODULES): Add them. * gnu/installer/record.scm (<installer>)[dump-page]: New field. * gnu/installer/steps.scm (%current-result): New variable. (run-installer-steps): Update it. * gnu/installer.scm (installer-program): Add tar and gip to the installer path. Add guile-webutils and gnutls to the Guile extensions. Generate and send the crash dump report. * gnu/installer/newt.scm (exit-error): Add a report argument. Display the report id. (dump-page): New procedure. (newt-installer): Update it.
Diffstat (limited to 'gnu/installer.scm')
-rw-r--r--gnu/installer.scm20
1 files changed, 16 insertions, 4 deletions
diff --git a/gnu/installer.scm b/gnu/installer.scm
index c8b7a66cfc8..d57b1d673a5 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -33,6 +33,7 @@
33 #:use-module (gnu packages admin) 33 #:use-module (gnu packages admin)
34 #:use-module (gnu packages base) 34 #:use-module (gnu packages base)
35 #:use-module (gnu packages bash) 35 #:use-module (gnu packages bash)
36 #:use-module (gnu packages compression)
36 #:use-module (gnu packages connman) 37 #:use-module (gnu packages connman)
37 #:use-module (gnu packages cryptsetup) 38 #:use-module (gnu packages cryptsetup)
38 #:use-module (gnu packages disk) 39 #:use-module (gnu packages disk)
@@ -336,6 +337,8 @@ selected keymap."
336 guix ;guix system init call 337 guix ;guix system init call
337 util-linux ;mkwap 338 util-linux ;mkwap
338 shadow 339 shadow
340 tar ;dump
341 gzip ;dump
339 coreutils))) 342 coreutils)))
340 (with-output-to-port (%make-void-port "w") 343 (with-output-to-port (%make-void-port "w")
341 (lambda () 344 (lambda ()
@@ -352,7 +355,8 @@ selected keymap."
352 ;; packages …), etc. modules. 355 ;; packages …), etc. modules.
353 (with-extensions (list guile-gcrypt guile-newt 356 (with-extensions (list guile-gcrypt guile-newt
354 guile-parted guile-bytestructures 357 guile-parted guile-bytestructures
355 guile-json-3 guile-git guix gnutls) 358 guile-json-3 guile-git guile-webutils
359 guix gnutls)
356 (with-imported-modules `(,@(source-module-closure 360 (with-imported-modules `(,@(source-module-closure
357 `(,@modules 361 `(,@modules
358 (gnu services herd) 362 (gnu services herd)
@@ -363,6 +367,7 @@ selected keymap."
363 (use-modules (gnu installer record) 367 (use-modules (gnu installer record)
364 (gnu installer keymap) 368 (gnu installer keymap)
365 (gnu installer steps) 369 (gnu installer steps)
370 (gnu installer dump)
366 (gnu installer final) 371 (gnu installer final)
367 (gnu installer hostname) 372 (gnu installer hostname)
368 (gnu installer locale) 373 (gnu installer locale)
@@ -432,15 +437,22 @@ selected keymap."
432 (lambda (key . args) 437 (lambda (key . args)
433 (syslog "crashing due to uncaught exception: ~s ~s~%" 438 (syslog "crashing due to uncaught exception: ~s ~s~%"
434 key args) 439 key args)
435 (let ((error-file "/tmp/last-installer-error")) 440 (let ((error-file "/tmp/last-installer-error")
441 (dump-archive "/tmp/dump.tgz"))
436 (call-with-output-file error-file 442 (call-with-output-file error-file
437 (lambda (port) 443 (lambda (port)
438 (display-backtrace (make-stack #t) port) 444 (display-backtrace (make-stack #t) port)
439 (print-exception port 445 (print-exception port
440 (stack-ref (make-stack #t) 1) 446 (stack-ref (make-stack #t) 1)
441 key args))) 447 key args)))
442 ((installer-exit-error current-installer) 448 (make-dump dump-archive
443 error-file key args)) 449 #:result %current-result
450 #:backtrace error-file)
451 (let ((report
452 ((installer-dump-page current-installer)
453 dump-archive)))
454 ((installer-exit-error current-installer)
455 error-file report key args)))
444 (primitive-exit 1))) 456 (primitive-exit 1)))
445 457
446 ((installer-exit current-installer))))))) 458 ((installer-exit current-installer)))))))