Skip to content

Commit 7651c91

Browse files
committed
feat: add --build-packagedb
1 parent 428ea60 commit 7651c91

File tree

5 files changed

+22
-3
lines changed

5 files changed

+22
-3
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@ instance Semigroup SavedConfig where
575575
, configBuildHcFlavor = combine configBuildHcFlavor
576576
, configBuildHcPath = combine configBuildHcPath
577577
, configBuildHcPkg = combine configBuildHcPkg
578+
, configBuildPackageDBs = lastNonEmpty configBuildPackageDBs
578579
}
579580
where
580581
combine = combine' savedConfigureExFlags

cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,7 @@ convertLegacyAllPackageFlags globalFlags configFlags configExFlags installFlags
705705
ProjectConfigShared{..}
706706
where
707707
projectConfigPackageDBs = (fmap . fmap) (interpretPackageDB Nothing) projectConfigPackageDBs_
708+
projectConfigBuildPackageDBs = (fmap . fmap) (interpretPackageDB Nothing) projectConfigBuildPackageDBs_
708709
projectConfigHookHashes = mempty -- :: Map FilePath HookAccept
709710
projectConfigDistDir = fmap getSymbolicPath projectConfigAbsoluteDistDir
710711

@@ -744,6 +745,7 @@ convertLegacyAllPackageFlags globalFlags configFlags configExFlags installFlags
744745
, configBuildHcFlavor = projectConfigBuildHcFlavor
745746
, configBuildHcPath = projectConfigBuildHcPath
746747
, configBuildHcPkg = projectConfigBuildHcPkg
748+
, configBuildPackageDBs = projectConfigBuildPackageDBs_
747749
} = configExFlags
748750

749751
InstallFlags
@@ -1026,6 +1028,7 @@ convertToLegacySharedConfig
10261028
, configBuildHcFlavor = projectConfigBuildHcFlavor
10271029
, configBuildHcPath = projectConfigBuildHcPath
10281030
, configBuildHcPkg = projectConfigBuildHcPkg
1031+
, configBuildPackageDBs = fmap (fmap (fmap unsafeMakeSymbolicPath)) projectConfigBuildPackageDBs
10291032
}
10301033

10311034
installFlags =

cabal-install/src/Distribution/Client/ProjectConfig/Types.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,16 +192,17 @@ data ProjectConfigShared = ProjectConfigShared
192192
, projectConfigHcFlavor :: Flag CompilerFlavor
193193
, projectConfigHcPath :: Flag FilePath
194194
, projectConfigHcPkg :: Flag FilePath
195+
, projectConfigPackageDBs :: [Maybe PackageDBCWD]
195196
, projectConfigBuildHcFlavor :: Flag CompilerFlavor
196197
, projectConfigBuildHcPath :: Flag FilePath
197198
, projectConfigBuildHcPkg :: Flag FilePath
199+
, projectConfigBuildPackageDBs :: [Maybe PackageDBCWD]
198200
, projectConfigHaddockIndex :: Flag PathTemplate
199201
, -- Only makes sense for manual mode, not --local mode
200202
-- too much control!
201203
-- projectConfigUserInstall :: Flag Bool,
202204

203205
projectConfigInstallDirs :: InstallDirs (Flag PathTemplate)
204-
, projectConfigPackageDBs :: [Maybe PackageDBCWD]
205206
, -- configuration used both by the solver and other phases
206207
projectConfigRemoteRepos :: NubList RemoteRepo
207208
-- ^ Available Hackage servers.

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -923,6 +923,8 @@ data ConfigExFlags = ConfigExFlags
923923
, configBuildHcFlavor :: Flag CompilerFlavor
924924
, configBuildHcPath :: Flag FilePath
925925
, configBuildHcPkg :: Flag FilePath
926+
, configBuildPackageDBs :: [Maybe PackageDB]
927+
-- ^ Which package DBs to use in the build stage
926928
}
927929
deriving (Eq, Show, Generic)
928930

@@ -1064,6 +1066,16 @@ configureExOptions _showOrParseArgs src =
10641066
configBuildHcPkg
10651067
(\v flags -> flags{configBuildHcPkg = v})
10661068
(reqArgFlag "PATH")
1069+
, option
1070+
""
1071+
["build-package-db"]
1072+
( "Append the given package database to the list of package"
1073+
++ " databases used during the build stage."
1074+
++ " See the user guide for details."
1075+
)
1076+
configBuildPackageDBs
1077+
(\v flags -> flags{configBuildPackageDBs = v})
1078+
(reqArg' "DB" readPackageDbList showPackageDbList)
10671079
]
10681080

10691081
writeGhcEnvironmentFilesPolicyParser :: ReadE (Flag WriteGhcEnvironmentFilesPolicy)

cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,12 +613,13 @@ instance Arbitrary ProjectConfigShared where
613613
projectConfigHcFlavor <- arbitrary
614614
projectConfigHcPath <- arbitraryFlag arbitraryShortToken
615615
projectConfigHcPkg <- arbitraryFlag arbitraryShortToken
616+
projectConfigPackageDBs <- shortListOf 2 arbitrary
616617
projectConfigBuildHcFlavor <- arbitrary
617618
projectConfigBuildHcPath <- arbitraryFlag arbitraryShortToken
618619
projectConfigBuildHcPkg <- arbitraryFlag arbitraryShortToken
620+
projectConfigBuildPackageDBs <- shortListOf 2 arbitrary
619621
projectConfigHaddockIndex <- arbitrary
620622
projectConfigInstallDirs <- fixInstallDirs <$> arbitrary
621-
projectConfigPackageDBs <- shortListOf 2 arbitrary
622623
projectConfigRemoteRepos <- arbitrary
623624
projectConfigLocalNoIndexRepos <- arbitrary
624625
projectConfigActiveRepos <- arbitrary
@@ -662,12 +663,13 @@ instance Arbitrary ProjectConfigShared where
662663
<*> shrinker projectConfigHcFlavor
663664
<*> shrinkerAla (fmap NonEmpty) projectConfigHcPath
664665
<*> shrinkerAla (fmap NonEmpty) projectConfigHcPkg
666+
<*> shrinker projectConfigPackageDBs
665667
<*> shrinker projectConfigBuildHcFlavor
666668
<*> shrinkerAla (fmap NonEmpty) projectConfigBuildHcPath
667669
<*> shrinkerAla (fmap NonEmpty) projectConfigBuildHcPkg
670+
<*> shrinker projectConfigBuildPackageDBs
668671
<*> shrinker projectConfigHaddockIndex
669672
<*> shrinker projectConfigInstallDirs
670-
<*> shrinker projectConfigPackageDBs
671673
<*> shrinker projectConfigRemoteRepos
672674
<*> shrinker projectConfigLocalNoIndexRepos
673675
<*> shrinker projectConfigActiveRepos

0 commit comments

Comments
 (0)