From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 8K7DH380yl/wSwAA0tVLHw (envelope-from ) for ; Fri, 04 Dec 2020 13:07:11 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id CN6UG380yl9UWAAAbx9fmQ (envelope-from ) for ; Fri, 04 Dec 2020 13:07:11 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 9B7C49403EE for ; Fri, 4 Dec 2020 13:07:10 +0000 (UTC) Received: from localhost ([::1]:43422 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1klAnl-0002GV-8O for larch@yhetil.org; Fri, 04 Dec 2020 08:07:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35094) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1klAne-0002Fx-MY for guix-patches@gnu.org; Fri, 04 Dec 2020 08:07:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:60051) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1klAne-0002VI-EK for guix-patches@gnu.org; Fri, 04 Dec 2020 08:07:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1klAne-0005OM-9u for guix-patches@gnu.org; Fri, 04 Dec 2020 08:07:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#45023] [PATCH] install: Discover local substitute servers. Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 04 Dec 2020 13:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 45023 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 45023@debbugs.gnu.org Received: via spool by 45023-submit@debbugs.gnu.org id=B45023.160708717720669 (code B ref 45023); Fri, 04 Dec 2020 13:07:02 +0000 Received: (at 45023) by debbugs.gnu.org; 4 Dec 2020 13:06:17 +0000 Received: from localhost ([127.0.0.1]:43364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1klAmq-0005NE-St for submit@debbugs.gnu.org; Fri, 04 Dec 2020 08:06:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44846) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1klAmm-0005Mo-19 for 45023@debbugs.gnu.org; Fri, 04 Dec 2020 08:06:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48223) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1klAmg-0002By-U4 for 45023@debbugs.gnu.org; Fri, 04 Dec 2020 08:06:02 -0500 Received: from [2a01:e0a:19b:d9a0:882e:cdc4:7b32:2c5c] (port=42126 helo=cervin) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1klAme-00084f-9m for 45023@debbugs.gnu.org; Fri, 04 Dec 2020 08:06:02 -0500 From: Mathieu Othacehe References: <20201203140155.166988-1-othacehe@gnu.org> Date: Fri, 04 Dec 2020 14:05:58 +0100 In-Reply-To: <20201203140155.166988-1-othacehe@gnu.org> (Mathieu Othacehe's message of "Thu, 3 Dec 2020 15:01:55 +0100") Message-ID: <87mtyt2021.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -2.79 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 9B7C49403EE X-Spam-Score: -2.79 X-Migadu-Scanner: ns3122888.ip-94-23-21.eu X-TUID: UummTgT5zj3U --=-=-= Content-Type: text/plain Hey, > This allows the installation image to use local substitute servers discovered > using Avahi. Here's a v2, that adds a new installer page proposing to enable or not local substitute servers discovery. Thanks, Mathieu --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=0001-install-Discover-local-substitute-servers.patch Content-Transfer-Encoding: quoted-printable >From 3e29ee9755ef0bb9917fc482528fdbdc864ae72e Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Fri, 4 Dec 2020 11:33:16 +0100 Subject: [PATCH v2] install: Discover local substitute servers. * gnu/installer/substitutes.scm: New file. * gnu/installer/newt/substitutes.scm: New file. * gnu/local.mk (INSTALLER_MODULES): Add them. * po/guix/POTFILES.in: Add gnu/installer/newt/substitutes.scm. * gnu/installer/proxy.scm (with-silent-shepherd): Move to ... * gnu/installer/utils.scm: ... here. * gnu/installer/record.scm ()[substitutes-page]: New field. * gnu/installer/newt.scm (substitutes-page): New procedure, (newt-installer): register it. * gnu/installer.scm (installer-steps): Add "substitutes-page" step. * gnu/system/install.scm (%installation-services): Add avahi-service-type a= nd enable substitute server discover in guix-service-type. []: Set it to %mdns-host-lookup-nss. --- gnu/installer.scm | 7 +++++ gnu/installer/newt.scm | 5 ++++ gnu/installer/newt/substitutes.scm | 40 +++++++++++++++++++++++++++++ gnu/installer/proxy.scm | 6 +---- gnu/installer/record.scm | 3 +++ gnu/installer/substitutes.scm | 41 ++++++++++++++++++++++++++++++ gnu/installer/utils.scm | 11 +++++++- gnu/local.mk | 2 ++ gnu/system/install.scm | 14 +++++++--- po/guix/POTFILES.in | 1 + 10 files changed, 121 insertions(+), 9 deletions(-) create mode 100644 gnu/installer/newt/substitutes.scm create mode 100644 gnu/installer/substitutes.scm diff --git a/gnu/installer.scm b/gnu/installer.scm index f401b242f8..25734cdcb7 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm @@ -266,6 +266,13 @@ selected keymap." (compute (lambda _ ((installer-network-page current-installer))))) =20 + ;; Ask whether to enable substitute servers discovery. + (installer-step + (id 'substitutes) + (description (G_ "Substitutes server discovery")) + (compute (lambda _ + ((installer-substitutes-page current-installer))))) + ;; Prompt for users (name, group and home directory). (installer-step (id 'user) diff --git a/gnu/installer/newt.scm b/gnu/installer/newt.scm index a1cbeca49a..4f7fc6f4dc 100644 --- a/gnu/installer/newt.scm +++ b/gnu/installer/newt.scm @@ -30,6 +30,7 @@ #:use-module (gnu installer newt page) #:use-module (gnu installer newt partition) #:use-module (gnu installer newt services) + #:use-module (gnu installer newt substitutes) #:use-module (gnu installer newt timezone) #:use-module (gnu installer newt user) #:use-module (gnu installer newt utils) @@ -101,6 +102,9 @@ problem. The backtrace is displayed below. Please repor= t it by email to \ (define (network-page) (run-network-page)) =20 +(define (substitutes-page) + (run-substitutes-page)) + (define (hostname-page) (run-hostname-page)) =20 @@ -130,6 +134,7 @@ problem. The backtrace is displayed below. Please repor= t it by email to \ (locale-page locale-page) (menu-page menu-page) (network-page network-page) + (substitutes-page substitutes-page) (timezone-page timezone-page) (hostname-page hostname-page) (user-page user-page) diff --git a/gnu/installer/newt/substitutes.scm b/gnu/installer/newt/substi= tutes.scm new file mode 100644 index 0000000000..8ffe7d3cb9 --- /dev/null +++ b/gnu/installer/newt/substitutes.scm @@ -0,0 +1,40 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2020 Mathieu Othacehe +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu installer newt substitutes) + #:use-module (gnu installer substitutes) + #:use-module (gnu installer utils) + #:use-module (guix i18n) + #:use-module (newt) + #:use-module (ice-9 match) + #:export (run-substitutes-page)) + +(define* (run-substitutes-page) + (match (current-clients) + (() + (case (choice-window + (G_ "Substitute servers discovery.") + (G_ "Enable") (G_ "Disable") + (G_ "If you have substitute servers on your local network, you= can \ +enable the following option. It might be faster than fetching from remote \ +servers. There are no security risks, only genuine substitutes will be use= d \ +but as servers may serve substitute over HTTP, unencrypted, anyone on the = LAN \ +can see what software you=E2=80=99re installing.")) + ((1) (enable-discover)) + ((2) (disable-discover)))) + (_ #f))) diff --git a/gnu/installer/proxy.scm b/gnu/installer/proxy.scm index befaf3ab0a..86c827294e 100644 --- a/gnu/installer/proxy.scm +++ b/gnu/installer/proxy.scm @@ -17,15 +17,11 @@ ;;; along with GNU Guix. If not, see . =20 (define-module (gnu installer proxy) + #:use-module (gnu installer utils) #:use-module (gnu services herd) #:export (set-http-proxy clear-http-proxy)) =20 -(define-syntax-rule (with-silent-shepherd exp ...) - (parameterize ((shepherd-message-port - (%make-void-port "w"))) - exp ...)) - (define (set-http-proxy proxy) (with-silent-shepherd (with-shepherd-action 'guix-daemon diff --git a/gnu/installer/record.scm b/gnu/installer/record.scm index 6ebd87f6a6..0b34318c45 100644 --- a/gnu/installer/record.scm +++ b/gnu/installer/record.scm @@ -33,6 +33,7 @@ installer-locale-page installer-menu-page installer-network-page + installer-substitutes-page installer-timezone-page installer-hostname-page installer-user-page @@ -73,6 +74,8 @@ (menu-page installer-menu-page) ;; procedure void -> void (network-page installer-network-page) + ;; procedure void -> void + (substitutes-page installer-substitutes-page) ;; procedure (zonetab) -> posix-timezone (timezone-page installer-timezone-page) ;; procedure void -> void diff --git a/gnu/installer/substitutes.scm b/gnu/installer/substitutes.scm new file mode 100644 index 0000000000..211a7ea5bf --- /dev/null +++ b/gnu/installer/substitutes.scm @@ -0,0 +1,41 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2020 Mathieu Othacehe +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu installer substitutes) + #:use-module (gnu installer utils) + #:use-module (gnu services herd) + #:export (enable-discover + disable-discover)) + +(define (enable-discover) + (with-silent-shepherd + (with-shepherd-action 'guix-daemon + ('discover "on") + result + result))) + +(define (disable-discover) + (with-silent-shepherd + (with-shepherd-action 'guix-daemon + ('discover "off") + result + result))) + +;; Local Variables: +;; eval: (put 'with-silent-shepherd 'scheme-indent-function 0) +;; End: diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm index a7fa66a199..bb97bc5560 100644 --- a/gnu/installer/utils.scm +++ b/gnu/installer/utils.scm @@ -18,6 +18,7 @@ ;;; along with GNU Guix. If not, see . =20 (define-module (gnu installer utils) + #:use-module (gnu services herd) #:use-module (guix utils) #:use-module (guix build utils) #:use-module (guix i18n) @@ -43,7 +44,9 @@ with-server-socket current-server-socket current-clients - send-to-clients)) + send-to-clients + + with-silent-shepherd)) =20 (define* (read-lines #:optional (port (current-input-port))) "Read lines from PORT and return them as a list." @@ -233,3 +236,9 @@ accepting socket." =20 (current-clients (reverse remainder)) exp) + +(define-syntax-rule (with-silent-shepherd exp ...) + "Evaluate EXP while discarding shepherd messages." + (parameterize ((shepherd-message-port + (%make-void-port "w"))) + exp ...)) diff --git a/gnu/local.mk b/gnu/local.mk index 28ad119846..cffd736742 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -716,6 +716,7 @@ INSTALLER_MODULES =3D \ %D%/installer/record.scm \ %D%/installer/services.scm \ %D%/installer/steps.scm \ + %D%/installer/substitutes.scm \ %D%/installer/tests.scm \ %D%/installer/timezone.scm \ %D%/installer/user.scm \ @@ -732,6 +733,7 @@ INSTALLER_MODULES =3D \ %D%/installer/newt/page.scm \ %D%/installer/newt/partition.scm \ %D%/installer/newt/services.scm \ + %D%/installer/newt/substitutes.scm \ %D%/installer/newt/timezone.scm \ %D%/installer/newt/user.scm \ %D%/installer/newt/utils.scm \ diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 7701297411..6765fc0a04 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -34,6 +34,7 @@ #:use-module ((guix store) #:select (%store-prefix)) #:use-module (gnu installer) #:use-module (gnu system locale) + #:use-module (gnu services avahi) #:use-module (gnu services dbus) #:use-module (gnu services networking) #:use-module (gnu services shepherd) @@ -335,11 +336,17 @@ Access documentation at any time by pressing Alt-F2.\= x1b[0m ;; The usual services. (syslog-service) =20 + ;; Use the Avahi daemon to discover substitute servers on the lo= cal + ;; network. It can be faster than fetching from remote servers. + (service avahi-service-type + (avahi-configuration (debug? #t))) + ;; The build daemon. Register the default substitute server key= (s) - ;; as trusted to allow the installation process to use substitut= es by - ;; default. + ;; as trusted to allow the installation process to use substitut= es + ;; by default. (service guix-service-type - (guix-configuration (authorize-key? #t))) + (guix-configuration + (authorize-key? #t))) =20 ;; Start udev so that useful device nodes are available. ;; Use device-mapper rules for cryptsetup & co; enable the CRDA = for @@ -435,6 +442,7 @@ Access documentation at any time by pressing Alt-F2.\x1= b[0m (host-name "gnu") (timezone "Europe/Paris") (locale "en_US.utf8") + (name-service-switch %mdns-host-lookup-nss) (bootloader (bootloader-configuration (bootloader grub-bootloader) (target "/dev/sda"))) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 5afb13ffdb..1aec3bef3c 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -25,6 +25,7 @@ gnu/installer/newt/network.scm gnu/installer/newt/page.scm gnu/installer/newt/partition.scm gnu/installer/newt/services.scm +gnu/installer/newt/substitutes.scm gnu/installer/newt/timezone.scm gnu/installer/newt/user.scm gnu/installer/newt/utils.scm --=20 2.29.2 --=-=-=--