@@ -292,7 +292,8 @@ sanityCheckElaboratedPackage ElaboratedConfiguredPackage{..}
292
292
rebuildProjectConfig :: Verbosity
293
293
-> DistDirLayout
294
294
-> ProjectConfig
295
- -> IO (ProjectConfig , [UnresolvedSourcePackage ])
295
+ -> IO (ProjectConfig ,
296
+ [PackageSpecifier UnresolvedSourcePackage ])
296
297
rebuildProjectConfig verbosity
297
298
distDirLayout@ DistDirLayout {
298
299
distProjectRootDirectory,
@@ -334,7 +335,8 @@ rebuildProjectConfig verbosity
334
335
-- Look for all the cabal packages in the project
335
336
-- some of which may be local src dirs, tarballs etc
336
337
--
337
- phaseReadLocalPackages :: ProjectConfig -> Rebuild [UnresolvedSourcePackage ]
338
+ phaseReadLocalPackages :: ProjectConfig
339
+ -> Rebuild [PackageSpecifier UnresolvedSourcePackage ]
338
340
phaseReadLocalPackages projectConfig = do
339
341
localCabalFiles <- findProjectPackages distDirLayout projectConfig
340
342
mapM (readSourcePackage verbosity) localCabalFiles
@@ -356,7 +358,7 @@ rebuildProjectConfig verbosity
356
358
rebuildInstallPlan :: Verbosity
357
359
-> DistDirLayout -> CabalDirLayout
358
360
-> ProjectConfig
359
- -> [UnresolvedSourcePackage ]
361
+ -> [PackageSpecifier UnresolvedSourcePackage ]
360
362
-> IO ( ElaboratedInstallPlan -- with store packages
361
363
, ElaboratedInstallPlan -- with source packages
362
364
, ElaboratedSharedConfig )
@@ -508,7 +510,7 @@ rebuildInstallPlan verbosity
508
510
--
509
511
phaseRunSolver :: ProjectConfig
510
512
-> (Compiler , Platform , ProgramDb )
511
- -> [UnresolvedSourcePackage ]
513
+ -> [PackageSpecifier UnresolvedSourcePackage ]
512
514
-> Rebuild (SolverInstallPlan , PkgConfigDb )
513
515
phaseRunSolver projectConfig@ ProjectConfig {
514
516
projectConfigShared,
@@ -556,7 +558,7 @@ rebuildInstallPlan verbosity
556
558
Map. fromList
557
559
[ (pkgname, stanzas)
558
560
| pkg <- localPackages
559
- , let pkgname = packageName pkg
561
+ , let pkgname = pkgSpecifierTarget pkg
560
562
testsEnabled = lookupLocalPackageConfig
561
563
packageConfigTests
562
564
projectConfig pkgname
@@ -578,7 +580,7 @@ rebuildInstallPlan verbosity
578
580
-> (Compiler , Platform , ProgramDb )
579
581
-> PkgConfigDb
580
582
-> SolverInstallPlan
581
- -> [SourcePackage loc ]
583
+ -> [PackageSpecifier ( SourcePackage loc ) ]
582
584
-> Rebuild ( ElaboratedInstallPlan
583
585
, ElaboratedSharedConfig )
584
586
phaseElaboratePlan ProjectConfig {
@@ -887,7 +889,7 @@ planPackages :: Verbosity
887
889
-> InstalledPackageIndex
888
890
-> SourcePackageDb
889
891
-> PkgConfigDb
890
- -> [UnresolvedSourcePackage ]
892
+ -> [PackageSpecifier UnresolvedSourcePackage ]
891
893
-> Map PackageName (Map OptionalStanza Bool )
892
894
-> Progress String String SolverInstallPlan
893
895
planPackages verbosity comp platform solver SolverSettings {.. }
@@ -967,7 +969,7 @@ planPackages verbosity comp platform solver SolverSettings{..}
967
969
-- enable stanza preference where the user did not specify
968
970
[ PackageStanzasPreference pkgname stanzas
969
971
| pkg <- localPackages
970
- , let pkgname = packageName pkg
972
+ , let pkgname = pkgSpecifierTarget pkg
971
973
stanzaM = Map. findWithDefault Map. empty pkgname pkgStanzasEnable
972
974
stanzas = [ stanza | stanza <- [minBound .. maxBound ]
973
975
, Map. lookup stanza stanzaM == Nothing ]
@@ -981,7 +983,7 @@ planPackages verbosity comp platform solver SolverSettings{..}
981
983
(PackagePropertyStanzas stanzas))
982
984
ConstraintSourceConfigFlagOrTarget
983
985
| pkg <- localPackages
984
- , let pkgname = packageName pkg
986
+ , let pkgname = pkgSpecifierTarget pkg
985
987
stanzaM = Map. findWithDefault Map. empty pkgname pkgStanzasEnable
986
988
stanzas = [ stanza | stanza <- [minBound .. maxBound ]
987
989
, Map. lookup stanza stanzaM == Just True ]
@@ -1009,7 +1011,7 @@ planPackages verbosity comp platform solver SolverSettings{..}
1009
1011
| let flags = solverSettingFlagAssignment
1010
1012
, not (null flags)
1011
1013
, pkg <- localPackages
1012
- , let pkgname = packageName pkg ]
1014
+ , let pkgname = pkgSpecifierTarget pkg ]
1013
1015
1014
1016
$ stdResolverParams
1015
1017
@@ -1018,7 +1020,7 @@ planPackages verbosity comp platform solver SolverSettings{..}
1018
1020
-- its own addDefaultSetupDependencies that is not appropriate for us.
1019
1021
basicInstallPolicy
1020
1022
installedPkgIndex sourcePkgDb
1021
- ( map SpecificSourcePackage localPackages)
1023
+ localPackages
1022
1024
1023
1025
1024
1026
------------------------------------------------------------------------------
@@ -1130,7 +1132,7 @@ elaborateInstallPlan
1130
1132
-> DistDirLayout
1131
1133
-> StoreDirLayout
1132
1134
-> SolverInstallPlan
1133
- -> [SourcePackage loc ]
1135
+ -> [PackageSpecifier ( SourcePackage loc ) ]
1134
1136
-> Map PackageId PackageSourceHash
1135
1137
-> InstallDirs. InstallDirTemplates
1136
1138
-> ProjectConfigShared
@@ -1779,15 +1781,25 @@ elaborateInstallPlan verbosity platform compiler compilerprogdb pkgConfigDB
1779
1781
$ map packageId
1780
1782
$ SolverInstallPlan. reverseDependencyClosure
1781
1783
solverPlan
1782
- [ PlannedId (packageId pkg)
1783
- | pkg <- localPackages ]
1784
+ (map PlannedId (Set. toList pkgsLocalToProject))
1784
1785
1785
1786
isLocalToProject :: Package pkg => pkg -> Bool
1786
1787
isLocalToProject pkg = Set. member (packageId pkg)
1787
1788
pkgsLocalToProject
1788
1789
1789
1790
pkgsLocalToProject :: Set PackageId
1790
- pkgsLocalToProject = Set. fromList [ packageId pkg | pkg <- localPackages ]
1791
+ pkgsLocalToProject =
1792
+ Set. fromList (catMaybes (map shouldBeLocal localPackages))
1793
+ -- TODO: localPackages is a misnomer, it's all project packages
1794
+ -- here is where we decide which ones will be local!
1795
+ where
1796
+ shouldBeLocal :: PackageSpecifier (SourcePackage loc ) -> Maybe PackageId
1797
+ shouldBeLocal NamedPackage {} = Nothing
1798
+ shouldBeLocal (SpecificSourcePackage pkg) = Just (packageId pkg)
1799
+ -- TODO: It's not actually obvious for all of the
1800
+ -- 'ProjectPackageLocation's that they should all be local. We might
1801
+ -- need to provide the user with a choice.
1802
+ -- Also, review use of SourcePackage's loc vs ProjectPackageLocation
1791
1803
1792
1804
pkgsUseSharedLibrary :: Set PackageId
1793
1805
pkgsUseSharedLibrary =
0 commit comments