3 import Control
.Applicative
4 import qualified Data
.Set
as Set
5 import qualified Distribution
.Simple
.Build
.Macros
as Macros
6 import Distribution
.Simple
.Configure
(maybeGetPersistBuildConfig
)
7 import Distribution
.Simple
.LocalBuildInfo
(externalPackageDeps
)
8 import Distribution
.PackageDescription
(packageDescription
)
9 import Distribution
.PackageDescription
.Parse
(readPackageDescription
)
10 import Distribution
.Text
(display
)
11 import Distribution
.Verbosity
(normal
)
12 import System
.Environment
(getArgs)
17 -- Get paths from program arguments.
18 (cabalPath
, depsPath
, macrosPath
) <- do
21 [c
, d
, m
] -> return (c
, d
, m
)
22 _
-> error "Expected 3 arguments: cabalPath depsPath macrosPath"
24 -- Read the cabal file.
25 pkgDesc
<- packageDescription
<$> readPackageDescription normal cabalPath
27 -- Read the setup-config.
28 m
'conf
<- maybeGetPersistBuildConfig
"dist"
30 Nothing
-> error "could not read dist/setup-config"
33 -- Write package dependencies.
34 let deps
= map (display
. fst) $ externalPackageDeps conf
35 writeFile depsPath
(unwords $ map ("-package-id " ++) deps
)
37 -- Write package MIN_VERSION_* macros.
38 writeFile macrosPath
$ Macros
.generate pkgDesc conf