[commit: Cabal] master: Respect the --package-db flag when compiling Setup.hs (7eed059)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:01:27 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/7eed0593caf3e52deb73fa6b8cf1fa303e0bffa6
>---------------------------------------------------------------
commit 7eed0593caf3e52deb73fa6b8cf1fa303e0bffa6
Author: Duncan Coutts <duncan at haskell.org>
Date: Sun Dec 21 18:47:55 2008 +0000
Respect the --package-db flag when compiling Setup.hs
Fixes ticket #394.
>---------------------------------------------------------------
cabal-install/Distribution/Client/Install.hs | 10 +++++++++-
cabal-install/Distribution/Client/SetupWrapper.hs | 13 ++++++++++---
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs
index 144fc68..7d32c86 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -206,7 +206,15 @@ installWithPlanner planner verbosity packageDB repos comp conf configFlags insta
setupScriptOptions index = SetupScriptOptions {
useCabalVersion = maybe AnyVersion ThisVersion (libVersion miscOptions),
useCompiler = Just comp,
- usePackageIndex = if packageDB == UserPackageDB then index else Nothing,
+ -- Hack: we typically want to allow the UserPackageDB for finding the
+ -- Cabal lib when compiling any Setup.hs even if we're doing a global
+ -- install. However we also allow looking in a specific package db.
+ -- TODO: if we specify a specific db then we do not look in the user
+ -- package db but we probably should ie [global, user, specific]
+ usePackageDB = if packageDB == GlobalPackageDB then UserPackageDB
+ else packageDB,
+ usePackageIndex = if packageDB == GlobalPackageDB then Nothing
+ else index,
useProgramConfig = conf,
useDistPref = Cabal.fromFlagOrDefault
(useDistPref defaultSetupScriptOptions)
diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs
index 33c1666..a82e09e 100644
--- a/cabal-install/Distribution/Client/SetupWrapper.hs
+++ b/cabal-install/Distribution/Client/SetupWrapper.hs
@@ -73,6 +73,7 @@ import Data.Char ( isSpace )
data SetupScriptOptions = SetupScriptOptions {
useCabalVersion :: VersionRange,
useCompiler :: Maybe Compiler,
+ usePackageDB :: PackageDB,
usePackageIndex :: Maybe (PackageIndex InstalledPackageInfo),
useProgramConfig :: ProgramConfiguration,
useDistPref :: FilePath,
@@ -84,6 +85,7 @@ defaultSetupScriptOptions :: SetupScriptOptions
defaultSetupScriptOptions = SetupScriptOptions {
useCabalVersion = AnyVersion,
useCompiler = Nothing,
+ usePackageDB = UserPackageDB,
usePackageIndex = Nothing,
useProgramConfig = emptyProgramConfiguration,
useDistPref = defaultDistPref,
@@ -202,8 +204,8 @@ externalSetupMethod verbosity options pkg bt mkargs = do
index <- case usePackageIndex options' of
Just index -> return index
Nothing -> fromMaybe mempty
- `fmap` getInstalledPackages verbosity comp UserPackageDB conf
- -- user packages are *allowed* here, no portability problem
+ `fmap` getInstalledPackages verbosity
+ comp (usePackageDB options') conf
let cabalDep = Dependency (PackageName "Cabal") (useCabalVersion options)
case PackageIndex.lookupDependency index cabalDep of
@@ -279,7 +281,12 @@ externalSetupMethod verbosity options pkg bt mkargs = do
ghcVerbosityOptions verbosity
++ ["--make", setupHsFile, "-o", setupProgFile
,"-odir", setupDir, "-hidir", setupDir
- ,"-i", "-i" ++ workingDir ]
+ ,"-i", "-i" ++ workingDir ]
+ ++ (case usePackageDB options' of
+ GlobalPackageDB -> ["-no-user-package-conf"]
+ UserPackageDB -> []
+ SpecificPackageDB db -> ["-no-user-package-conf"
+ ,"-package-conf", db])
++ if packageName pkg == PackageName "Cabal"
then []
else ["-package", display cabalPkgid]
More information about the Cvs-libraries
mailing list