mirror of
https://github.com/NixOS/nix
synced 2025-06-24 22:11:15 +02:00
This method does *not* create a new type of goal. We instead just make
`DerivationGoal` more sophisticated, which is much easier to do now that
`DerivationBuildingGoal` has been split from it (and so many fields are
gone, or or local variables instead).
This avoids the need for a secondarily trampoline goal that interacted
poorly with `addWantedOutputs`. That, I hope, will mean the bugs from
before do not reappear.
There may in fact be a reason to introduce such a trampoline in the
future, but it would only happen in conjunction with getting rid of
`addWantedOutputs`.
Restores the functionality (and tests) that was reverted in
f4f28cdd0e
.
26 lines
798 B
Bash
26 lines
798 B
Bash
#!/usr/bin/env bash
|
|
|
|
source common.sh
|
|
|
|
# In the corresponding nix file, we have two derivations: the first, named `hello`,
|
|
# is a normal recursive derivation, while the second, named dependent, has the
|
|
# new outputHashMode "text". Note that in "dependent", we don't refer to the
|
|
# build output of `hello`, but only to the path of the drv file. For this reason,
|
|
# we only need to:
|
|
#
|
|
# - instantiate `hello`
|
|
# - build `producingDrv`
|
|
# - check that the path of the output coincides with that of the original derivation
|
|
|
|
out1=$(nix build -f ./text-hashed-output.nix hello --no-link)
|
|
|
|
clearStore
|
|
|
|
drvDep=$(nix-instantiate ./text-hashed-output.nix -A producingDrv)
|
|
|
|
# Store layer needs bugfix
|
|
requireDaemonNewerThan "2.30pre20250515"
|
|
|
|
out2=$(nix build "${drvDep}^out^out" --no-link)
|
|
|
|
test $out1 == $out2
|