@@ -605,6 +605,7 @@ data FetchFlags = FetchFlags {
605
605
fetchSolver :: Flag PreSolver ,
606
606
fetchMaxBackjumps :: Flag Int ,
607
607
fetchMaxScore :: Flag InstallPlanScore ,
608
+ fetchFindBestSolution :: Flag FindBestSolution ,
608
609
fetchReorderGoals :: Flag ReorderGoals ,
609
610
fetchIndependentGoals :: Flag IndependentGoals ,
610
611
fetchShadowPkgs :: Flag ShadowPkgs ,
@@ -620,6 +621,7 @@ defaultFetchFlags = FetchFlags {
620
621
fetchSolver = Flag defaultSolver,
621
622
fetchMaxBackjumps = Flag defaultMaxBackjumps,
622
623
fetchMaxScore = mempty ,
624
+ fetchFindBestSolution = Flag (FindBestSolution False ),
623
625
fetchReorderGoals = Flag (ReorderGoals False ),
624
626
fetchIndependentGoals = Flag (IndependentGoals False ),
625
627
fetchShadowPkgs = Flag (ShadowPkgs False ),
@@ -667,6 +669,7 @@ fetchCommand = CommandUI {
667
669
optionSolverFlags showOrParseArgs
668
670
fetchMaxBackjumps (\ v flags -> flags { fetchMaxBackjumps = v })
669
671
fetchMaxScore (\ v flags -> flags { fetchMaxScore = v })
672
+ fetchFindBestSolution (\ v flags -> flags { fetchFindBestSolution = v })
670
673
fetchReorderGoals (\ v flags -> flags { fetchReorderGoals = v })
671
674
fetchIndependentGoals (\ v flags -> flags { fetchIndependentGoals = v })
672
675
fetchShadowPkgs (\ v flags -> flags { fetchShadowPkgs = v })
@@ -685,6 +688,7 @@ data FreezeFlags = FreezeFlags {
685
688
freezeSolver :: Flag PreSolver ,
686
689
freezeMaxBackjumps :: Flag Int ,
687
690
freezeMaxScore :: Flag InstallPlanScore ,
691
+ freezeFindBestSolution :: Flag FindBestSolution ,
688
692
freezeReorderGoals :: Flag ReorderGoals ,
689
693
freezeIndependentGoals :: Flag IndependentGoals ,
690
694
freezeShadowPkgs :: Flag ShadowPkgs ,
@@ -700,6 +704,7 @@ defaultFreezeFlags = FreezeFlags {
700
704
freezeSolver = Flag defaultSolver,
701
705
freezeMaxBackjumps = Flag defaultMaxBackjumps,
702
706
freezeMaxScore = mempty ,
707
+ freezeFindBestSolution = Flag (FindBestSolution False ),
703
708
freezeReorderGoals = Flag (ReorderGoals False ),
704
709
freezeIndependentGoals = Flag (IndependentGoals False ),
705
710
freezeShadowPkgs = Flag (ShadowPkgs False ),
@@ -746,6 +751,7 @@ freezeCommand = CommandUI {
746
751
optionSolverFlags showOrParseArgs
747
752
freezeMaxBackjumps (\ v flags -> flags { freezeMaxBackjumps = v })
748
753
freezeMaxScore (\ v flags -> flags { freezeMaxScore = v })
754
+ freezeFindBestSolution (\ v flags -> flags { freezeFindBestSolution = v })
749
755
freezeReorderGoals (\ v flags -> flags { freezeReorderGoals = v })
750
756
freezeIndependentGoals (\ v flags -> flags { freezeIndependentGoals = v })
751
757
freezeShadowPkgs (\ v flags -> flags { freezeShadowPkgs = v })
@@ -1149,6 +1155,7 @@ data InstallFlags = InstallFlags {
1149
1155
installDryRun :: Flag Bool ,
1150
1156
installMaxBackjumps :: Flag Int ,
1151
1157
installMaxScore :: Flag InstallPlanScore ,
1158
+ installFindBestSolution :: Flag FindBestSolution ,
1152
1159
installReorderGoals :: Flag ReorderGoals ,
1153
1160
installIndependentGoals :: Flag IndependentGoals ,
1154
1161
installShadowPkgs :: Flag ShadowPkgs ,
@@ -1181,6 +1188,7 @@ defaultInstallFlags = InstallFlags {
1181
1188
installDryRun = Flag False ,
1182
1189
installMaxBackjumps = Flag defaultMaxBackjumps,
1183
1190
installMaxScore = mempty ,
1191
+ installFindBestSolution= Flag (FindBestSolution False ),
1184
1192
installReorderGoals = Flag (ReorderGoals False ),
1185
1193
installIndependentGoals= Flag (IndependentGoals False ),
1186
1194
installShadowPkgs = Flag (ShadowPkgs False ),
@@ -1326,6 +1334,7 @@ installOptions showOrParseArgs =
1326
1334
optionSolverFlags showOrParseArgs
1327
1335
installMaxBackjumps (\ v flags -> flags { installMaxBackjumps = v })
1328
1336
installMaxScore (\ v flags -> flags { installMaxScore = v })
1337
+ installFindBestSolution (\ v flags -> flags { installFindBestSolution = v })
1329
1338
installReorderGoals (\ v flags -> flags { installReorderGoals = v })
1330
1339
installIndependentGoals (\ v flags -> flags { installIndependentGoals = v })
1331
1340
installShadowPkgs (\ v flags -> flags { installShadowPkgs = v })
@@ -2079,12 +2088,13 @@ optionSolver get set =
2079
2088
optionSolverFlags :: ShowOrParseArgs
2080
2089
-> (flags -> Flag Int ) -> (Flag Int -> flags -> flags )
2081
2090
-> (flags -> Flag InstallPlanScore ) -> (Flag InstallPlanScore -> flags -> flags )
2091
+ -> (flags -> Flag FindBestSolution ) -> (Flag FindBestSolution -> flags -> flags )
2082
2092
-> (flags -> Flag ReorderGoals ) -> (Flag ReorderGoals -> flags -> flags )
2083
2093
-> (flags -> Flag IndependentGoals ) -> (Flag IndependentGoals -> flags -> flags )
2084
2094
-> (flags -> Flag ShadowPkgs ) -> (Flag ShadowPkgs -> flags -> flags )
2085
2095
-> (flags -> Flag StrongFlags ) -> (Flag StrongFlags -> flags -> flags )
2086
2096
-> [OptionField flags ]
2087
- optionSolverFlags showOrParseArgs getmbj setmbj getms setms getrg setrg _getig _setig getsip setsip getstrfl setstrfl =
2097
+ optionSolverFlags showOrParseArgs getmbj setmbj getms setms getfb setfb getrg setrg _getig _setig getsip setsip getstrfl setstrfl =
2088
2098
[ option [] [" max-backjumps" ]
2089
2099
(" Maximum number of backjumps allowed while solving (default: " ++ show defaultMaxBackjumps ++ " ). Use a negative number to enable unlimited backtracking. Use 0 to disable backtracking completely." )
2090
2100
getmbj setmbj
@@ -2096,6 +2106,11 @@ optionSolverFlags showOrParseArgs getmbj setmbj getms setms getrg setrg _getig _
2096
2106
(setms . fmap InstallPlanScore )
2097
2107
(reqArg " NUM" (readP_to_E (" Cannot parse number: " ++ ) (fmap (toFlag . (fromIntegral :: Int -> Double )) parse))
2098
2108
(map show . flagToList))
2109
+ , option [] [" find-best-solution" ]
2110
+ " Find the best-scoring solution within the backjump limit."
2111
+ (fmap asBool . getfb)
2112
+ (setfb . fmap FindBestSolution )
2113
+ (yesNoOpt showOrParseArgs)
2099
2114
, option [] [" reorder-goals" ]
2100
2115
" Try to reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages."
2101
2116
(fmap asBool . getrg)
0 commit comments