Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/46ef42b79c4dbcb844863e48ac77ae9557f5e852

>---------------------------------------------------------------

commit 46ef42b79c4dbcb844863e48ac77ae9557f5e852
Author: Duncan Coutts <[email protected]>
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) _



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to