diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-03-26 20:48:17 +0200 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-03-26 20:48:17 +0200 |
commit | 1fa15c225b515e1fa1c6566f90f1be363a4d770f (patch) | |
tree | 9d0037db4ed5b68e65ba5e55f85e1533e2287d55 /Setup.hs | |
parent | d0447151cf48d8da5fe251e4d3eb6a4fd0f05490 (diff) |
Revert "Use file-embed instead of hsb2hs to embed data files."
This reverts commit 10d91c147968d2e4d63b99b5b0342624827f416f.
Diffstat (limited to 'Setup.hs')
-rw-r--r-- | Setup.hs | 28 |
1 files changed, 26 insertions, 2 deletions
@@ -20,17 +20,41 @@ import Distribution.Simple import Distribution.Simple.PreProcess import Distribution.Simple.Setup (ConfigFlags(..), CopyFlags(..), fromFlag) import Distribution.PackageDescription (PackageDescription(..), FlagName(..)) +import Distribution.Simple.Utils ( rawSystemExitCode, findProgramVersion ) import System.Exit -import Distribution.Simple.Utils (notice, installOrdinaryFiles) +import Distribution.Simple.Utils (info, notice, installOrdinaryFiles) import Distribution.Simple.Program (simpleProgram, Program(..)) import Distribution.Simple.LocalBuildInfo import Control.Monad (when) main :: IO () main = defaultMainWithHooks $ simpleUserHooks { - postCopy = installManPage + -- enable hsb2hs preprocessor for .hsb files + hookedPreProcessors = [ppBlobSuffixHandler] + , hookedPrograms = [(simpleProgram "hsb2hs"){ + programFindVersion = \verbosity fp -> + findProgramVersion "--version" id verbosity fp }] + , postCopy = installManPage } +ppBlobSuffixHandler :: PPSuffixHandler +ppBlobSuffixHandler = ("hsb", \_ lbi -> + PreProcessor { + platformIndependent = True, + runPreProcessor = mkSimplePreProcessor $ \infile outfile verbosity -> + do let embedData = case lookup (FlagName "embed_data_files") + (configConfigurationsFlags (configFlags lbi)) of + Just True -> True + _ -> False + when embedData $ + do info verbosity $ "Preprocessing " ++ infile ++ " to " ++ outfile + ec <- rawSystemExitCode verbosity "hsb2hs" + [infile, infile, outfile] + case ec of + ExitSuccess -> return () + ExitFailure _ -> error "hsb2hs is needed to build this program" + }) + installManPage :: Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO () installManPage _ flags pkg lbi = do |