diff --git a/lix/libstore/build/local-derivation-goal.cc b/lix/libstore/build/local-derivation-goal.cc index 078920a33..db3da2c0a 100644 --- a/lix/libstore/build/local-derivation-goal.cc +++ b/lix/libstore/build/local-derivation-goal.cc @@ -72,8 +72,8 @@ namespace nix { static kj::Promise> handleDiffHook( - uid_t uid, - uid_t gid, + std::optional uid, + std::optional gid, const Path & tryA, const Path & tryB, const Path & drvPath, @@ -1773,8 +1773,8 @@ try { movePath(actualPath, dst); TRY_AWAIT(handleDiffHook( - buildUser ? buildUser->getUID() : getuid(), - buildUser ? buildUser->getGID() : getgid(), + buildUser ? std::optional(buildUser->getUID()) : std::nullopt, + buildUser ? std::optional(buildUser->getGID()) : std::nullopt, finalDestPath, dst, worker.store.printStorePath(drvPath), diff --git a/tests/functional/check.sh b/tests/functional/check.sh index ae5671602..2d0969540 100644 --- a/tests/functional/check.sh +++ b/tests/functional/check.sh @@ -139,3 +139,11 @@ nix-store -q --references "$obtained" >/dev/null nix-build check.nix -A nondeterministic --no-out-link nix-build check.nix -A nondeterministic -A hashmismatch --no-out-link --check --keep-going || status=$? [ "$status" = "110" ] + + +# basic check that diff hooks are started at all +STDERR=$(expectStderr 104 nix-build check.nix -A nondeterministic \ + --diff-hook "$PWD/diff-hook.sh" \ + --run-diff-hook \ + --check 2>&1) +grep "diff-hook ran" <<<"$STDERR" diff --git a/tests/functional/diff-hook.sh b/tests/functional/diff-hook.sh new file mode 100755 index 000000000..45de706ac --- /dev/null +++ b/tests/functional/diff-hook.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +echo diff-hook ran