
It would not work for hugs or nhc98 because hugs does not grok the CPP
#326: Cabal should support Cabal-version-dependent Setup.hs ----------------------------+----------------------------------------------- Reporter: claus | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Component: Cabal library | Version: 1.2.3.0 Severity: normal | Resolution: Keywords: | Difficulty: normal Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Comment (by claus): Replying to [comment:9 duncan]: pragma and neither let us specify extra info like `include-dirs` in the package resistration, so even if they did cpp they would not be able to find the header file. Interesting. How do hugs and nhc98 survive processing base without CPP and include-dir? Anyway, that brings us back to a CPP-less approach. Here is that sketch again, this time in code: {{{ import System.IO import System.Process import Text.Regex import System.Exit import Control.Monad import System.Directory die last_words = do hPrint stderr last_words exitFailure condition `orElse` action = do c <- condition unless c action main = do (_,o,_,_) <- runInteractiveCommand "ghc-pkg field Cabal version" field <- hGetContents o case matchRegex (mkRegex "version: ([0-9.]*)") field of Just [version] -> do let setup = "Setup-"++version++".hs" doesFileExist setup `orElse` die ("can't find version-specific Setup source: "++setup) runCommand $ "runhaskell "++setup _ -> die $ "can't determine Cabal version: "++field }}} I'm sure something less inelegant can be hacked up within Cabal, but I can never find what I'm looking for in `Distribution.*` (in spite of the many pieces of functionality available, it seems they are only really meant to be used in one specific context/order/framework, not in isolation). -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/326#comment:10 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects