nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ _cuda, lib }:
2{
3 /**
4 Returns a list of bad platforms for a given package if assertsions in `finalAttrs.passthru.platformAssertions`
5 fail, optionally logging evaluation warnings with `builtins.traceVerbose` for each reason.
6
7 NOTE: No guarantees are made about this function's stability. You may use it at your own risk.
8
9 NOTE: This function requires `finalAttrs.passthru.platformAssertions` to be a list of assertions and
10 `finalAttrs.finalPackage.name` and `finalAttrs.finalPackage.stdenv` to be available.
11
12 # Type
13
14 ```
15 _mkMetaBadPlatforms :: (finalAttrs :: AttrSet) -> List String
16 ```
17
18 # Inputs
19
20 `finalAttrs`
21
22 : The final attributes of the package
23 */
24 _mkMetaBadPlatforms =
25 finalAttrs:
26 let
27 failedAssertionsString = _cuda.lib._mkFailedAssertionsString finalAttrs.passthru.platformAssertions;
28 hasFailedAssertions = failedAssertionsString != "";
29 finalStdenv = finalAttrs.finalPackage.stdenv;
30 badPlatforms = lib.optionals hasFailedAssertions (
31 lib.unique [
32 finalStdenv.buildPlatform.system
33 finalStdenv.hostPlatform.system
34 finalStdenv.targetPlatform.system
35 ]
36 );
37 handle =
38 if hasFailedAssertions then
39 builtins.traceVerbose "Package ${finalAttrs.finalPackage.name} is unsupported on this platform due to the following failed assertions:${failedAssertionsString}"
40 else
41 lib.id;
42 in
43 handle badPlatforms;
44
45 /**
46 Returns a boolean indicating whether the package is broken as a result of `finalAttrs.passthru.brokenAssertions`,
47 optionally logging evaluation warnings with `builtins.traceVerbose` for each reason.
48
49 NOTE: No guarantees are made about this function's stability. You may use it at your own risk.
50
51 NOTE: This function requires `finalAttrs.passthru.brokenAssertions` to be a list of assertions and
52 `finalAttrs.finalPackage.name` to be available.
53
54 # Type
55
56 ```
57 _mkMetaBroken :: (finalAttrs :: AttrSet) -> Bool
58 ```
59
60 # Inputs
61
62 `finalAttrs`
63
64 : The final attributes of the package
65 */
66 _mkMetaBroken =
67 finalAttrs:
68 let
69 failedAssertionsString = _cuda.lib._mkFailedAssertionsString finalAttrs.passthru.brokenAssertions;
70 hasFailedAssertions = failedAssertionsString != "";
71 handle =
72 if hasFailedAssertions then
73 builtins.traceVerbose "Package ${finalAttrs.finalPackage.name} is marked as broken due to the following failed assertions:${failedAssertionsString}"
74 else
75 lib.id;
76 in
77 handle hasFailedAssertions;
78}