[commit: Cabal] master: Added config file fields for all the install dir templates. (68d342f)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:46:06 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/68d342f0258fcf193d0f68a65bad1919f6e23585
>---------------------------------------------------------------
commit 68d342f0258fcf193d0f68a65bad1919f6e23585
Author: bjorn <bjorn at bringert.net>
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
More information about the Cvs-libraries
mailing list