daml/ci/dev-env-install.sh
Moritz Kiefer 2c1d4cb805
Fix nix installation (#6400)
Nix now requires -L, I’ve gone ahead and just normalized everything to
use -sfL which we were already using in one place.

changelog_begin
changelog_end
2020-06-18 10:34:08 +02:00

57 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# shellcheck disable=SC2174
# Installs nix on a fresh machine
set -euo pipefail
## Functions ##
step() {
echo "step: $*" >&2
}
## Main ##
cd "$(dirname "$0")/.."
if [[ ! -e /nix ]]; then
step "Installing Nix"
sudo mkdir -m 0755 /nix
sudo chown "$(id -u):$(id -g)" /nix
curl -sSfL https://nixos.org/releases/nix/nix-2.3.3/install | bash
fi
# shellcheck source=../dev-env/lib/ensure-nix
source dev-env/lib/ensure-nix
export NIX_CONF_DIR=$PWD/dev-env/etc
step "Building dev-env dependencies"
# Nix cache downloads can sometimes be flaky and end with "unexpected end-of-file" so we
# repeat this a few times. There does not seem to be an option that we can pass to nix
# to make it retry itself. See https://github.com/NixOS/nix/issues/2794 for the issue requesting
# this feature.
NIX_FAILED=0
for i in `seq 10`; do
NIX_FAILED=0
nix-build nix -A tools -A ci-cached 2>&1 | tee nix_log || NIX_FAILED=1
# It should be in the last line but lets use the last 3 and wildcards
# to be robust against slight changes.
if [[ $NIX_FAILED -ne 0 ]] &&
([[ $(tail -n 3 nix_log) == *"unexpected end-of-file"* ]] ||
[[ $(tail -n 3 nix_log) == *"decompressing xz file"* ]]); then
echo "Restarting nix-build due to failed cache download"
continue
fi
break
done
if [[ $NIX_FAILED -ne 0 ]]; then
exit 1
fi