[commit: Cabal] master: Filter the configure flags based on the Cabal lib version (e044ace)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:55:14 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/e044acec1fd5e12853ee25b15092fdc34eb70fd8
>---------------------------------------------------------------
commit e044acec1fd5e12853ee25b15092fdc34eb70fd8
Author: Duncan Coutts <duncan at haskell.org>
Date: Fri Jun 6 09:25:03 2008 +0000
Filter the configure flags based on the Cabal lib version
Allows us to use cabal-install to build packages where we build the
Setup.hs script using an older version of the Cabal library.
This is important for packages that claim to need an older version
and it's also pretty useful for testing.
>---------------------------------------------------------------
cabal-install/Hackage/Install.hs | 15 ++++++++-------
cabal-install/Hackage/Setup.hs | 11 +++++++++--
cabal-install/Hackage/SetupWrapper.hs | 8 ++++----
cabal-install/Main.hs | 5 +++--
4 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs
index 338bdf5..6c02b9a 100644
--- a/cabal-install/Hackage/Install.hs
+++ b/cabal-install/Hackage/Install.hs
@@ -35,7 +35,8 @@ import Hackage.Fetch (fetchPackage)
import qualified Hackage.IndexUtils as IndexUtils
import qualified Hackage.InstallPlan as InstallPlan
import Hackage.InstallPlan (InstallPlan)
-import Hackage.Setup (InstallFlags(..))
+import Hackage.Setup
+ ( InstallFlags(..), configureCommand, filterConfigureFlags )
import Hackage.Tar (extractTarGzFile)
import Hackage.Types as Available
( UnresolvedDependency(..), AvailablePackage(..)
@@ -132,7 +133,7 @@ installWithPlanner planner verbosity packageDB repos comp conf configFlags insta
progress <- planner installed available
- info verbosity "Resolving dependencies..."
+ notice verbosity "Resolving dependencies..."
maybePlan <- foldProgress (\message rest -> info verbosity message >> rest)
(return . Left) (return . Right) progress
case maybePlan of
@@ -317,17 +318,17 @@ installUnpackedPackage :: Verbosity
-> IO BuildResult
installUnpackedPackage verbosity scriptOptions miscOptions configFlags pkg mpath
= onFailure ConfigureFailed $ do
- setup configureCommand configFlags
+ setup configureCommand (filterConfigureFlags configFlags)
onFailure BuildFailed $ do
- setup buildCommand Cabal.emptyBuildFlags
+ setup buildCommand (const Cabal.emptyBuildFlags)
onFailure InstallFailed $ do
case rootCmd miscOptions of
(Just cmd) -> reexec cmd
- Nothing -> setup Cabal.installCommand Cabal.emptyInstallFlags
+ Nothing -> setup Cabal.installCommand
+ (const Cabal.emptyInstallFlags)
return BuildOk
where
- configureCommand = Cabal.configureCommand defaultProgramConfiguration
- buildCommand = Cabal.buildCommand defaultProgramConfiguration
+ buildCommand = Cabal.buildCommand defaultProgramConfiguration
setup cmd flags = inDir mpath $
setupWrapper verbosity scriptOptions
(Just $ PackageDescription.packageDescription pkg)
diff --git a/cabal-install/Hackage/Setup.hs b/cabal-install/Hackage/Setup.hs
index 4deb5d9..09b4f5f 100644
--- a/cabal-install/Hackage/Setup.hs
+++ b/cabal-install/Hackage/Setup.hs
@@ -12,7 +12,7 @@
-----------------------------------------------------------------------------
module Hackage.Setup
( globalCommand, Cabal.GlobalFlags(..)
- , configureCommand
+ , configureCommand, filterConfigureFlags
, installCommand, InstallFlags(..)
, listCommand, ListFlags(..)
, updateCommand
@@ -44,7 +44,7 @@ import qualified Distribution.Simple.Setup as Cabal
import Distribution.Simple.Setup
( Flag(..), toFlag, flagToList, trueArg, optionVerbosity )
import Distribution.Version
- ( Version )
+ ( Version(Version) )
import Distribution.Text
( Text(parse), display )
import Distribution.ReadE
@@ -75,6 +75,13 @@ configureCommand = (Cabal.configureCommand defaultProgramConfiguration) {
commandDefaultFlags = mempty
}
+filterConfigureFlags :: Cabal.ConfigFlags -> Version -> Cabal.ConfigFlags
+filterConfigureFlags flags cabalLibVersion
+ | cabalLibVersion >= Version [1,3,10] [] = flags
+ -- older Cabal does not grok the constraints flag:
+ | otherwise = flags { Cabal.configConstraints = [] }
+
+
fetchCommand :: CommandUI (Flag Verbosity)
fetchCommand = CommandUI {
commandName = "fetch",
diff --git a/cabal-install/Hackage/SetupWrapper.hs b/cabal-install/Hackage/SetupWrapper.hs
index 7caae20..a30321a 100644
--- a/cabal-install/Hackage/SetupWrapper.hs
+++ b/cabal-install/Hackage/SetupWrapper.hs
@@ -86,7 +86,7 @@ setupWrapper :: Verbosity
-> SetupScriptOptions
-> Maybe PackageDescription
-> CommandUI flags
- -> flags
+ -> (Version -> flags)
-> [String]
-> IO ()
setupWrapper verbosity options mpkg cmd flags extraArgs = do
@@ -99,7 +99,7 @@ setupWrapper verbosity options mpkg cmd flags extraArgs = do
}
buildType' = fromMaybe Custom (buildType pkg)
mkArgs cabalLibVersion = commandName cmd
- : commandShowOptions cmd flags
+ : commandShowOptions cmd (flags cabalLibVersion)
++ extraArgs
setupMethod verbosity pkg buildType' mkArgs
where
@@ -166,8 +166,6 @@ externalSetupMethod options verbosity pkg bt mkargs = do
case savedVersion of
Just version | version `withinRange` useCabalVersion options
-> return (version, options)
- Nothing | packageName pkg == "Cabal"
- -> return (packageVersion pkg, options)
_ -> do (comp, conf, options') <- configureCompiler options
version <- installedCabalVersion options comp conf
writeFile setupVersionFile (show version ++ "\n")
@@ -181,6 +179,8 @@ externalSetupMethod options verbosity pkg bt mkargs = do
installedCabalVersion :: SetupScriptOptions -> Compiler
-> ProgramConfiguration -> IO Version
+ installedCabalVersion _ _ _ | packageName pkg == "Cabal" =
+ return (packageVersion pkg)
installedCabalVersion options' comp conf = do
index <- case usePackageIndex options' of
Just index -> return index
diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs
index 6bb6578..07c95c2 100644
--- a/cabal-install/Main.hs
+++ b/cabal-install/Main.hs
@@ -121,7 +121,8 @@ wrapperAction command verbosityFlag distPrefFlag =
(useDistPref defaultSetupScriptOptions)
(distPrefFlag flags)
}
- setupWrapper verbosity setupScriptOptions Nothing command flags extraArgs
+ setupWrapper verbosity setupScriptOptions Nothing
+ command (const flags) extraArgs
configureAction :: Cabal.ConfigFlags -> [String] -> IO ()
configureAction flags extraArgs = do
@@ -139,7 +140,7 @@ configureAction flags extraArgs = do
(Cabal.configDistPref flags)
}
setupWrapper verbosity setupScriptOptions Nothing
- configureCommand flags' extraArgs
+ configureCommand (const flags') extraArgs
installAction :: (Cabal.ConfigFlags, InstallFlags) -> [String] -> IO ()
installAction (cflags,iflags) _
More information about the Cvs-libraries
mailing list