packages feed

hubris-0.0.3: Setup.hs

{-# LANGUAGE NamedFieldPuns #-}
import Distribution.Simple
import Distribution.Simple.Setup
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.Utils
import qualified Distribution.PackageDescription as D
import Distribution.Verbosity
import System.Directory
import System.Process
import Maybe
import qualified Distribution.ModuleName as Modname
main = do
  includeDir <- readProcess "ruby" ["-rrbconfig", "-e", "print RbConfig::CONFIG['archdir']"] ""
  defaultMainWithHooks (hooks includeDir)

hooks includeDir = simpleUserHooks
  {
   preConf = \arg flags -> do
      -- probably a nicer way of getting that directory...
      createDirectoryIfMissing True "dist/build/autogen"
      -- FILTHY HACK
      writeFile "dist/build/autogen/Includes.hs" ("module Includes where\nextraIncludeDirs=[\"" ++ includeDir++"\"]") -- show (configExtraIncludeDirs flags))
      return D.emptyHookedBuildInfo,
   confHook = \ info flags ->  (confHook simpleUserHooks) info (flags { configSharedLib = Flag True, configExtraIncludeDirs = [includeDir] }),
   sDistHook = \ pkg lbi hooks flags -> let lib = fromJust $ D.library pkg
                                            modules = filter (/= Modname.fromString "Includes") $ D.exposedModules lib
                                            pkg' = pkg { D.library = Just $ lib { D.exposedModules = modules } }   
                                        in sDistHook simpleUserHooks pkg' lbi hooks flags  

  }