diff --git a/cabal-install/src/Network/Hackage/CabalInstall/BuildDep.hs b/cabal-install/src/Network/Hackage/CabalInstall/BuildDep.hs index 72d54856c583fdf49ef3403af34c58cafd44a1f7..7df4bf23811384b3f12b48a969d42b2982f919ac 100644 --- a/cabal-install/src/Network/Hackage/CabalInstall/BuildDep.hs +++ b/cabal-install/src/Network/Hackage/CabalInstall/BuildDep.hs @@ -19,6 +19,7 @@ import Network.Hackage.CabalInstall.Types (ConfigFlags (..), UnresolvedDependenc import Distribution.PackageDescription (readPackageDescription, buildDepends, GenericPackageDescription(..)) import Distribution.Simple.Configure (getInstalledPackages) +import Distribution.Simple.Compiler (PackageDB(..)) {-| This function behaves exactly like 'Network.Hackage.CabalInstall.Install.install' except @@ -26,8 +27,13 @@ import Distribution.Simple.Configure (getInstalledPackages) -} buildDep :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO () buildDep cfg globalArgs deps - = do ipkgs <- getInstalledPackages (configCompiler cfg) (configUserIns cfg) (configVerbose cfg) - apkgs <- fmap getPackages (fmap (getBuildDeps ipkgs) (resolveDependenciesAux cfg ipkgs deps)) + = do Just ipkgs <- getInstalledPackages + (configVerbose cfg) (configCompiler cfg) + (if configUserIns cfg then UserPackageDB + else GlobalPackageDB) + (configPrograms cfg) + apkgs <- fmap getPackages (fmap (getBuildDeps ipkgs) + (resolveDependenciesAux cfg ipkgs deps)) mapM_ (installPkg cfg globalArgs) apkgs -- | Takes the path to a .cabal file, and installs the build-dependencies listed there. diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Configure.hs b/cabal-install/src/Network/Hackage/CabalInstall/Configure.hs index cd3f79f8080d029f4c770a5fe51193fea4ebdc4d..16cd7f6336672f0934fd0c928edc44aa1ca9608d 100644 --- a/cabal-install/src/Network/Hackage/CabalInstall/Configure.hs +++ b/cabal-install/src/Network/Hackage/CabalInstall/Configure.hs @@ -132,6 +132,7 @@ mkConfigFlags cfg outputGen <- defaultOutputGen (tempVerbose cfg) let config = ConfigFlags { configCompiler = comp + , configPrograms = conf''' , configConfDir = confDir , configCacheDir = cacheDir , configPkgListDir = pkgListDir diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Info.hs b/cabal-install/src/Network/Hackage/CabalInstall/Info.hs index 7fdf76d68f7943f79389ec5abe5ffd7b5ff475c8..6200ca721a012ec1edb1d733cc2882ae06760064 100644 --- a/cabal-install/src/Network/Hackage/CabalInstall/Info.hs +++ b/cabal-install/src/Network/Hackage/CabalInstall/Info.hs @@ -19,12 +19,17 @@ import Network.Hackage.CabalInstall.Types (ConfigFlags(..), ResolvedPackage(..) import Distribution.Package (PackageIdentifier) import Distribution.Simple.Configure (getInstalledPackages) +import Distribution.Simple.Compiler (PackageDB(..)) import Data.Maybe (listToMaybe) info :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO () info cfg globalArgs deps - = do ipkgs <- getInstalledPackages (configCompiler cfg) (configUserIns cfg) (configVerbose cfg) + = do Just ipkgs <- getInstalledPackages + (configVerbose cfg) (configCompiler cfg) + (if configUserIns cfg then UserPackageDB + else GlobalPackageDB) + (configPrograms cfg) apkgs <- resolveDependencies cfg [] deps mapM_ (infoPkg cfg ipkgs globalArgs) apkgs diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Install.hs b/cabal-install/src/Network/Hackage/CabalInstall/Install.hs index 191fc5bad57fe9d7dfbffb0ce8627e2aa0b8cb3c..26618ca72d7ac46bd711a28d5421c8ad78be1b76 100644 --- a/cabal-install/src/Network/Hackage/CabalInstall/Install.hs +++ b/cabal-install/src/Network/Hackage/CabalInstall/Install.hs @@ -28,6 +28,7 @@ import Network.Hackage.CabalInstall.TarUtils import Distribution.Simple.SetupWrapper (setupWrapper) import Distribution.Simple.Configure (getInstalledPackages) +import Distribution.Simple.Compiler (PackageDB(..)) import Distribution.Package (showPackageId, PackageIdentifier) import Distribution.Verbosity import System.FilePath ((</>), splitFileName) @@ -44,7 +45,11 @@ import System.Posix.Signals -- |Installs the packages needed to satisfy a list of dependencies. install :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO () install cfg globalArgs deps - = do ipkgs <- getInstalledPackages (configCompiler cfg) (configUserIns cfg) (configVerbose cfg) + = do Just ipkgs <- getInstalledPackages + (configVerbose cfg) (configCompiler cfg) + (if configUserIns cfg then UserPackageDB + else GlobalPackageDB) + (configPrograms cfg) resolvedDeps <- resolveDependencies cfg ipkgs deps let apkgs = getPackages resolvedDeps if null apkgs diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Types.hs b/cabal-install/src/Network/Hackage/CabalInstall/Types.hs index 6d42788d45fbc04769fef2adc84d32d839fcf52d..961e9d68ecda8112ada4230bcd4ed49c997a84e7 100644 --- a/cabal-install/src/Network/Hackage/CabalInstall/Types.hs +++ b/cabal-install/src/Network/Hackage/CabalInstall/Types.hs @@ -13,6 +13,7 @@ module Network.Hackage.CabalInstall.Types where import Distribution.Simple.Compiler (CompilerFlavor(..),Compiler) +import Distribution.Simple.Program (ProgramConfiguration) import Distribution.Package (PackageIdentifier) import Distribution.Version (Dependency) import Distribution.Verbosity @@ -57,6 +58,7 @@ data TempFlags = TempFlags { data ConfigFlags = ConfigFlags { configCompiler :: Compiler, + configPrograms :: ProgramConfiguration, configConfDir :: FilePath, configCacheDir :: FilePath, configPkgListDir :: FilePath,