From c0b63100d5a8aea2731e883baff8cf9587cc13eb Mon Sep 17 00:00:00 2001 From: John Ericson <Ericson2314@Yahoo.com> Date: Sat, 12 Nov 2016 12:12:53 -0800 Subject: [PATCH] Add "build-tool-depends" field to `BuildInfo` and parse it (with caveat) A lack of ":exename" is susposed to indicate all exe components of the package, but this complicates parsing so I'm punting for now: an explicit component name is required. --- Cabal/Distribution/PackageDescription/Parse.hs | 3 +++ Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs | 3 +++ Cabal/Distribution/Types/BuildInfo.hs | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/Cabal/Distribution/PackageDescription/Parse.hs b/Cabal/Distribution/PackageDescription/Parse.hs index 8a62f09af4..ed27965668 100644 --- a/Cabal/Distribution/PackageDescription/Parse.hs +++ b/Cabal/Distribution/PackageDescription/Parse.hs @@ -418,6 +418,9 @@ binfoFieldDescrs = , commaListField "build-tools" disp parse buildTools (\xs binfo -> binfo{buildTools=xs}) + , commaListField "build-tool-depends" + disp parse + toolDepends (\xs binfo -> binfo{toolDepends=xs}) , commaListFieldWithSep vcat "build-depends" disp parse targetBuildDepends (\xs binfo -> binfo{targetBuildDepends=xs}) diff --git a/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs b/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs index f6a4b3aa9e..de6a86bfca 100644 --- a/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs +++ b/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs @@ -423,6 +423,9 @@ binfoFieldDescrs = , commaListField "build-tools" disp parsec buildTools (\xs binfo -> binfo{buildTools=xs}) + , commaListField "build-tool-depends" + disp parsec + toolDepends (\xs binfo -> binfo{toolDepends=xs}) , commaListFieldWithSep vcat "build-depends" disp parsec targetBuildDepends (\xs binfo -> binfo{targetBuildDepends=xs}) diff --git a/Cabal/Distribution/Types/BuildInfo.hs b/Cabal/Distribution/Types/BuildInfo.hs index f1528801bc..8e30ca0619 100644 --- a/Cabal/Distribution/Types/BuildInfo.hs +++ b/Cabal/Distribution/Types/BuildInfo.hs @@ -19,6 +19,7 @@ import Distribution.Compat.Prelude import Distribution.Types.Mixin import Distribution.Types.Dependency +import Distribution.Types.ExeDependency import Distribution.Types.LegacyExeDependency import Distribution.Types.PkgconfigDependency @@ -30,6 +31,7 @@ import Language.Haskell.Extension data BuildInfo = BuildInfo { buildable :: Bool, -- ^ component is buildable here buildTools :: [LegacyExeDependency], -- ^ tools needed to build this bit + toolDepends :: [ExeDependency], -- ^ haskell tools needed to build this bit cppOptions :: [String], -- ^ options for pre-processing Haskell code ccOptions :: [String], -- ^ options for C compiler ldOptions :: [String], -- ^ options for linker @@ -71,6 +73,7 @@ instance Monoid BuildInfo where mempty = BuildInfo { buildable = True, buildTools = [], + toolDepends = [], cppOptions = [], ccOptions = [], ldOptions = [], @@ -106,6 +109,7 @@ instance Semigroup BuildInfo where a <> b = BuildInfo { buildable = buildable a && buildable b, buildTools = combine buildTools, + toolDepends = combine toolDepends, cppOptions = combine cppOptions, ccOptions = combine ccOptions, ldOptions = combine ldOptions, -- GitLab