Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / build-aux / test-env.in
index c3f60f7..4a422cf 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
 # stdout.
 unset CDPATH
 
+case "$1" in
+    --quiet-stderr)
+       # Silence the daemon's output, which is often useless, as well as that
+       # of Bash (such as "Terminated" messages when 'guix-daemon' is
+       # killed.)
+       exec 2> /dev/null
+       shift
+       ;;
+esac
+
 if [ -x "@abs_top_builddir@/guix-daemon" ]
 then
-    # Silence the daemon's output, which is often useless, as well as that of
-    # Bash (such as "Terminated" messages when 'guix-daemon' is killed.)
-    exec 2> /dev/null
-
     NIX_STORE_DIR="@GUIX_TEST_ROOT@/store"
 
     # Do that because store.scm calls `canonicalize-path' on it.
@@ -63,16 +69,16 @@ then
     fi
 
     # The configuration directory, for import/export signing keys.
-    NIX_CONF_DIR="@GUIX_TEST_ROOT@/etc"
-    if [ ! -d "$NIX_CONF_DIR" ]
+    GUIX_CONFIGURATION_DIRECTORY="@GUIX_TEST_ROOT@/etc"
+    if [ ! -d "$GUIX_CONFIGURATION_DIRECTORY" ]
     then
        # Copy the keys so that the secret key has the right permissions (the
        # daemon errors out when this is not the case.)
-       mkdir -p "$NIX_CONF_DIR"
+       mkdir -p "$GUIX_CONFIGURATION_DIRECTORY"
        cp "@abs_top_srcdir@/tests/signing-key.sec"     \
            "@abs_top_srcdir@/tests/signing-key.pub"    \
-           "$NIX_CONF_DIR"
-       chmod 400 "$NIX_CONF_DIR/signing-key.sec"
+           "$GUIX_CONFIGURATION_DIRECTORY"
+       chmod 400 "$GUIX_CONFIGURATION_DIRECTORY/signing-key.sec"
     fi
 
     # A place to store data of the substituter.
@@ -94,7 +100,7 @@ then
        NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \
        NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL              \
         GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES                 \
-        NIX_CONF_DIR XDG_CACHE_HOME NIXPKGS
+        GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME NIXPKGS
 
     # Launch the daemon without chroot support because is may be
     # unavailable, for instance if we're not running as root.
@@ -104,6 +110,20 @@ then
 
     daemon_pid=$!
     trap "kill $daemon_pid ; rm -rf $NIX_STATE_DIR" EXIT
+
+    # The test suite expects the 'guile-bootstrap' package to be available.
+    # Normally the Guile bootstrap tarball is downloaded by a fixed-output
+    # derivation but when network access is missing we allow users to drop
+    # the tarball in 'gnu/packages/bootstrap/SYSTEM' and "intern" it here.
+    bootstrap_directory="@abs_top_builddir@/gnu/packages/bootstrap/@guix_system@"
+    if [ -d "$bootstrap_directory" ]
+    then
+       for file in "$bootstrap_directory"/guile-*
+       do
+           "@abs_top_builddir@/pre-inst-env"                   \
+               guix download "file://$file" > /dev/null
+       done
+    fi
 fi
 
 # Avoid issues that could stem from l10n, such as language/encoding