From 9a67a327790cbc800b0ce3dc9d1db835d60849bc Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Sat, 30 Jan 2021 10:46:59 +0100 Subject: [PATCH] fix build-to-cachix - Don't fail on `kill $cachixPid` when cachix has already exited. This fixes some failing CI builds. - Stop the cachix background worker before the final `cachix push`. This can avoid unneeded reuploads. Use the coreutils version of tail on cirrus which supports argument --pid. --- .cirrus.yml | 2 +- ci/build-to-cachix.sh | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 3ac3f61..5f82269 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -39,4 +39,4 @@ task: build_script: - echo "sandbox = true" >> /etc/nix/nix.conf - export NIX_PATH="nixpkgs=$(nix eval --raw -f pkgs/nixpkgs-pinned.nix $nixpkgs)" - - nix run -f '' bash cachix -c ./ci/build.sh + - nix run -f '' bash coreutils cachix -c ./ci/build.sh diff --git a/ci/build-to-cachix.sh b/ci/build-to-cachix.sh index ab99535..73a8260 100755 --- a/ci/build-to-cachix.sh +++ b/ci/build-to-cachix.sh @@ -13,11 +13,17 @@ trap 'echo Error at line $LINENO' ERR atExit() { rm -rf $tmpDir - if [[ -v cachixPid ]]; then kill $cachixPid; fi + if [[ -v cachixPid ]]; then stopCachix; fi } tmpDir=$(mktemp -d -p /tmp) trap atExit EXIT +stopCachix() { + kill $cachixPid 2>/dev/null || true + # Wait for cachix to finish + tail --pid=$cachixPid -f /dev/null +} + ## Instantiate time nix-instantiate "$@" --add-root $tmpDir/drv --indirect > /dev/null @@ -44,6 +50,7 @@ fi nix-build --out-link $tmpDir/result $tmpDir/drv >/dev/null if [[ $CACHIX_SIGNING_KEY ]]; then + stopCachix cachix push $cachixCache $outPath fi