It's possible to use a SimpelUserHook setup type, and then in Setup.hs add preBuild hook that will generate a file in ./dist/autobuild/, then you can import this file in Main.hs and use this information. I have used such Setup.hs (have not reviewed it for years), I think it may be improved. ``` import Distribution.Simple import Distribution.Simple.Setup import Data.Time.LocalTime import Distribution.PackageDescription (emptyHookedBuildInfo) import System.Directory (createDirectoryIfMissing, doesDirectoryExist) import System.Process (readProcess) main = defaultMainWithHooks (simpleUserHooks{ preBuild=addGitVersion }) addGitVersion _ buildFlags = do let Flag dir = buildDistPref buildFlags buildFilePath = dir ++ "/build/autogen" putStrLn $ "Generating " ++ buildFilePath ++ "..." createDirectoryIfMissing True buildFilePath exists <- doesDirectoryExist "git" desc <- if exists then readProcess "git" ["describe", "--all", "--long", "--dirty=-modified"] "" else return "detached version" now <- return . show =<< getZonedTime writeFile (buildFilePath ++ "/Build_hvmm.hs") $ unlines [ "module Build_hvmm where " , "gitDescribe::String" , "gitDescribe = " ++ show desc , "buildTime:: String" , "buildTime = " ++ show now ] return emptyHookedBuildInfo ``` On 11 July 2014 13:26, Roman Cheplyaka <roma@ro-che.info> wrote:
What are existing solutions for embedding version info (git revision, build date/time, versions of dependencies) in Haskell programs?
Roman
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Alexander