Skip to content

Commit

Permalink
Merge pull request #10825 from tie/output-spec-assert
Browse files Browse the repository at this point in the history
Fix empty outputsToInstall for InstallableAttrPath
  • Loading branch information
roberth authored Jun 3, 2024
2 parents 25e2b1f + 68090d7 commit b74a0df
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/libcmd/installable-attr-path.cc
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ DerivedPathsWithInfo InstallableAttrPath::toDerivedPaths()
std::set<std::string> outputsToInstall;
for (auto & output : packageInfo.queryOutputs(false, true))
outputsToInstall.insert(output.first);
if (outputsToInstall.empty())
outputsToInstall.insert("out");
return OutputsSpec::Names { std::move(outputsToInstall) };
},
[&](const ExtendedOutputsSpec::Explicit & e) -> OutputsSpec {
Expand Down
8 changes: 8 additions & 0 deletions tests/functional/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ nix build -f multiple-outputs.nix --json e --no-link | jq --exit-status '
(.outputs | keys == ["a_a", "b"]))
'

# Tests that we can handle empty 'outputsToInstall' (assuming that default
# output "out" exists).
nix build -f multiple-outputs.nix --json nothing-to-install --no-link | jq --exit-status '
(.[0] |
(.drvPath | match(".*nothing-to-install.drv")) and
(.outputs | keys == ["out"]))
'

# But not when it's overriden.
nix build -f multiple-outputs.nix --json e^a_a --no-link
nix build -f multiple-outputs.nix --json e^a_a --no-link | jq --exit-status '
Expand Down
6 changes: 6 additions & 0 deletions tests/functional/multiple-outputs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ rec {
buildCommand = "mkdir $a_a $b $c";
};

nothing-to-install = mkDerivation {
name = "nothing-to-install";
meta.outputsToInstall = [ ];
buildCommand = "mkdir $out";
};

independent = mkDerivation {
name = "multiple-outputs-independent";
outputs = [ "first" "second" ];
Expand Down

0 comments on commit b74a0df

Please sign in to comment.