forked from lix-project/lix
add explanation and test
This commit is contained in:
parent
b13fd4c58e
commit
bd8571a5c3
|
@ -83,6 +83,17 @@ struct CmdWhyDepends : SourceExprCommand
|
||||||
{
|
{
|
||||||
auto package = parseInstallable(store, _package);
|
auto package = parseInstallable(store, _package);
|
||||||
auto packagePath = Installable::toStorePath(getEvalStore(), store, Realise::Outputs, operateOn, package);
|
auto packagePath = Installable::toStorePath(getEvalStore(), store, Realise::Outputs, operateOn, package);
|
||||||
|
|
||||||
|
/* We don't need to build `dependency`. We try to get the store
|
||||||
|
* path if it's already known, and if not, then it's not a dependency.
|
||||||
|
*
|
||||||
|
* Why? If `package` does depends on `dependency`, then getting the
|
||||||
|
* store path of `package` above necessitated having the store path
|
||||||
|
* of `dependency`. The contrapositive is, if the store path of
|
||||||
|
* `dependency` is not already known at this point (i.e. it's a CA
|
||||||
|
* derivation which hasn't been built), then `package` did not need it
|
||||||
|
* to build.
|
||||||
|
*/
|
||||||
auto dependency = parseInstallable(store, _dependency);
|
auto dependency = parseInstallable(store, _dependency);
|
||||||
auto derivedDependency = dependency->toDerivedPath();
|
auto derivedDependency = dependency->toDerivedPath();
|
||||||
auto optDependencyPath = std::visit(overloaded {
|
auto optDependencyPath = std::visit(overloaded {
|
||||||
|
|
5
tests/ca/why-depends.sh
Normal file
5
tests/ca/why-depends.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
source common.sh
|
||||||
|
|
||||||
|
export NIX_TESTS_CA_BY_DEFAULT=1
|
||||||
|
|
||||||
|
cd .. && source why-depends.sh
|
Loading…
Reference in a new issue