@@ -2,23 +2,23 @@ module Hix.Managed.Build where
2
2
3
3
import Control.Monad (foldM )
4
4
import qualified Data.Map.Strict as Map
5
+ import qualified Data.Set as Set
5
6
import qualified Data.Text as Text
6
7
import Distribution.Pretty (Pretty )
7
8
import Exon (exon )
8
9
import Text.PrettyPrint (vcat )
9
10
11
+ import Hix.Class.Map (nToMaybe )
10
12
import qualified Hix.Color as Color
11
13
import qualified Hix.Console
12
14
import Hix.Console (color , colors )
13
15
import Hix.Data.EnvName (EnvName )
14
16
import Hix.Data.Monad (M )
15
- import Hix.Data.Overrides (Overrides )
16
- import qualified Hix.Data.PackageId
17
- import Hix.Data.PackageId (PackageId )
17
+ import Hix.Data.Overrides (IsRevision (.. ), Override (.. ), Overrides )
18
+ import Hix.Data.PackageId (PackageId (.. ))
18
19
import Hix.Data.Version (Version , Versions )
19
20
import Hix.Data.VersionBounds (VersionBounds )
20
21
import qualified Hix.Log as Log
21
- import Hix.Managed.Data.NixOutput (PackageDerivation (.. ))
22
22
import Hix.Managed.Build.Solve (solveMutation )
23
23
import qualified Hix.Managed.Cabal.Changes
24
24
import Hix.Managed.Cabal.Config (isNonReinstallableDep , isReinstallableId )
@@ -32,6 +32,7 @@ import qualified Hix.Managed.Data.Mutation
32
32
import Hix.Managed.Data.Mutation (BuildMutation (BuildMutation ), DepMutation , MutationResult (.. ))
33
33
import qualified Hix.Managed.Data.MutationState
34
34
import Hix.Managed.Data.MutationState (MutationState (MutationState ), updateBoundsWith )
35
+ import Hix.Managed.Data.NixOutput (PackageDerivation (.. ))
35
36
import Hix.Managed.Data.Query (Query (Query ))
36
37
import qualified Hix.Managed.Data.QueryDep
37
38
import Hix.Managed.Data.QueryDep (QueryDep )
@@ -107,12 +108,12 @@ buildVersions ::
107
108
Bool ->
108
109
Versions ->
109
110
[PackageId ] ->
110
- M (Overrides , Set PackageId , BuildStatus )
111
+ M (Overrides , BuildStatus )
111
112
buildVersions builder context description allowRevisions versions overrideVersions = do
112
113
logBuildInputs context. env description reinstallable
113
- (result, ( overrides, revisions) ) <- builder. buildTargets allowRevisions versions reinstallable
114
+ (result, overrides) <- builder. buildTargets allowRevisions versions reinstallable
114
115
logBuildResult description result
115
- pure (overrides, revisions, buildStatus result)
116
+ pure (overrides, buildStatus result)
116
117
where
117
118
reinstallable = filter isReinstallableId overrideVersions
118
119
@@ -121,29 +122,32 @@ buildConstraints ::
121
122
EnvContext ->
122
123
Text ->
123
124
Bool ->
124
- Set PackageId ->
125
+ Overrides ->
125
126
SolverState ->
126
- M (Maybe (Versions , Overrides , Set PackageId , BuildStatus ))
127
- buildConstraints builder context description allowRevisions prevRevisions state =
127
+ M (Maybe (Versions , Overrides , BuildStatus ))
128
+ buildConstraints builder context description allowRevisions prevOverrides state =
128
129
solveMutation builder. cabal context. deps prevRevisions state >>= traverse \ changes -> do
129
- (overrides, revisions, status) <-
130
+ (overrides, status) <-
130
131
buildVersions builder context description allowRevisions changes. versions changes. overrides
131
- pure (changes. versions, overrides, prevRevisions <> revisions, status)
132
+ pure (changes. versions, overrides, status)
133
+ where
134
+ prevRevisions =
135
+ Set. fromList $ nToMaybe prevOverrides \ cases
136
+ name Override {version, revision = Just IsRevision } -> Just PackageId {.. }
137
+ _ _ -> Nothing
132
138
133
139
buildMutation ::
134
140
EnvBuilder ->
135
141
EnvContext ->
136
142
MutationState ->
137
- Set PackageId ->
138
143
BuildMutation ->
139
- M (Maybe ( MutationState , Set PackageId ) )
140
- buildMutation builder context state prevRevisions BuildMutation {description, solverState, updateBound} =
141
- result <$> buildConstraints builder context description True prevRevisions solverState
144
+ M (Maybe MutationState )
145
+ buildMutation builder context state BuildMutation {description, solverState, updateBound} =
146
+ result <$> buildConstraints builder context description True state . overrides solverState
142
147
where
143
148
result = \ case
144
- Just (versions, overrides, revisions, status) -> do
145
- new <- justSuccess (updateMutationState updateBound versions overrides state) status
146
- pure (new, revisions)
149
+ Just (versions, overrides, status) ->
150
+ justSuccess (updateMutationState updateBound versions overrides state) status
147
151
Nothing -> Nothing
148
152
149
153
logMutationResult ::
@@ -177,7 +181,7 @@ validateMutation envBuilder context handlers stageState mutation = do
177
181
then pure MutationKeep
178
182
else handlers. process stageState. ext mutation build
179
183
180
- build = buildMutation envBuilder context stageState. state stageState . revisions
184
+ build = buildMutation envBuilder context stageState. state
181
185
182
186
convergeMutations ::
183
187
Pretty a =>
0 commit comments