gsmenu-1.1: Setup.hs
#!/usr/bin/env runhaskell
import Distribution.Simple.Setup (CopyDest(..),ConfigFlags(..),BuildFlags(..),
CopyFlags(..),RegisterFlags(..),InstallFlags(..),
defaultRegisterFlags,fromFlagOrDefault,Flag(..),
defaultCopyFlags)
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
(LocalBuildInfo(..),absoluteInstallDirs)
import Distribution.Simple.Configure (configCompilerAux)
import Distribution.PackageDescription (PackageDescription(..))
import Distribution.Simple.InstallDirs
(InstallDirs(..))
import Distribution.Simple.Program
(Program(..),ConfiguredProgram(..),ProgramConfiguration(..),
ProgramLocation(..),simpleProgram,lookupProgram,
rawSystemProgramConf)
import Distribution.Simple.Utils
import Distribution.Verbosity
import Data.Char (isSpace, showLitChar)
import Data.List (isSuffixOf,isPrefixOf)
import Data.Maybe (listToMaybe,isJust)
import Data.Version
import Control.Monad (when,unless)
import Text.ParserCombinators.ReadP (readP_to_S)
import System.Exit
import System.IO (hGetContents,hClose,hPutStr,stderr)
import System.IO.Error (try)
import System.Process (runInteractiveProcess,waitForProcess)
import System.Posix
import System.Directory
import System.Info (os)
import System.FilePath
main = defaultMainWithHooks gsmenuHooks
gsmenuHooks = simpleUserHooks { postInst = gsmenuPostInst
, postCopy = gsmenuPostCopy }
gsmenu = "gsmenu"
isWindows :: Bool
isWindows = os == "mingw" -- XXX
gsmenuPostInst a (InstallFlags { installPackageDB = db, installVerbosity = v }) pd lbi =
do gsmenuPostCopy a (defaultCopyFlags { copyDest = Flag NoCopyDest, copyVerbosity = v }) pd lbi
gsmenuPostCopy a (CopyFlags { copyDest = cdf, copyVerbosity = vf }) pd lbi =
do let v = fromFlagOrDefault normal vf
cd = fromFlagOrDefault NoCopyDest cdf
dirs = absoluteInstallDirs pd lbi cd
bin = combine (bindir dirs)
when (not isWindows) $ do
copyFileVerbose v ("gsmenu_path") (bin "gsmenu_path")
fs <- getFileStatus (bin "gsmenu")
setFileMode (bin "gsmenu_path") $ fileMode fs
putStrLn $ "Installing manpage in " ++ mandir dirs
createDirectoryIfMissing True $ mandir dirs
copyFileVerbose v ("gsmenu.1") (mandir dirs `combine` "man1" `combine` "gsmenu.1")