1ddabe1a01
'nix profile install' will now install all outputs listed in the package's meta.outputsToInstall attribute, or all outputs if that attribute doesn't exist. This makes it behave consistently with nix-env. Fixes #6385. Furthermore, for consistency, all other 'nix' commands do this as well. E.g. 'nix build' will build and symlink the outputs in meta.outputsToInstall, defaulting to all outputs. Previously, it only built/symlinked the first output. Note that this means that selecting a specific output using attrpath selection (e.g. 'nix build nixpkgs#libxml2.dev') no longer works. A subsequent PR will add a way to specify the desired outputs explicitly.
25 lines
712 B
Bash
25 lines
712 B
Bash
source common.sh
|
|
|
|
clearStore
|
|
|
|
# Make sure that 'nix build' returns all outputs by default.
|
|
nix build -f multiple-outputs.nix --json a b --no-link | jq --exit-status '
|
|
(.[0] |
|
|
(.drvPath | match(".*multiple-outputs-a.drv")) and
|
|
(.outputs | keys | length == 2) and
|
|
(.outputs.first | match(".*multiple-outputs-a-first")) and
|
|
(.outputs.second | match(".*multiple-outputs-a-second")))
|
|
and (.[1] |
|
|
(.drvPath | match(".*multiple-outputs-b.drv")) and
|
|
(.outputs | keys | length == 1) and
|
|
(.outputs.out | match(".*multiple-outputs-b")))
|
|
'
|
|
|
|
testNormalization () {
|
|
clearStore
|
|
outPath=$(nix-build ./simple.nix --no-out-link)
|
|
test "$(stat -c %Y $outPath)" -eq 1
|
|
}
|
|
|
|
testNormalization
|