gnu: linux-libre@4.14: Update to 4.14.198.
[jackhill/guix/guix.git] / build-aux / test-env.in
index 4a422cf..59ab58c 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 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,7 @@ 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
@@ -118,8 +116,21 @@ then
     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