Permalink
Browse files

Setup.hs: Better way of handling man page building.

Previously we tried to remove make-pandoc-man-pages from the list
of packages to be haddocked, installed, copied, etc.

It works better to set 'Buildable: False' on make-pandoc-man-pages,
then have the buildHook temporarily set Buildable to True.  This
allows make-pandoc-man-pages to be built (and used in generating
the man pages), but not installed.
  • Loading branch information...
John MacFarlane
John MacFarlane committed Oct 7, 2013
1 parent dbd4aee commit ed061b91c8e3247e1d3b1538eca24687adf0e575
Showing with 12 additions and 9 deletions.
  1. +9 −8 Setup.hs
  2. +3 −1 pandoc.cabal
View
@@ -4,7 +4,7 @@ import Distribution.Simple
import Distribution.Simple.PreProcess
import Distribution.Simple.Setup
(copyDest, copyVerbosity, fromFlag, installVerbosity, BuildFlags(..))
-import Distribution.PackageDescription (PackageDescription(..), Executable(..))
+import Distribution.PackageDescription (PackageDescription(..), Executable(..), BuildInfo(..))
import Distribution.Simple.LocalBuildInfo
(LocalBuildInfo(..), absoluteInstallDirs)
import Distribution.Verbosity ( Verbosity, silent )
@@ -19,18 +19,19 @@ import System.Exit
main :: IO ()
main = do
defaultMainWithHooks $ simpleUserHooks {
- postBuild = makeManPages
+ buildHook = \pkgdescr ->
+ (buildHook simpleUserHooks) pkgdescr{ executables =
+ [x | x <- executables pkgdescr,
+ exeName x /= "make-pandoc-man-pages"] ++
+ [x{ buildInfo = (buildInfo x){ buildable = True } }
+ | x <- executables pkgdescr,
+ exeName x == "make-pandoc-man-pages"] }
+ , postBuild = makeManPages
, postCopy = \ _ flags pkg lbi ->
installManpages pkg lbi (fromFlag $ copyVerbosity flags)
(fromFlag $ copyDest flags)
, postInst = \ _ flags pkg lbi ->
installManpages pkg lbi (fromFlag $ installVerbosity flags) NoCopyDest
- , copyHook = \pkgdescr ->
- (copyHook simpleUserHooks) pkgdescr{ executables =
- [x | x <- executables pkgdescr, exeName x /= "make-pandoc-man-pages"] }
- , instHook = \pkgdescr ->
- (instHook simpleUserHooks) pkgdescr{ executables =
- [x | x <- executables pkgdescr, exeName x /= "make-pandoc-man-pages"] }
, hookedPreProcessors = [ppBlobSuffixHandler]
}
exitWith ExitSuccess
View
@@ -361,10 +361,12 @@ Executable pandoc
Main-Is: pandoc.hs
Buildable: True
--- NOTE: A trick in Setup.hs makes sure this won't be installed:
Executable make-pandoc-man-pages
Main-Is: make-pandoc-man-pages.hs
Hs-Source-Dirs: man
+ Buildable: False
+ -- Setup.hs will make this look buildable in build phase,
+ -- but it won't be copied/installed
Build-Depends: pandoc,
base >= 4.2 && < 5,
directory >= 1 && < 1.3,

0 comments on commit ed061b9

Please sign in to comment.