Skip to content

Commit 2adbb49

Browse files
committed
Implement v2-outdated command for cabal-install
This commit updates the outdated command to the new v2 architecture: - Transform the old `outdated` command into a new v2-style command `v2-outdated` - Support three modes of operation: - Check for outdated dependencies in v1-style freeze file - Check for outdated dependencies in project context (cabal.project & cabal.project.freeze) - Check for outdated dependencies in local packages Since the `cabal outdated` command now supports the v2-architecture, you can request to run the `v2-outdated` command on any target. I also introduced the `resolveTargetsFromLocalPackages` which resolves which local packages targets refer to without having to run the solver. This will be useful for `cabal check` as well. A change in behaviour from before is that the package description is flattened, so all bounds will be warned about rather than those in conditional branches being ignored. Fixes #8283
1 parent dc79523 commit 2adbb49

File tree

38 files changed

+1275
-281
lines changed

38 files changed

+1275
-281
lines changed

cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs

+4-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import qualified System.FilePath.Posix as Posix
3838
import qualified System.FilePath.Windows as Windows
3939
import qualified Data.List.NonEmpty as NE
4040
import Distribution.Solver.Modular.Version (VR)
41-
import Distribution.Pretty (prettyShow)
41+
import Distribution.Pretty (prettyShow, Pretty(..))
4242
import Distribution.Utils.String (trim)
4343
import Text.PrettyPrint
4444
import Distribution.Simple.Utils (ordNub)
@@ -58,6 +58,9 @@ import Distribution.System (OS(Windows), buildOS)
5858
newtype ProjectConfigPath = ProjectConfigPath (NonEmpty FilePath)
5959
deriving (Eq, Show, Generic)
6060

61+
instance Pretty ProjectConfigPath where
62+
pretty = docProjectConfigPath
63+
6164
-- | Sorts URIs after local file paths and longer file paths after shorter ones
6265
-- as measured by the number of path segments. If still equal, then sorting is
6366
-- lexical.

cabal-install/src/Distribution/Client/CmdBench.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ benchAction flags@NixStyleFlags{..} targetStrings globalFlags = do
132132
-- (as opposed to say build or haddock targets).
133133
targets <-
134134
either (reportTargetProblems verbosity) return $
135-
resolveTargets
135+
resolveTargetsFromSolver
136136
selectPackageTargets
137137
selectComponentTarget
138138
elaboratedPlan

cabal-install/src/Distribution/Client/CmdBuild.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ buildAction flags@NixStyleFlags{extraFlags = buildFlags, ..} targetStrings globa
157157
-- (as opposed to say repl or haddock targets).
158158
targets <-
159159
either (reportBuildTargetProblems verbosity) return $
160-
resolveTargets
160+
resolveTargetsFromSolver
161161
selectPackageTargets
162162
selectComponentTarget
163163
elaboratedPlan

cabal-install/src/Distribution/Client/CmdHaddock.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ haddockAction relFlags targetStrings globalFlags = do
176176
-- haddock targets
177177
targets <-
178178
either (reportBuildDocumentationTargetProblems verbosity) return $
179-
resolveTargets
179+
resolveTargetsFromSolver
180180
(selectPackageTargets haddockFlags)
181181
selectComponentTarget
182182
elaboratedPlan

cabal-install/src/Distribution/Client/CmdHaddockProject.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import Distribution.Client.ProjectOrchestration
2626
, ProjectBuildContext (..)
2727
, TargetSelector (..)
2828
, pruneInstallPlanToTargets
29-
, resolveTargets
29+
, resolveTargetsFromSolver
3030
, runProjectPreBuildPhase
3131
, selectComponentTargetBasic
3232
)
@@ -143,7 +143,7 @@ haddockProjectAction flags _extraArgs globalFlags = do
143143
-- (as opposed to say repl or haddock targets).
144144
targets <-
145145
either reportTargetProblems return $
146-
resolveTargets
146+
resolveTargetsFromSolver
147147
selectPackageTargets
148148
selectComponentTargetBasic
149149
elaboratedPlan

cabal-install/src/Distribution/Client/CmdInstall.hs

+3-3
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@ partitionToKnownTargetsAndHackagePackages
825825
-> IO (TargetsMap, [PackageName])
826826
partitionToKnownTargetsAndHackagePackages verbosity pkgDb elaboratedPlan targetSelectors = do
827827
let mTargets =
828-
resolveTargets
828+
resolveTargetsFromSolver
829829
selectPackageTargets
830830
selectComponentTarget
831831
elaboratedPlan
@@ -865,7 +865,7 @@ partitionToKnownTargetsAndHackagePackages verbosity pkgDb elaboratedPlan targetS
865865
-- removed (or we've given up).
866866
targets <-
867867
either (reportBuildTargetProblems verbosity) return $
868-
resolveTargets
868+
resolveTargetsFromSolver
869869
selectPackageTargets
870870
selectComponentTarget
871871
elaboratedPlan
@@ -885,7 +885,7 @@ constructProjectBuildContext verbosity baseCtx targetSelectors = do
885885
-- Interpret the targets on the command line as build targets
886886
targets <-
887887
either (reportBuildTargetProblems verbosity) return $
888-
resolveTargets
888+
resolveTargetsFromSolver
889889
selectPackageTargets
890890
selectComponentTarget
891891
elaboratedPlan

cabal-install/src/Distribution/Client/CmdListBin.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ listbinAction flags@NixStyleFlags{..} args globalFlags = do
106106
-- (as opposed to say repl or haddock targets).
107107
targets <-
108108
either (reportTargetProblems verbosity) return $
109-
resolveTargets
109+
resolveTargetsFromSolver
110110
selectPackageTargets
111111
selectComponentTarget
112112
elaboratedPlan

0 commit comments

Comments
 (0)