gnu: linux-libre@4.14: Update to 4.14.198.
[jackhill/guix/guix.git] / build-aux / test-env.in
index 1657556..59ab58c 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, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
@@ -50,20 +50,18 @@ then
     # it or its parent directories.  See <http://bugs.gnu.org/17935>.
     NIX_STORE_DIR="`cd "@GUIX_TEST_ROOT@/store"; pwd -P`"
 
-    NIX_LOCALSTATE_DIR="@GUIX_TEST_ROOT@/var"
-    NIX_LOG_DIR="@GUIX_TEST_ROOT@/var/log/guix"
-    NIX_DB_DIR="@GUIX_TEST_ROOT@/db"
-    NIX_ROOT_FINDER="@abs_top_builddir@/nix/scripts/list-runtime-roots"
+    GUIX_LOG_DIRECTORY="@GUIX_TEST_ROOT@/var/log/guix"
+    GUIX_DATABASE_DIRECTORY="@GUIX_TEST_ROOT@/db"
 
     # Choose a PID-dependent name to allow for parallel builds.  Note
     # that the directory name must be chosen so that the socket's file
     # name is less than 108-char long (the size of `sun_path' in glibc).
     # Currently, in Nix builds, we're at ~106 chars...
-    NIX_STATE_DIR="@GUIX_TEST_ROOT@/var/$$"
+    GUIX_STATE_DIRECTORY="@GUIX_TEST_ROOT@/var/$$"
 
     # We can't exit when we reach the limit, because perhaps the test doesn't
     # actually rely on the daemon, but at least warn.
-    if test "`echo -n "$NIX_STATE_DIR/daemon-socket/socket" | wc -c`" -ge 108
+    if test "`echo -n "$GUIX_STATE_DIRECTORY/daemon-socket/socket" | wc -c`" -ge 108
     then
        echo "warning: exceeding socket file name limit; test may fail!" >&2
     fi
@@ -82,23 +80,23 @@ then
     fi
 
     # A place to store data of the substituter.
-    GUIX_BINARY_SUBSTITUTE_URL="file://$NIX_STATE_DIR/substituter-data"
-    rm -rf "$NIX_STATE_DIR/substituter-data"
-    mkdir -p "$NIX_STATE_DIR/substituter-data"
+    GUIX_BINARY_SUBSTITUTE_URL="file://$GUIX_STATE_DIRECTORY/substituter-data"
+    rm -rf "$GUIX_STATE_DIRECTORY/substituter-data"
+    mkdir -p "$GUIX_STATE_DIRECTORY/substituter-data"
 
     # For a number of tests, we want to allow unsigned narinfos, for
     # simplicity.
     GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES=yes
 
     # Place for the substituter's cache.
-    XDG_CACHE_HOME="$NIX_STATE_DIR/cache-$$"
+    XDG_CACHE_HOME="$GUIX_STATE_DIRECTORY/cache-$$"
 
     # For the (guix import snix) tests.
     NIXPKGS="@NIXPKGS@"
 
     export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR              \
-       NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \
-       NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL              \
+       GUIX_LOG_DIRECTORY GUIX_STATE_DIRECTORY GUIX_DATABASE_DIRECTORY \
+       GUIX_BINARY_SUBSTITUTE_URL                              \
         GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES                 \
         GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME NIXPKGS
 
@@ -109,7 +107,34 @@ then
        --substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL" &
 
     daemon_pid=$!
-    trap "kill $daemon_pid ; rm -rf $NIX_STATE_DIR" EXIT
+    trap "kill $daemon_pid ; rm -rf $GUIX_STATE_DIRECTORY" 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
+       # Make sure 'guix-daemon' is listening before invoking 'guix
+       # download'.
+       "@abs_top_builddir@/pre-inst-env" "@GUILE@" -c \
+            '(use-modules (guix))
+(let loop ((i 10))
+  (catch #t
+    (lambda () (open-connection))
+    (lambda (key . args)
+      (if (zero? i)
+          (apply throw key args)
+          (begin (usleep 500000) (loop (- i 1)))))))'
+
+       for file in "$bootstrap_directory"/guile-*
+       do
+           [ -f "$file" ] &&                                   \
+           "@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