diff --git a/bin/nix-build-and-cache b/bin/nix-build-and-cache index 5b22b854..6bd62664 100755 --- a/bin/nix-build-and-cache +++ b/bin/nix-build-and-cache @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash set -euo pipefail @@ -17,15 +17,24 @@ if [ ! -z ${ATTIC_TOKEN+x} ]; then "${ATTIC_ENDPOINT:-https://attic.conduit.rs/conduit}" \ "$ATTIC_TOKEN" - readarray -t outputs < <(nix path-info "$@") readarray -t derivations < <(nix path-info "$@" --derivation) + for derivation in "${derivations[@]}"; do + cache+=( + "$(nix-store --query --requisites --include-outputs "$derivation")" + ) + done + + # Upload them to Attic + # + # Use `xargs` and a here-string because something would probably explode if + # several thousand arguments got passed to a command at once. Hopefully no + # store paths include a newline in them. + ( + IFS=$'\n' + nix shell --inputs-from . attic -c xargs \ + attic push conduit <<< "${cache[*]}" + ) - # Push the target installable and its build dependencies - nix run --inputs-from . attic -- \ - push \ - conduit \ - "${outputs[@]}" \ - "${derivations[@]}" else echo "\$ATTIC_TOKEN is unset, skipping uploading to the binary cache" fi diff --git a/nix/pkgs/default/default.nix b/nix/pkgs/default/default.nix index 2595346f..4577fea9 100644 --- a/nix/pkgs/default/default.nix +++ b/nix/pkgs/default/default.nix @@ -36,8 +36,7 @@ let }); buildPackageEnv = { - # Temporarily disabled, see https://gitlab.com/famedly/conduit/-/merge_requests/662#note_1892753424 - # CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev; + CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev; } // buildDepsOnlyEnv; commonAttrs = {