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,