aboutsummaryrefslogtreecommitdiff
path: root/Setup.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-03-26 17:22:00 +0200
committerJohn MacFarlane <jgm@berkeley.edu>2017-03-26 17:22:00 +0200
commit10d91c147968d2e4d63b99b5b0342624827f416f (patch)
tree3a739ffa0b56d3fa6b5e1524820a79031a996e67 /Setup.hs
parent604c824d38f255dd44fec9bb69052002b5a59495 (diff)
downloadpandoc-10d91c147968d2e4d63b99b5b0342624827f416f.tar.gz
Use file-embed instead of hsb2hs to embed data files.
I think template haskell is robust enough now across platforms that this will work. Motivation: file-embed gives us better dependency tracking: if a data file changes, ghc/stack/cabal know to recompile the Data module. This also removes hsb2hs as a build dependency.
Diffstat (limited to 'Setup.hs')
-rw-r--r--Setup.hs28
1 files changed, 2 insertions, 26 deletions
diff --git a/Setup.hs b/Setup.hs
index bc6651942..3f6bb2858 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -20,41 +20,17 @@ 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 (info, notice, installOrdinaryFiles)
+import Distribution.Simple.Utils (notice, installOrdinaryFiles)
import Distribution.Simple.Program (simpleProgram, Program(..))
import Distribution.Simple.LocalBuildInfo
import Control.Monad (when)
main :: IO ()
main = defaultMainWithHooks $ simpleUserHooks {
- -- enable hsb2hs preprocessor for .hsb files
- hookedPreProcessors = [ppBlobSuffixHandler]
- , hookedPrograms = [(simpleProgram "hsb2hs"){
- programFindVersion = \verbosity fp ->
- findProgramVersion "--version" id verbosity fp }]
- , postCopy = installManPage
+ 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