Skip to content

Commit 0370472

Browse files
committed
Print dependencies version in --version
1 parent fb3f1d2 commit 0370472

4 files changed

Lines changed: 57 additions & 4 deletions

File tree

Setup.hs

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,51 @@
1-
import Distribution.Simple
2-
main = defaultMain
1+
module Main (main) where
2+
3+
import Data.List ( nub, sortBy )
4+
import Data.Ord ( comparing )
5+
import Data.Version ( showVersion )
6+
import Distribution.Package ( PackageName(PackageName), PackageId, InstalledPackageId, packageVersion, packageName )
7+
import Distribution.PackageDescription ( PackageDescription(), TestSuite(..), Executable(..) )
8+
import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )
9+
import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose )
10+
import Distribution.Simple.BuildPaths ( autogenModulesDir )
11+
import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), fromFlag )
12+
import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, withExeLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )
13+
import Distribution.Verbosity ( Verbosity )
14+
import System.FilePath ( (</>) )
15+
16+
main :: IO ()
17+
main = defaultMainWithHooks simpleUserHooks
18+
{ buildHook = \pkg lbi hooks flags -> do
19+
generateBuildModule (fromFlag (buildVerbosity flags)) pkg lbi
20+
buildHook simpleUserHooks pkg lbi hooks flags
21+
}
22+
23+
generateBuildModule :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
24+
generateBuildModule verbosity pkg lbi = do
25+
let dir = autogenModulesDir lbi
26+
createDirectoryIfMissingVerbose verbosity True dir
27+
withLibLBI pkg lbi $ \_ libcfg -> do
28+
withTestLBI pkg lbi $ \suite clbi ->
29+
rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines
30+
[ "module Build_" ++ testName suite ++ " where"
31+
, ""
32+
, "autogen_dir :: String"
33+
, "autogen_dir = " ++ show dir
34+
, ""
35+
, "deps :: [String]"
36+
, "deps = " ++ (show $ formatdeps (testDeps libcfg clbi))
37+
]
38+
withExeLBI pkg lbi $ \exe clbi ->
39+
rewriteFile (dir </> "Build_" ++ exeName exe ++ ".hs") $ unlines
40+
[ "module Build_" ++ exeName exe ++ " where"
41+
, ""
42+
, "deps :: [String]"
43+
, "deps = " ++ (show $ formatdeps (testDeps libcfg clbi))
44+
]
45+
where
46+
formatdeps = map formatone . sortBy (comparing unPackageName') . map snd
47+
formatone p = unPackageName' p ++ "-" ++ showVersion (packageVersion p)
48+
unPackageName' p = case packageName p of PackageName n -> n
49+
50+
testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId, PackageId)]
51+
testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys

src/Options/Applicative/Complicated.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ complicatedOptions
3030
-> Maybe String
3131
-- ^ version string
3232
-> String
33+
-- ^ dependencies list
34+
-> String
3335
-- ^ hpack numeric version, as string
3436
-> String
3537
-- ^ header
@@ -43,7 +45,7 @@ complicatedOptions
4345
-> EitherT b (Writer (Mod CommandFields (b,a))) ()
4446
-- ^ commands (use 'addCommand')
4547
-> IO (a,b)
46-
complicatedOptions numericVersion versionString numericHpackVersion h pd commonParser mOnFailure commandParser =
48+
complicatedOptions numericVersion versionString depsString numericHpackVersion h pd commonParser mOnFailure commandParser =
4749
do args <- getArgs
4850
(a,(b,c)) <- case execParserPure (prefs noBacktrack) parser args of
4951
Failure _ | null args -> withArgs ["--help"] (execParser parser)

src/main/Main.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
module Main (main) where
1313

14+
import qualified Build_stack
1415
import Control.Exception
1516
import qualified Control.Exception.Lifted as EL
1617
import Control.Monad hiding (mapM, forM)
@@ -181,6 +182,7 @@ commandLineHandler
181182
commandLineHandler progName isInterpreter = complicatedOptions
182183
Meta.version
183184
(Just versionString')
185+
("Compiled with:\n" ++ unlines (map ("- " ++) Build_stack.deps))
184186
VERSION_hpack
185187
"stack - The Haskell Tool Stack"
186188
""

stack.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ license-file: LICENSE
1111
author: Commercial Haskell SIG
1212
maintainer: manny@fpcomplete.com
1313
category: Development
14-
build-type: Simple
14+
build-type: Custom
1515
cabal-version: >=1.10
1616
homepage: http://haskellstack.org
1717
extra-source-files: CONTRIBUTING.md

0 commit comments

Comments
 (0)