forked from lix-project/lix
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
|