import Distribution.Simple import Distribution.Simple.Setup (fromFlag, configVerbosity, buildVerbosity) import Distribution.Simple.Utils (rawSystemExit) import Distribution.Verbosity (Verbosity) main = defaultMainWithHooks myhooks where hook = simpleUserHooks myhooks = hook { -- apply hsc patches preBuild = \a f -> do patch Apply $ fromFlag $ buildVerbosity f preBuild hook a f -- undo patches , postBuild = \a f d i -> do patch UnApply $ fromFlag $ buildVerbosity f postBuild hook a f d i } data PatchDirection = Apply | UnApply toShellFlags :: PatchDirection -> [String] toShellFlags Apply = [] toShellFlags UnApply = ["-R"] patch :: PatchDirection -> Verbosity -> IO () patch d v = rawSystemExit v "./apply-patches.sh" $ toShellFlags d