|
Packit |
47c06b |
import Distribution.PackageDescription ( PackageDescription )
|
|
Packit |
47c06b |
import Distribution.Simple ( defaultMainWithHooks
|
|
Packit |
47c06b |
, simpleUserHooks
|
|
Packit |
47c06b |
, postBuild
|
|
Packit |
47c06b |
, postCopy
|
|
Packit |
47c06b |
, postInst
|
|
Packit |
47c06b |
)
|
|
Packit |
47c06b |
import Distribution.Simple.InstallDirs ( mandir
|
|
Packit |
47c06b |
, CopyDest (NoCopyDest)
|
|
Packit |
47c06b |
)
|
|
Packit |
47c06b |
import Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..)
|
|
Packit |
47c06b |
, absoluteInstallDirs
|
|
Packit |
47c06b |
)
|
|
Packit |
47c06b |
import Distribution.Simple.Utils ( installOrdinaryFiles
|
|
Packit |
47c06b |
, notice )
|
|
Packit |
47c06b |
import Distribution.Simple.Setup ( buildVerbosity
|
|
Packit |
47c06b |
, copyDest
|
|
Packit |
47c06b |
, copyVerbosity
|
|
Packit |
47c06b |
, fromFlag
|
|
Packit |
47c06b |
, installVerbosity
|
|
Packit |
47c06b |
)
|
|
Packit |
47c06b |
import Distribution.Verbosity ( Verbosity )
|
|
Packit |
47c06b |
|
|
Packit |
47c06b |
import System.IO ( openFile
|
|
Packit |
47c06b |
, IOMode (WriteMode)
|
|
Packit |
47c06b |
)
|
|
Packit |
47c06b |
import System.Process ( runProcess )
|
|
Packit |
47c06b |
import System.FilePath ( () )
|
|
Packit |
47c06b |
|
|
Packit |
47c06b |
-- WARNING to editors of this file:
|
|
Packit |
47c06b |
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Packit |
47c06b |
-- At this moment (Cabal 1.23), whatever you write here must be
|
|
Packit |
47c06b |
-- compatible with ALL Cabal libraries which we support bootstrapping
|
|
Packit |
47c06b |
-- with. This is because pre-setup-depends versions of cabal-install will
|
|
Packit |
47c06b |
-- build Setup.hs against the version of Cabal which MATCHES the library
|
|
Packit |
47c06b |
-- that cabal-install was built against. There is no way of overriding
|
|
Packit |
47c06b |
-- this behavior without bumping the required 'cabal-version' in our
|
|
Packit |
47c06b |
-- Cabal file. Travis will let you know if we fail to install from
|
|
Packit |
47c06b |
-- tarball!
|
|
Packit |
47c06b |
|
|
Packit |
47c06b |
main :: IO ()
|
|
Packit |
47c06b |
main = defaultMainWithHooks $ simpleUserHooks
|
|
Packit |
47c06b |
{ postBuild = \ _ flags _ lbi ->
|
|
Packit |
47c06b |
buildManpage lbi (fromFlag $ buildVerbosity flags)
|
|
Packit |
47c06b |
, postCopy = \ _ flags pkg lbi ->
|
|
Packit |
47c06b |
installManpage pkg lbi (fromFlag $ copyVerbosity flags) (fromFlag $ copyDest flags)
|
|
Packit |
47c06b |
, postInst = \ _ flags pkg lbi ->
|
|
Packit |
47c06b |
installManpage pkg lbi (fromFlag $ installVerbosity flags) NoCopyDest
|
|
Packit |
47c06b |
}
|
|
Packit |
47c06b |
|
|
Packit |
47c06b |
buildManpage :: LocalBuildInfo -> Verbosity -> IO ()
|
|
Packit |
47c06b |
buildManpage lbi verbosity = do
|
|
Packit |
47c06b |
let cabal = buildDir lbi "cabal/cabal"
|
|
Packit |
47c06b |
manpage = buildDir lbi "cabal/cabal.1"
|
|
Packit |
47c06b |
manpageHandle <- openFile manpage WriteMode
|
|
Packit |
47c06b |
notice verbosity ("Generating manual page " ++ manpage ++ " ...")
|
|
Packit |
47c06b |
_ <- runProcess cabal ["manpage"] Nothing Nothing Nothing (Just manpageHandle) Nothing
|
|
Packit |
47c06b |
return ()
|
|
Packit |
47c06b |
|
|
Packit |
47c06b |
installManpage :: PackageDescription -> LocalBuildInfo -> Verbosity -> CopyDest -> IO ()
|
|
Packit |
47c06b |
installManpage pkg lbi verbosity copy = do
|
|
Packit |
47c06b |
let destDir = mandir (absoluteInstallDirs pkg lbi copy) "man1"
|
|
Packit |
47c06b |
installOrdinaryFiles verbosity destDir [(buildDir lbi "cabal", "cabal.1")]
|