[bug#58273] installer: checks the availability of the mirror

Message ID 20221003135547.z4a6ocs7dijgb3nh@barak.in
State New
Headers
Series [bug#58273] installer: checks the availability of the mirror |

Commit Message

aleksandr barakin Oct. 3, 2022, 1:55 p.m. UTC
  checks the availability of the mirror bordeaux.guix.gnu.org.

this allows you to start the installation if the ci.guix.gnu.org
is unavailable.
---
 gnu/installer/newt/network.scm | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
  

Comments

unwox Oct. 5, 2022, 10:39 a.m. UTC | #1
+1 for this. It would make guix installation via graphical installer
possible in Russia since ci.guix.gnu.org is not accessible from there
without using proxy.
  
Julien Lepiller Oct. 14, 2022, 5:55 a.m. UTC | #2
Le Mon, 3 Oct 2022 16:55:49 +0300,
aleksandr barakin <alex@barak.in> a écrit :

> checks the availability of the mirror bordeaux.guix.gnu.org.
> 
> this allows you to start the installation if the ci.guix.gnu.org
> is unavailable.

This sounds useful, but I don't know how to test. The patch looks good
and fairly simple to me :)
  
Andrew Tropin Oct. 17, 2022, 5:33 a.m. UTC | #3
On 2022-10-03 16:55, aleksandr barakin wrote:

> checks the availability of the mirror bordeaux.guix.gnu.org.
>
> this allows you to start the installation if the ci.guix.gnu.org
> is unavailable.
> ---
>  gnu/installer/newt/network.scm | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
> index 0477a489be..b11a55cb1f 100644
> --- a/gnu/installer/newt/network.scm
> +++ b/gnu/installer/newt/network.scm
> @@ -122,10 +122,15 @@ FULL-VALUE tentatives, spaced by 1 second."
>            (lambda _ #f))
>          (alarm 3))
>        (lambda ()
> -        (false-if-exception
> -         (= (response-code
> -             (http-request "https://ci.guix.gnu.org"))
> -            200)))
> +        (or
> +          (false-if-exception
> +            (= (response-code
> +                 (http-request "https://ci.guix.gnu.org"))
> +               200))
> +          (false-if-exception
> +            (= (response-code
> +                 (http-request "https://bordeaux.guix.gnu.org"))
> +               200))))
>        (lambda ()
>          (alarm 0))))
>  
> -- 
> 2.30.2

Ideally we should not hardcode exact mirror urls, because the image can
be built with different substitute urls.  Another possible soultion is
to add an ability to skip the check via TUI, as
/tmp/installer-assume-online probably not well-known and this step can
stop people without access to ci.guix.gnu.org from using Guix System,
seems especially true for newcommers.

Anyway, I find this patch useful and good enough to solve the problem at
least for some people (who don't have access to ci, but have it to
bordeaux), adjusted the wording and commit message, applied.
  
Mathieu Othacehe Oct. 17, 2022, 7:39 a.m. UTC | #4
Hello Andrew,

>> +          (false-if-exception
>> +            (= (response-code
>> +                 (http-request "https://ci.guix.gnu.org"))
>> +               200))
>> +          (false-if-exception
>> +            (= (response-code
>> +                 (http-request "https://bordeaux.guix.gnu.org"))
>> +               200))))

Thanks for taking care of this patch. I think the following part could
be factorized:

(define (url-alive? url)
  (false-if-exception
   (= (response-code
       (http-request url))
      200)))

also, the indentation is wrong. Could you please fix it?

Thanks,

Mathieu
  
Andrew Tropin Oct. 17, 2022, 12:51 p.m. UTC | #5
On 2022-10-17 09:39, Mathieu Othacehe wrote:

> Hello Andrew,
>
>>> +          (false-if-exception
>>> +            (= (response-code
>>> +                 (http-request "https://ci.guix.gnu.org"))
>>> +               200))
>>> +          (false-if-exception
>>> +            (= (response-code
>>> +                 (http-request "https://bordeaux.guix.gnu.org"))
>>> +               200))))
>
> Thanks for taking care of this patch. I think the following part could
> be factorized:
>
> (define (url-alive? url)
>   (false-if-exception
>    (= (response-code
>        (http-request url))
>       200)))
>
> also, the indentation is wrong. Could you please fix it?

Thank you for the idea, pushed the change.
  

Patch

diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
index 0477a489be..b11a55cb1f 100644
--- a/gnu/installer/newt/network.scm
+++ b/gnu/installer/newt/network.scm
@@ -122,10 +122,15 @@  FULL-VALUE tentatives, spaced by 1 second."
           (lambda _ #f))
         (alarm 3))
       (lambda ()
-        (false-if-exception
-         (= (response-code
-             (http-request "https://ci.guix.gnu.org"))
-            200)))
+        (or
+          (false-if-exception
+            (= (response-code
+                 (http-request "https://ci.guix.gnu.org"))
+               200))
+          (false-if-exception
+            (= (response-code
+                 (http-request "https://bordeaux.guix.gnu.org"))
+               200))))
       (lambda ()
         (alarm 0))))