haskell.compiler.ghc*Binary: make sure meta can always be evaluated#246805
Merged
fgaz merged 1 commit intoNixOS:masterfrom Aug 5, 2023
Merged
haskell.compiler.ghc*Binary: make sure meta can always be evaluated#246805fgaz merged 1 commit intoNixOS:masterfrom
fgaz merged 1 commit intoNixOS:masterfrom
Conversation
The `meta` set of the binary GHCs is mostly independent of the used bindist (except for `pname` which includes `variantSuffix`). Thus we should make sure it can be evaluated even if no bindist is available for the platform, i.e. evaluating `outPath` may cause an evaluation failure, but `meta.platforms` not. Use case at present is to make `lib.meta.availableOn` work everywhere for any GHC (the normal GHCs inherit their platforms list from their respective boot compiler, at least for now). To fix this we need to make sure that shallowly evaluating `passthru` doesn't force `binDistUsed`, since `mkDerivation` needs to merge `passthru` into the resulting derivation attribute set, thus forcing the attribute names of `passthru`. We can easily do this by accessing what we want to learn from `ghcBinDists` manually and using `or` to fall back to a sensible default.
12 tasks
Member
Author
|
Testable using |
ghost
approved these changes
Aug 5, 2023
fgaz
approved these changes
Aug 5, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The
metaset of the binary GHCs is mostly independent of the used bindist (except forpnamewhich includesvariantSuffix). Thus we should make sure it can be evaluated even if no bindist is available for the platform, i.e. evaluatingoutPathmay cause an evaluation failure, butmeta.platformsnot. Use case at present is to makelib.meta.availableOnwork everywhere for any GHC (the normal GHCs inherit their platforms list from their respective boot compiler, at least for now).To fix this we need to make sure that shallowly evaluating
passthrudoesn't forcebinDistUsed, sincemkDerivationneeds to mergepassthruinto the resulting derivation attribute set, thus forcing the attribute names ofpassthru. We can easily do this by accessing what we want to learn fromghcBinDistsmanually and usingorto fall back to a sensible default.Description of changes
Things done
sandbox = trueset 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/)