From f1103f8f69939fd70e358ac06c022306b6678afd Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 5 Jul 2015 13:50:10 -0700 Subject: Make cabal require hsb2hs >= 0.3.1. This is done by adding `hookedPrograms` in `Setup.hs`, which allows us to include `hsb2hs` in Build-Tools in cabal. --- Setup.hs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Setup.hs') diff --git a/Setup.hs b/Setup.hs index c28e45fdd..a328c75a7 100644 --- a/Setup.hs +++ b/Setup.hs @@ -23,18 +23,35 @@ import Distribution.PackageDescription (PackageDescription(..), FlagName(..)) import System.Process ( rawSystem ) import System.FilePath ( () ) import System.Directory ( findExecutable ) +import Distribution.Verbosity ( Verbosity ) import Distribution.Simple.Utils (info, notice, installOrdinaryFiles) import Distribution.Simple.Setup +import Distribution.Simple.Program (simpleProgram, Program(..)) import Distribution.Simple.LocalBuildInfo +import Data.Version +import System.Process (readProcess) +import Text.ParserCombinators.ReadP (readP_to_S, skipSpaces, eof) import Control.Monad (when) main :: IO () main = defaultMainWithHooks $ simpleUserHooks { -- enable hsb2hs preprocessor for .hsb files hookedPreProcessors = [ppBlobSuffixHandler] + , hookedPrograms = [(simpleProgram "hsb2hs"){ + programFindVersion = findHsb2hsVersion }] , postCopy = installManPage } +findHsb2hsVersion :: Verbosity -> FilePath -> IO (Maybe Version) +findHsb2hsVersion verb fp = do + outp <- readProcess fp ["--version"] "" + case readP_to_S (do v <- parseVersion + skipSpaces + eof + return v) outp of + ((v,""):_) -> return (Just v) + _ -> return Nothing + ppBlobSuffixHandler :: PPSuffixHandler ppBlobSuffixHandler = ("hsb", \_ lbi -> PreProcessor { -- cgit v1.2.3