[commit: Cabal] master: Parse compiler field from old config files correctly (4a95132)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:01:59 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/4a951329d57a9df7f9795c3cdb3c4541d3cd938d
>---------------------------------------------------------------
commit 4a951329d57a9df7f9795c3cdb3c4541d3cd938d
Author: Duncan Coutts <duncan at haskell.org>
Date: Fri Jan 16 00:28:51 2009 +0000
Parse compiler field from old config files correctly
Really old versions of cabal-install generated a default config
containing "compiler: GHC". Sadly the new way we generate the
config file parser from the command line parser means we end up
with a case-sensitive parser as it only matches the exact
command line flags. So we hack it and add in a traditional
parser for that field only. Really the command line and config
file infrastructure needs rewriting again. Sigh.
>---------------------------------------------------------------
cabal-install/Distribution/Client/Config.hs | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs
index cd5eda9..101474d 100644
--- a/cabal-install/Distribution/Client/Config.hs
+++ b/cabal-install/Distribution/Client/Config.hs
@@ -46,6 +46,8 @@ import Distribution.ParseUtils
, simpleField, listField, parseFilePathQ, showFilePath, parseTokenQ )
import qualified Distribution.ParseUtils as ParseUtils
( Field(..) )
+import qualified Distribution.Text as Text
+ ( Text(..) )
import Distribution.ReadE
( readP_to_E )
import Distribution.Simple.Command
@@ -74,7 +76,7 @@ import qualified Data.Map as Map
import qualified Distribution.Compat.ReadP as Parse
( option )
import qualified Text.PrettyPrint.HughesPJ as Disp
- ( Doc, render, text, colon, vcat, isEmpty, nest )
+ ( Doc, render, text, colon, vcat, empty, isEmpty, nest )
import Text.PrettyPrint.HughesPJ
( (<>), (<+>), ($$), ($+$) )
import System.Directory
@@ -296,6 +298,13 @@ configFieldDescriptions =
(configureOptions ParseArgs)
(["scratchdir", "configure-option"] ++ map fieldName installDirsFields)
+ --FIXME: this is only here because viewAsFieldDescr gives us a parser
+ -- that only recognises 'ghc' etc, the case-sensitive flag names, not
+ -- what the normal case-insensitive parser gives us.
+ ++ [liftConfigFlag $ simpleField "compiler"
+ (fromFlagOrDefault Disp.empty . fmap Text.disp) (optional Text.parse)
+ configHcFlavor (\v flags -> flags { configHcFlavor = v })]
+
++ toSavedConfig liftUploadFlag
(commandOptions uploadCommand ParseArgs)
["verbose", "check"]
@@ -306,6 +315,7 @@ configFieldDescriptions =
| opt <- options
, let field = viewAsFieldDescr opt
, fieldName field `notElem` excluded ]
+ optional = Parse.option mempty . fmap toFlag
-- TODO: next step, make the deprecated fields elicit a warning.
--
More information about the Cvs-libraries
mailing list