summaryrefslogtreecommitdiff
path: root/Setup.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-03-26 20:48:17 +0200
committerJohn MacFarlane <jgm@berkeley.edu>2017-03-26 20:48:17 +0200
commit1fa15c225b515e1fa1c6566f90f1be363a4d770f (patch)
tree9d0037db4ed5b68e65ba5e55f85e1533e2287d55 /Setup.hs
parentd0447151cf48d8da5fe251e4d3eb6a4fd0f05490 (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.hs28
1 files changed, 26 insertions, 2 deletions
diff --git a/Setup.hs b/Setup.hs
index 3f6bb2858..bc6651942 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -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