Skip to content

Commit

Permalink
add explanation and test
Browse files Browse the repository at this point in the history
  • Loading branch information
Radvendii committed Nov 23, 2022
1 parent b13fd4c commit bd8571a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/nix/why-depends.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,17 @@ struct CmdWhyDepends : SourceExprCommand
{
auto package = parseInstallable(store, _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 derivedDependency = dependency->toDerivedPath();
auto optDependencyPath = std::visit(overloaded {
Expand Down
5 changes: 5 additions & 0 deletions tests/ca/why-depends.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
source common.sh

export NIX_TESTS_CA_BY_DEFAULT=1

cd .. && source why-depends.sh

0 comments on commit bd8571a

Please sign in to comment.