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 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 :: (warn :: Bool) -> (finalAttrs :: AttrSet) -> List String
16 ```
17 */
18 _mkMetaBadPlatforms =
19 warn: finalAttrs:
20 let
21 failedAssertionsString = _cuda.lib._mkFailedAssertionsString finalAttrs.passthru.platformAssertions;
22 hasFailedAssertions = failedAssertionsString != "";
23 finalStdenv = finalAttrs.finalPackage.stdenv;
24 in
25 lib.warnIf (warn && hasFailedAssertions)
26 "Package ${finalAttrs.finalPackage.name} is unsupported on this platform due to the following failed assertions:${failedAssertionsString}"
27 (
28 lib.optionals hasFailedAssertions (
29 lib.unique [
30 finalStdenv.buildPlatform.system
31 finalStdenv.hostPlatform.system
32 finalStdenv.targetPlatform.system
33 ]
34 )
35 );
36
37 /**
38 Returns a boolean indicating whether the package is broken as a result of `finalAttrs.passthru.brokenAssertions`,
39 optionally logging evaluation warnings for each reason.
40
41 NOTE: No guarantees are made about this function's stability. You may use it at your own risk.
42
43 NOTE: This function requires `finalAttrs.passthru.brokenAssertions` to be a list of assertions and
44 `finalAttrs.finalPackage.name` to be available.
45
46 # Type
47
48 ```
49 _mkMetaBroken :: (warn :: Bool) -> (finalAttrs :: AttrSet) -> Bool
50 ```
51
52 # Inputs
53
54 `warn`
55
56 : A boolean indicating whether to log warnings
57
58 `finalAttrs`
59
60 : The final attributes of the package
61 */
62 _mkMetaBroken =
63 warn: finalAttrs:
64 let
65 failedAssertionsString = _cuda.lib._mkFailedAssertionsString finalAttrs.passthru.brokenAssertions;
66 hasFailedAssertions = failedAssertionsString != "";
67 in
68 lib.warnIf (warn && hasFailedAssertions)
69 "Package ${finalAttrs.finalPackage.name} is marked as broken due to the following failed assertions:${failedAssertionsString}"
70 hasFailedAssertions;
71}