2 module Main (main) where
6 import Distribution.PackageDescription
7 import Distribution.Simple
8 import Distribution.Simple.Utils
10 import System.Environment
14 main = do let verbosity = 0
15 mustBeBuildables <- getMustBeBuildablePackages
16 dfd <- defaultPackageDesc verbosity
17 pkgDescr <- readPackageDescription verbosity dfd
18 mInfolFile <- defaultHookedPackageDesc
19 info <- case mInfolFile of
20 Nothing -> return emptyHookedBuildInfo
21 Just infoFile -> readHookedBuildInfo verbosity infoFile
22 let pkgDescr' = updatePackageDescription info pkgDescr
23 pkg = pkgName (package pkgDescr')
24 mustBeBuildable = pkg `elem` mustBeBuildables
25 buildInfos = map libBuildInfo (maybeToList (library pkgDescr'))
26 ++ map buildInfo (executables pkgDescr')
27 isBuildable = any buildable buildInfos
28 when (mustBeBuildable || isBuildable) $ do
32 do ec <- rawSystem prog progArgs
35 error "ifBuildable: No command given"
37 getMustBeBuildablePackages :: IO [String]
38 getMustBeBuildablePackages
39 = do xs <- readFile "../core-packages"
40 return $ filter ("readline" /=) $ lines xs