@@ -5,6 +5,7 @@ module Distribution.Client.Dependency.Modular.IndexConversion
5
5
import Data.List as L
6
6
import Data.Map as M
7
7
import Data.Maybe
8
+ import Data.Monoid as Mon
8
9
import Prelude hiding (pi )
9
10
10
11
import qualified Distribution.Client.PackageIndex as CI
@@ -103,11 +104,15 @@ convSP os arch cinfo strfl (SourcePackage (PackageIdentifier pn pv) gpd _ _pl) =
103
104
-- | Convert a generic package description to a solver-specific 'PInfo'.
104
105
convGPD :: OS -> Arch -> CompilerInfo -> Bool ->
105
106
PI PN -> GenericPackageDescription -> PInfo
106
- convGPD os arch comp strfl pi
107
+ convGPD os arch cinfo strfl pi
107
108
(GenericPackageDescription pkg flags libs exes tests benchs) =
108
109
let
109
110
fds = flagInfo strfl flags
110
- conv = convBuildableCondTree os arch comp pi fds
111
+
112
+ conv :: Mon. Monoid a => Component -> (a -> BuildInfo ) ->
113
+ CondTree ConfVar [Dependency ] a -> FlaggedDeps Component PN
114
+ conv comp getInfo = convCondTree os arch cinfo pi fds comp getInfo .
115
+ PDC. addBuildableCondition getInfo
111
116
in
112
117
PInfo
113
118
(maybe [] (conv ComponentLib libBuildInfo ) libs ++
@@ -129,20 +134,6 @@ prefix f fds = [f (concat fds)]
129
134
flagInfo :: Bool -> [PD. Flag ] -> FlagInfo
130
135
flagInfo strfl = M. fromList . L. map (\ (MkFlag fn _ b m) -> (fn, FInfo b m (not (strfl || m))))
131
136
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
137
-- | Convert condition trees to flagged dependencies.
147
138
convCondTree :: OS -> Arch -> CompilerInfo -> PI PN -> FlagInfo ->
148
139
Component ->
0 commit comments