installer: Skip network selection dialogs when there is no choice.

Previously, for a machine that only has wired networking, and only one
such network, we'd have to go through two selection boxes.  Now we just
skip both.

* gnu/installer/newt/ethernet.scm (run-ethernet-page): When
'ethernet-services' returns one element, return it directly without
opening a listbox selection.
* gnu/installer/newt/network.scm (run-technology-page): Likewise.
This commit is contained in:
Ludovic Courtès 2019-05-06 22:23:42 +02:00
parent d1e5f758e1
commit 46c102ca5e
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 59 additions and 47 deletions

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -23,6 +24,7 @@
#:use-module (gnu installer newt page) #:use-module (gnu installer newt page)
#:use-module (guix i18n) #:use-module (guix i18n)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (newt) #:use-module (newt)
@ -58,15 +60,18 @@ connection is pending."
service)) service))
(define (run-ethernet-page) (define (run-ethernet-page)
(let ((services (ethernet-services))) (match (ethernet-services)
(if (null? services) (()
(begin
(run-error-page (run-error-page
(G_ "No ethernet service available, please try again.") (G_ "No ethernet service available, please try again.")
(G_ "No service")) (G_ "No service"))
(raise (raise
(condition (condition
(&installer-step-abort)))) (&installer-step-abort))))
((service)
;; Only one service is available so return it directly.
service)
((services ...)
(run-listbox-selection-page (run-listbox-selection-page
#:info-text (G_ "Please select an ethernet network.") #:info-text (G_ "Please select an ethernet network.")
#:title (G_ "Ethernet connection") #:title (G_ "Ethernet connection")

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -28,6 +29,7 @@
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (ice-9 match)
#:use-module (newt) #:use-module (newt)
#:export (run-network-page)) #:export (run-network-page))
@ -53,8 +55,8 @@ Internet and return the selected technology. For now, only technologies with
(string=? type "wifi")))) (string=? type "wifi"))))
(connman-technologies))) (connman-technologies)))
(let ((items (technology-items))) (match (technology-items)
(if (null? items) (()
(case (choice-window (case (choice-window
(G_ "Internet access") (G_ "Internet access")
(G_ "Continue") (G_ "Continue")
@ -66,7 +68,12 @@ network device were found. Do you want to continue anyway?"))
(&installer-step-break)))) (&installer-step-break))))
((2) (raise ((2) (raise
(condition (condition
(&installer-step-abort))))) (&installer-step-abort))))))
((technology)
;; Since there's only one technology available, skip the selection
;; screen.
technology)
((items ...)
(run-listbox-selection-page (run-listbox-selection-page
#:info-text (G_ "The install process requires Internet access.\ #:info-text (G_ "The install process requires Internet access.\
Please select a network device.") Please select a network device.")