@@ -103,11 +103,15 @@ convSP os arch cinfo strfl (SourcePackage (PackageIdentifier pn pv) gpd _ _pl) =
103
103
-- | Convert a generic package description to a solver-specific 'PInfo'.
104
104
convGPD :: OS -> Arch -> CompilerInfo -> Bool ->
105
105
PI PN -> GenericPackageDescription -> PInfo
106
- convGPD os arch comp strfl pi
106
+ convGPD os arch cinfo strfl pi
107
107
(GenericPackageDescription pkg flags libs exes tests benchs) =
108
108
let
109
109
fds = flagInfo strfl flags
110
- conv = convBuildableCondTree os arch comp pi fds
110
+
111
+ conv :: Monoid a => Component -> (a -> BuildInfo ) ->
112
+ CondTree ConfVar [Dependency ] a -> FlaggedDeps Component PN
113
+ conv comp getInfo = convCondTree os arch cinfo pi fds comp getInfo .
114
+ PDC. addBuildableCondition getInfo
111
115
in
112
116
PInfo
113
117
(maybe [] (conv ComponentLib libBuildInfo ) libs ++
@@ -129,20 +133,6 @@ prefix f fds = [f (concat fds)]
129
133
flagInfo :: Bool -> [PD. Flag ] -> FlagInfo
130
134
flagInfo strfl = M. fromList . L. map (\ (MkFlag fn _ b m) -> (fn, FInfo b m (not (strfl || m))))
131
135
132
- -- | Convert a condition tree to flagged dependencies.
133
- --
134
- -- In addition, tries to determine under which condition the condition tree
135
- -- is buildable, and will add an additional condition on top accordingly.
136
- convBuildableCondTree :: OS -> Arch -> CompilerInfo -> PI PN -> FlagInfo ->
137
- Component ->
138
- (a -> BuildInfo ) ->
139
- CondTree ConfVar [Dependency ] a -> FlaggedDeps Component PN
140
- convBuildableCondTree os arch cinfo pi fds comp getInfo t =
141
- case PDC. extractCondition (buildable . getInfo) t of
142
- Lit True -> convCondTree os arch cinfo pi fds comp getInfo t
143
- Lit False -> []
144
- c -> convBranch os arch cinfo pi fds comp getInfo (c, t, Nothing )
145
-
146
136
-- | Convert condition trees to flagged dependencies.
147
137
convCondTree :: OS -> Arch -> CompilerInfo -> PI PN -> FlagInfo ->
148
138
Component ->
0 commit comments