X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/e7ca634912db59596f67dc805d7b3604c5312eeb..8f591cf430585db84e9b8dd186d1bf9a5e89155c:/build-aux/test-env.in diff --git a/build-aux/test-env.in b/build-aux/test-env.in index 4a422cf607..ca786437e9 100644 --- a/build-aux/test-env.in +++ b/build-aux/test-env.in @@ -1,7 +1,7 @@ #!/bin/sh # GNU Guix --- Functional package management for GNU -# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2021 Ludovic Courtès # # This file is part of GNU Guix. # @@ -50,20 +50,18 @@ then # it or its parent directories. See . 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 @@ -75,32 +73,29 @@ 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 "$GUIX_CONFIGURATION_DIRECTORY" - cp "@abs_top_srcdir@/tests/signing-key.sec" \ - "@abs_top_srcdir@/tests/signing-key.pub" \ - "$GUIX_CONFIGURATION_DIRECTORY" + cp "@abs_top_srcdir@/tests/keys/signing-key.sec" \ + "@abs_top_srcdir@/tests/keys/signing-key.pub" \ + "$GUIX_CONFIGURATION_DIRECTORY" chmod 400 "$GUIX_CONFIGURATION_DIRECTORY/signing-key.sec" 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-$$" - - # For the (guix import snix) tests. - NIXPKGS="@NIXPKGS@" + XDG_CACHE_HOME="$GUIX_STATE_DIRECTORY/cache-$$" 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 + GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME # Launch the daemon without chroot support because is may be # unavailable, for instance if we're not running as root. @@ -109,7 +104,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 +113,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