[commit: Cabal] master: Read install dirs correctly from old-style .cabal/config files (f45516f)

Ian Lynagh igloo at earth.li
Fri Jun 24 02:01:55 CEST 2011


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

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/f45516f5e8c1eb80c0990142bb3cc90ce924b492

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

commit f45516f5e8c1eb80c0990142bb3cc90ce924b492
Author: Duncan Coutts <duncan at haskell.org>
Date:   Fri Jan 16 00:13:21 2009 +0000

    Read install dirs correctly from old-style .cabal/config files
    Should fix ticket #365

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

 cabal-install/Distribution/Client/Config.hs |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs
index bf062c6..b785b51 100644
--- a/cabal-install/Distribution/Client/Config.hs
+++ b/cabal-install/Distribution/Client/Config.hs
@@ -43,11 +43,11 @@ import Distribution.ParseUtils
          ( FieldDescr(..), liftField
          , ParseResult(..), locatedErrorMsg, showPWarning
          , readFields, warning, lineNo
-         , simpleField, listField, parseFilePathQ, parseTokenQ )
+         , simpleField, listField, parseFilePathQ, showFilePath, parseTokenQ )
 import qualified Distribution.ParseUtils as ParseUtils
          ( Field(..) )
 import Distribution.ReadE
-         ( succeedReadE )
+         ( readP_to_E )
 import Distribution.Simple.Command
          ( CommandUI(commandOptions), commandDefaultFlags, ShowOrParseArgs(..)
          , viewAsFieldDescr, OptionField, option, reqArg )
@@ -368,7 +368,9 @@ parseConfig initial = \str -> do
   fields <- readFields str
   let (knownSections, others) = partition isKnownSection fields
   config <- parse others
-  (user, global) <- foldM parseSections (mempty, mempty) knownSections
+  let user0   = savedUserInstallDirs config
+      global0 = savedGlobalInstallDirs config
+  (user, global) <- foldM parseSections (user0, global0) knownSections
   return config {
     savedUserInstallDirs   = user,
     savedGlobalInstallDirs = global
@@ -506,4 +508,6 @@ installDirsOptions =
       reqArgFlag "DIR" _sf _lf d
         (fmap fromPathTemplate . get) (set . fmap toPathTemplate)
 
-    reqArgFlag ad = reqArg ad (succeedReadE toFlag) flagToList
+    reqArgFlag ad = reqArg ad (fmap toFlag (readP_to_E err parseFilePathQ))
+                              (map (show . showFilePath) . flagToList)
+      where err _ = "paths with spaces must use Haskell String syntax"





More information about the Cvs-libraries mailing list