diff options
| author | Mathieu Othacehe <othacehe@gnu.org> | 2021-12-29 13:45:26 +0100 |
|---|---|---|
| committer | Mathieu Othacehe <othacehe@gnu.org> | 2022-02-02 16:46:42 +0100 |
| commit | 0d37a5df7e709cadca97cfbbf9c680dfe54b8302 (patch) | |
| tree | f9b5877771fe70c92d7b7db327419dc2c6fd7c76 /gnu/installer.scm | |
| parent | 8f585083277e64ea1e9a0848ef3c49f12327618c (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.scm | 20 |
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))))))) |
