import Control.Monad (when) import Language.Haskell.TH import Distribution.Simple (defaultMainWithHooks, simpleUserHooks, UserHooks(postConf), Args) import Distribution.Simple.Utils (cabalVersion) import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Setup (ConfigFlags) import Distribution.Version (Version(..)) import Distribution.PackageDescription (PackageDescription) import Debug.Trace -- I couldn't figure out a way to do this check from the cabal file, so we drop down -- here to do it instead: checkGoodVersion :: IO () checkGoodVersion = if cabalVersion >= Version [1,17,0] [] then putStrLn (" [Setup.hs] This version of Cabal is ok for profiling: "++show cabalVersion) else error (" [Setup.hs] This package should not be used in profiling mode with cabal version "++ show (versionBranch cabalVersion)++" < 1.17.0\n"++ " It will break, see cabal issue #1284") main :: IO () main = do let myPostConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO () myPostConf _args confFlags _descr lbi = when (withProfLib lbi) checkGoodVersion hooks = simpleUserHooks { postConf = myPostConf } defaultMainWithHooks hooks