![John Ericson](/assets/img/avatar_default.png)
To avoid dealing with an optional `drvPath` (because we might not know it yet) everywhere, make an `CreateDerivationAndRealiseGoal`. This goal just builds/substitutes the derivation file, and then kicks of a build for that obtained derivation; in other words it does the chaining of goals when the drv file is missing (as can already be the case) or computed (new case). This also means the `getDerivation` state can be removed from `DerivationGoal`, which makes the `BasicDerivation` / in memory case and `Derivation` / drv file file case closer together. The map type is factored out for clarity, and because we will soon hvae a second use for it (`Derivation` itself). Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
24 lines
729 B
Bash
24 lines
729 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)
|
|
|
|
out2=$(nix build "${drvDep}^out^out" --no-link)
|
|
|
|
test $out1 == $out2
|