guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: build: Default to "https://mirror.hydra.gnu.org/" for substitutes


From: Ludovic Courtès
Subject: 02/02: build: Default to "https://mirror.hydra.gnu.org/" for substitutes.
Date: Wed, 16 Mar 2016 10:28:40 +0000

civodul pushed a commit to branch master
in repository guix.

commit df061d079b50111280aa7209b3b3c4cf21fde218
Author: Ludovic Courtès <address@hidden>
Date:   Wed Mar 16 10:35:24 2016 +0100

    build: Default to "https://mirror.hydra.gnu.org/"; for substitutes.
    
    * config-daemon.ac: Check for (gnutls) and define 'GUIX_SUBSTITUTE_URLS'.
    * nix/nix-daemon/guix-daemon.cc (main): Use GUIX_SUBSTITUTE_URLS.
    * guix/store.scm (%default-substitute-urls): Use 'https' when (gnutls)
    is available.
    * doc/guix.texi (Binary Installation): Mention mirrors
    (Invoking guix-daemon): Mention mirror.hydra.gnu.org.
    (Substitutes): Mention mirrors.
    (Invoking guix archive): Show https URLs.
---
 config-daemon.ac              |   14 ++++++++++++++
 doc/guix.texi                 |   16 +++++++++-------
 guix/store.scm                |    8 ++++++--
 nix/nix-daemon/guix-daemon.cc |    4 ++--
 4 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/config-daemon.ac b/config-daemon.ac
index c74ec94..63174d6 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -110,6 +110,20 @@ if test "x$guix_build_daemon" = "xyes"; then
   dnl Check for <linux/fs.h> (for immutable file support).
   AC_CHECK_HEADERS([linux/fs.h])
 
+  dnl Determine the appropriate default list of substitute URLs.
+  GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)])
+  if test "x$have_gnutls" = "xyes"; then
+    guix_substitute_urls="https://mirror.hydra.gnu.org https://hydra.gnu.org";
+  else
+    AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the 
clear])
+    guix_substitute_urls="http://mirror.hydra.gnu.org http://hydra.gnu.org";
+  fi
+  AC_MSG_CHECKING([for default substitute URLs])
+  AC_MSG_RESULT([$guix_substitute_urls])
+
+  AC_DEFINE_UNQUOTED([GUIX_SUBSTITUTE_URLS], ["$guix_substitute_urls"],
+    [Default list of substitute URLs used by 'guix-daemon'.])
+
   dnl Check whether the 'offload' build hook can be built (uses
   dnl 'restore-file-set', which requires unbuffered custom binary input
   dnl ports from Guile >= 2.0.10.)
diff --git a/doc/guix.texi b/doc/guix.texi
index 438189f..05ce785 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -448,8 +448,8 @@ Directories,,, texinfo, GNU Texinfo}, for more details on 
changing the
 Info search path.)
 
 @item
-To use substitutes from @code{hydra.gnu.org} (@pxref{Substitutes}),
-authorize them:
+To use substitutes from @code{hydra.gnu.org} or one of its mirrors
+(@pxref{Substitutes}), authorize them:
 
 @example
 # guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub
@@ -912,8 +912,9 @@ remote procedure call (@pxref{The Store}).
 @item address@hidden
 @anchor{daemon-substitute-urls}
 Consider @var{urls} the default whitespace-separated list of substitute
-source URLs.  When this option is omitted, @indicateurl{http://hydra.gnu.org}
-is used.
+source URLs.  When this option is omitted,
address@hidden://mirror.hydra.gnu.org https://hydra.gnu.org} is used
+(@code{mirror.hydra.gnu.org} is a mirror of @code{hydra.gnu.org}).
 
 This means that substitutes may be downloaded from @var{urls}, as long
 as they are signed by a trusted signature (@pxref{Substitutes}).
@@ -1730,7 +1731,8 @@ your system has unpatched security vulnerabilities.
 
 @cindex security
 @cindex digital signatures
-To allow Guix to download substitutes from @code{hydra.gnu.org}, you
+To allow Guix to download substitutes from @code{hydra.gnu.org} or a
+mirror thereof, you
 must add its public key to the access control list (ACL) of archive
 imports, using the @command{guix archive} command (@pxref{Invoking guix
 archive}).  Doing so implies that you trust @code{hydra.gnu.org} to not
@@ -2199,7 +2201,7 @@ served by @code{hydra.gnu.org} to @file{/tmp/emacs}:
 
 @example
 $ wget -O - \
-  http://hydra.gnu.org/nar/@dots{}-emacs-24.5 \
+  https://hydra.gnu.org/nar/@dots{}-emacs-24.5 \
   | bunzip2 | guix archive -x /tmp/emacs
 @end example
 
@@ -4294,7 +4296,7 @@ but you are actually on an @code{x86_64} machine:
 
 @example
 $ guix build --log-file gdb -s mips64el-linux 
-http://hydra.gnu.org/log/@dots{}-gdb-7.10
+https://hydra.gnu.org/log/@dots{}-gdb-7.10
 @end example
 
 You can freely access a huge library of build logs!
diff --git a/guix/store.scm b/guix/store.scm
index 0124873..ae52628 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -504,8 +504,12 @@ encoding conversion errors."
                               (status   k))))))))
 
 (define %default-substitute-urls
-  ;; Default list of substituters.
-  '("http://hydra.gnu.org";))
+  ;; Default list of substituters.  This is *not* the list used by
+  ;; 'guix-daemon', and few clients use it ('guix build --log-file' uses it.)
+  (map (if (false-if-exception (resolve-interface '(gnutls)))
+           (cut string-append "https://"; <>)
+           (cut string-append "http://"; <>))
+       '("hydra.gnu.org")))
 
 (define* (set-build-options server
                             #:key keep-failed? keep-going? fallback?
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index 20a0732..d5d33a5 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -1,5 +1,5 @@
 /* GNU Guix --- Functional package management for GNU
-   Copyright (C) 2012, 2013, 2014, 2015 Ludovic Courtès <address@hidden>
+   Copyright (C) 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <address@hidden>
 
    This file is part of GNU Guix.
 
@@ -327,7 +327,7 @@ main (int argc, char *argv[])
       settings.set ("build-use-substitutes", "true");
 
       /* Use our substitute server by default.  */
-      settings.set ("substitute-urls", "http://hydra.gnu.org";);
+      settings.set ("substitute-urls", GUIX_SUBSTITUTE_URLS);
 
 #ifdef HAVE_DAEMON_OFFLOAD_HOOK
       /* Use our build hook for distributed builds by default.  */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]