lib.systems.extensions.sharedLibrary: do not throw
#244118
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of changes
Because downstream code expects to use
==
on platform attrsets, we are unfortunately not able to throw a useful error message when thesharedLibrary
attribute is accessed.When users do a comparison like:
... in a situation where
stdenv.hostPlatform.hasSharedLibraries
, they expect this to returnfalse
. Unfortunately Nix does a deep equality comparison here, and ends up forcing thepkgsStatic.stdenv.hostPlatform.extensions.sharedLibrary
attribute, which throws the error.Rather than returning
null
, this commit instead simply omits theextensions.sharedLibrary
attribute. This provides the user with a more-useful error message: instead of waiting until thenull
is used (and hoping that produces an error), the user will get an error about theextensions.sharedLibrary
attribute being missing, at the position where it was referenced.Big thanks to @trofi for his PR to add
NIX_VALIDATE_EVAL_NONDETERMINISM
to Nix, which I am now using. It made tracking this down really easy!Fixes #244045
Things done
sandbox = true
set innix.conf
? (See Nix manual)nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"
. Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/
)