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

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/68d342f0258fcf193d0f68a65bad1919f6e23585

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

commit 68d342f0258fcf193d0f68a65bad1919f6e23585
Author: bjorn <[email protected]>
Date:   Sun Oct 7 09:47:03 2007 +0000

    Added config file fields for all the install dir templates.

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

 .../src/Network/Hackage/CabalInstall/Config.hs     |   27 +++++++++++++------
 .../src/Network/Hackage/CabalInstall/Utils.hs      |    2 +-
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Config.hs 
b/cabal-install/src/Network/Hackage/CabalInstall/Config.hs
index b8cdeb6..cb7d826 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Config.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Config.hs
@@ -46,10 +46,10 @@ import Distribution.Package (PackageIdentifier(..), 
showPackageId)
 import Distribution.PackageDescription (GenericPackageDescription(..)
                                        , PackageDescription(..)
                                        , parsePackageDescription, 
ParseResult(..))
-import Distribution.ParseUtils (FieldDescr, simpleField, listField)
+import Distribution.ParseUtils (FieldDescr, simpleField, listField, liftField, 
field)
 import Distribution.Simple.Compiler (Compiler)
 import qualified Distribution.Simple.Configure as Configure (configCompiler)
-import Distribution.Simple.InstallDirs (InstallDirTemplates(..), 
defaultInstallDirs)
+import Distribution.Simple.InstallDirs (InstallDirTemplates(..), PathTemplate, 
defaultInstallDirs)
 import Distribution.Simple.Program (ProgramConfiguration, 
defaultProgramConfiguration)
 import Distribution.Version (Dependency, showVersion)
 import Distribution.Verbosity
@@ -208,9 +208,15 @@ writeDefaultConfigFile file cfg =
 -- | All config file fields.
 configFieldDescrs :: [FieldDescr ConfigFlags]
 configFieldDescrs =
-    [ 
+    [ installDirField "bindir" binDirTemplate (\d ds -> ds { binDirTemplate = 
d })
+    , installDirField "libdir" libDirTemplate (\d ds -> ds { libDirTemplate = 
d })
+    , installDirField "libexecdir" libexecDirTemplate (\d ds -> ds { 
libexecDirTemplate = d })
+    , installDirField "datadir" dataDirTemplate (\d ds -> ds { dataDirTemplate 
= d })
+    , installDirField "docdir" docDirTemplate (\d ds -> ds { docDirTemplate = 
d })
+    , installDirField "htmldir" htmlDirTemplate (\d ds -> ds { htmlDirTemplate 
= d })
     ] ++ configWriteFieldDescrs
 
+
 -- | The subset of the config file fields that we write out
 -- if the config file is missing.
 configWriteFieldDescrs :: [FieldDescr ConfigFlags]
@@ -225,14 +231,17 @@ configWriteFieldDescrs =
                 (text . show)                  (readS_to_P reads)
                 configCacheDir    (\d cfg -> cfg { configCacheDir = d })
     , boolField "user-install" configUserInstall (\u cfg -> cfg { 
configUserInstall = u })
-    , simpleField "prefix"
-                (text . show)  (readS_to_P reads) 
-                (prefixDirTemplate . configInstallDirs) (\d -> setInstallDir 
(\ds -> ds { prefixDirTemplate = d }))
+    , installDirField "prefix" prefixDirTemplate (\d ds -> ds { 
prefixDirTemplate = d })
     ] 
 
-setInstallDir :: (InstallDirTemplates -> InstallDirTemplates) -> ConfigFlags 
-> ConfigFlags
-setInstallDir f cfg = cfg { configInstallDirs = f (configInstallDirs cfg) }
-
+installDirField :: String 
+                -> (InstallDirTemplates -> PathTemplate) 
+                -> (PathTemplate -> InstallDirTemplates -> InstallDirTemplates)
+                -> FieldDescr ConfigFlags
+installDirField name get set = 
+    liftField (get . configInstallDirs) 
+               (\d cfg -> cfg { configInstallDirs = set d (configInstallDirs 
cfg) }) $
+               field name (text . show) (readS_to_P reads)
 
 parseCompilerFlavor :: ReadP r CompilerFlavor
 parseCompilerFlavor = 
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Utils.hs 
b/cabal-install/src/Network/Hackage/CabalInstall/Utils.hs
index 97b836f..ff7bab4 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Utils.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Utils.hs
@@ -1,6 +1,6 @@
 module Network.Hackage.CabalInstall.Utils where
 
-import Distribution.Compat.ReadP (ReadP, readP_to_S, pfail, get, look, choice)
+import Distribution.Compat.ReadP (ReadP, readP_to_S, readS_to_P, pfail, get, 
look, choice)
 import Distribution.ParseUtils
 import Distribution.Verbosity
 import Network.Hackage.CabalInstall.Types



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

Reply via email to