git.iko.soy/typeable/pandoc
on master help sign in
Revert "Revert "Use file-embed instead of hsb2hs to embed data files.""
ff991d1John MacFarlane
INSTALL.md−3
@@ -226,9 +226,6 @@ assume that the pandoc source directory is your working directory.
226
226
227 - `embed_data_files`: embed all data files into the binary (default no).
227 - `embed_data_files`: embed all data files into the binary (default no).
228 This is helpful if you want to create a relocatable binary.
228 This is helpful if you want to create a relocatable binary.
229− Note: if this option is selected, you need to install the
230− `hsb2hs` preprocessor: `cabal install hsb2hs` (version 0.3.1 or
231− higher is required).
232
229
233 - `https`: enable support for downloading resources over https
230 - `https`: enable support for downloading resources over https
234 (using the `http-client` and `http-client-tls` libraries).
231 (using the `http-client` and `http-client-tls` libraries).
Setup.hs+2−26
@@ -20,41 +20,17 @@ import Distribution.Simple
20import Distribution.Simple.PreProcess
20import Distribution.Simple.PreProcess
21import Distribution.Simple.Setup (ConfigFlags(..), CopyFlags(..), fromFlag)
21import Distribution.Simple.Setup (ConfigFlags(..), CopyFlags(..), fromFlag)
22import Distribution.PackageDescription (PackageDescription(..), FlagName(..))
22import Distribution.PackageDescription (PackageDescription(..), FlagName(..))
23−import Distribution.Simple.Utils ( rawSystemExitCode, findProgramVersion )
24import System.Exit
23import System.Exit
25−import Distribution.Simple.Utils (info, notice, installOrdinaryFiles)
24+import Distribution.Simple.Utils (notice, installOrdinaryFiles)
26import Distribution.Simple.Program (simpleProgram, Program(..))
25import Distribution.Simple.Program (simpleProgram, Program(..))
27import Distribution.Simple.LocalBuildInfo
26import Distribution.Simple.LocalBuildInfo
28import Control.Monad (when)
27import Control.Monad (when)
29
28
30main :: IO ()
29main :: IO ()
31main = defaultMainWithHooks $ simpleUserHooks {
30main = defaultMainWithHooks $ simpleUserHooks {
32− -- enable hsb2hs preprocessor for .hsb files
33− hookedPreProcessors = [ppBlobSuffixHandler]
34− , hookedPrograms = [(simpleProgram "hsb2hs"){
35− programFindVersion = \verbosity fp ->
36− findProgramVersion "--version" id verbosity fp }]
37− , postCopy = installManPage
31+ postCopy = installManPage
38 }
32 }
39
33
40−ppBlobSuffixHandler :: PPSuffixHandler
41−ppBlobSuffixHandler = ("hsb", \_ lbi ->
42− PreProcessor {
43− platformIndependent = True,
44− runPreProcessor = mkSimplePreProcessor $ \infile outfile verbosity ->
45− do let embedData = case lookup (FlagName "embed_data_files")
46− (configConfigurationsFlags (configFlags lbi)) of
47− Just True -> True
48− _ -> False
49− when embedData $
50− do info verbosity $ "Preprocessing " ++ infile ++ " to " ++ outfile
51− ec <- rawSystemExitCode verbosity "hsb2hs"
52− [infile, infile, outfile]
53− case ec of
54− ExitSuccess -> return ()
55− ExitFailure _ -> error "hsb2hs is needed to build this program"
56− })
57−
58installManPage :: Args -> CopyFlags
34installManPage :: Args -> CopyFlags
59 -> PackageDescription -> LocalBuildInfo -> IO ()
35 -> PackageDescription -> LocalBuildInfo -> IO ()
60installManPage _ flags pkg lbi = do
36installManPage _ flags pkg lbi = do
linux/Dockerfile−1
@@ -14,7 +14,6 @@ RUN mkdir -p /usr/src/
14WORKDIR /usr/src/
14WORKDIR /usr/src/
15RUN git clone https://github.com/jgm/pandoc
15RUN git clone https://github.com/jgm/pandoc
16WORKDIR /usr/src/pandoc
16WORKDIR /usr/src/pandoc
17−RUN stack install --local-bin-path /usr/bin hsb2hs
18RUN stack install --stack-yaml stack.pkg.yaml --only-dependencies \
17RUN stack install --stack-yaml stack.pkg.yaml --only-dependencies \
19 --flag 'pandoc:embed_data_files' \
18 --flag 'pandoc:embed_data_files' \
20 --test --ghc-options '-O2 -optc-Os -optl-static -fPIC' \
19 --test --ghc-options '-O2 -optc-Os -optl-static -fPIC' \
macos/make_macos_package.sh−3
@@ -14,8 +14,6 @@ PACKAGEMAKER=/Applications/PackageMaker.app/Contents/MacOS/PackageMaker
14DEVELOPER_ID_APPLICATION=${DEVELOPER_ID_APPLICATION:-Developer ID Application: John Macfarlane}
14DEVELOPER_ID_APPLICATION=${DEVELOPER_ID_APPLICATION:-Developer ID Application: John Macfarlane}
15DEVELOPER_ID_INSTALLER=${DEVELOPER_ID_INSTALLER:-Developer ID Installer: John Macfarlane}
15DEVELOPER_ID_INSTALLER=${DEVELOPER_ID_INSTALLER:-Developer ID Installer: John Macfarlane}
16
16
17−# We need this for hsb2hs:
18−PATH=$LOCALBIN:$PATH
19export MACMACOS_DEPLOYMENT_TARGET=10.7
17export MACMACOS_DEPLOYMENT_TARGET=10.7
20
18
21# echo Removing old files...
19# echo Removing old files...
@@ -23,7 +21,6 @@ rm -rf $DIST
23mkdir -p $DIST
21mkdir -p $DIST
24mkdir -p $RESOURCES
22mkdir -p $RESOURCES
25stack setup
23stack setup
26−which hsb2hs || stack install hsb2hs
27which cpphs || stack install cpphs
24which cpphs || stack install cpphs
28
25
29echo Building pandoc...
26echo Building pandoc...
pandoc.cabal+1−1
@@ -340,7 +340,7 @@ Library
340 cpp-options: -DHTTP_CLIENT
340 cpp-options: -DHTTP_CLIENT
341 if flag(embed_data_files)
341 if flag(embed_data_files)
342 cpp-options: -DEMBED_DATA_FILES
342 cpp-options: -DEMBED_DATA_FILES
343− Build-Tools: hsb2hs >= 0.3.1
343+ build-depends: file-embed >= 0.0 && < 0.1
344 other-modules: Text.Pandoc.Data
344 other-modules: Text.Pandoc.Data
345 if os(darwin)
345 if os(darwin)
346 Build-Tools: cpphs >= 1.19
346 Build-Tools: cpphs >= 1.19
src/Text/Pandoc/Data.hsb → src/Text/Pandoc/Data.hsrenamed+5−4
@@ -1,6 +1,8 @@
1−{-# LANGUAGE OverloadedStrings #-}
1+{-# LANGUAGE TemplateHaskell #-}
2−-- to be processed using hsb2hs
2+
3module Text.Pandoc.Data (dataFiles) where
3module Text.Pandoc.Data (dataFiles) where
4+
5+import Data.FileEmbed
4import qualified Data.ByteString as B
6import qualified Data.ByteString as B
5import System.FilePath (splitDirectories)
7import System.FilePath (splitDirectories)
6import qualified System.FilePath.Posix as Posix
8import qualified System.FilePath.Posix as Posix
@@ -12,5 +14,4 @@ dataFiles = map (\(fp, contents) ->
12 (Posix.joinPath (splitDirectories fp), contents)) dataFiles'
14 (Posix.joinPath (splitDirectories fp), contents)) dataFiles'
13
15
14dataFiles' :: [(FilePath, B.ByteString)]
16dataFiles' :: [(FilePath, B.ByteString)]
15−dataFiles' = ("MANUAL.txt", %blob "MANUAL.txt") : %blobs "data"
17+dataFiles' = ("MANUAL.txt", $(embedFile "MANUAL.txt")) : $(embedDir "data")
16−