Skip to content

use config (i.e. freeze) constraints also as solver version prefs #7491

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion cabal-install/src/Distribution/Client/ProjectConfig.hs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ import Distribution.Client.VCS
( validateSourceRepos, SourceRepoProblem(..)
, VCS(..), knownVCSs, configureVCS, syncSourceRepos )

import Distribution.Client.Targets
( UserConstraint(..), UserConstraintScope(..), UserQualifier(..) )
import Distribution.Client.Types
import Distribution.Client.DistDirLayout
( DistDirLayout(..), CabalDirLayout(..), ProjectRoot(..) )
Expand Down Expand Up @@ -232,7 +234,8 @@ resolveSolverSettings ProjectConfig{
solverSettingRemoteRepos = fromNubList projectConfigRemoteRepos
solverSettingLocalNoIndexRepos = fromNubList projectConfigLocalNoIndexRepos
solverSettingConstraints = projectConfigConstraints
solverSettingPreferences = projectConfigPreferences
solverSettingPreferences = projectConfigPreferences ++
mapMaybe constraintToVersionPref projectConfigConstraints
solverSettingFlagAssignment = packageConfigFlagAssignment projectConfigLocalPackages
solverSettingFlagAssignments = fmap packageConfigFlagAssignment
(getMapMappend projectConfigSpecificPackage)
Expand Down Expand Up @@ -281,6 +284,11 @@ resolveSolverSettings ProjectConfig{
--projectConfigUpgradeDeps = Flag False
}

-- When constructing solver settings from a project config, we add version preferences
-- for any constraints to a fixed package, just to "hint" the solver a little
constraintToVersionPref :: Show a => (UserConstraint, a) -> Maybe PackageVersionConstraint
constraintToVersionPref (UserConstraint (UserQualified UserQualToplevel pn) (PackagePropertyVersion vrange),_) = Just (PackageVersionConstraint pn vrange)
constraintToVersionPref _ = Nothing

-- | Resolve the project configuration, with all its optional fields, into
-- 'BuildTimeSettings' with no optional fields (by applying defaults).
Expand Down