@@ -57,6 +57,7 @@ module Distribution.Client.ProjectConfig
5757 , BuildTimeSettings (.. )
5858 , resolveBuildTimeSettings
5959 , resolveNumJobsSetting
60+ , resolveProgramDb
6061
6162 -- * Checking configuration
6263 , checkBadPerPackageCompilerPaths
@@ -174,7 +175,7 @@ import Distribution.Simple.InstallDirs
174175 , toPathTemplate
175176 )
176177import Distribution.Simple.Program
177- ( ConfiguredProgram (.. )
178+ ( ConfiguredProgram (.. ), defaultProgramDb , userSpecifyPaths , ProgramDb
178179 )
179180import Distribution.Simple.Setup
180181 ( Flag (Flag )
@@ -246,6 +247,7 @@ import System.IO
246247
247248import Distribution.Deprecated.ProjectParseUtils (ProjectParseError (.. ), ProjectParseWarning )
248249import Distribution.Solver.Types.ProjectConfigPath
250+ import Distribution.Simple.Program.Db (prependProgramSearchPath )
249251
250252----------------------------------------
251253-- Resolving configuration to settings
@@ -554,6 +556,12 @@ resolveNumJobsSetting projectConfigUseSemaphore projectConfigNumJobs =
554556 1 -> Serial
555557 n -> NumJobs (Just n)
556558
559+ resolveProgramDb :: Verbosity -> PackageConfig -> IO ProgramDb
560+ resolveProgramDb verbosity pkgconf = do
561+ let extraPath = fromNubList (packageConfigProgramPathExtra pkgconf)
562+ progdb <- prependProgramSearchPath verbosity extraPath [] defaultProgramDb
563+ return $ userSpecifyPaths (Map. toList (getMapLast (packageConfigProgramPaths pkgconf))) progdb
564+
557565---------------------------------------------
558566-- Reading and writing project config files
559567--
0 commit comments