hsqml 0.2.0.1 → 0.2.0.2
raw patch · 3 files changed
+74/−31 lines, 3 filesdep ~textsetup-changed
Dependency ranges changed: text
Files
- CHANGELOG +6/−1
- Setup.hs +64/−26
- hsqml.cabal +4/−4
CHANGELOG view
@@ -1,5 +1,10 @@ HsQML - Release History +release-0.2.0.2 - 2014.01.18++ * Added support for Cabal 1.18 API.+ * Relaxed Cabal dependency constraint on 'text'.+ release-0.2.0.1 - 2013.11.12 * Added check that MacOS uses primordial thread for event loop.@@ -14,7 +19,7 @@ * Added envionment variable to control logging. * New design for marshalling type-classes. * New API for Engine management.- * Relexed Cabal dependency constraints.+ * Relaxed Cabal dependency constraints. * Fixed linking problem on some Linux systems. * Fixed support for non-threaded RTS. * Fixed various object lifetime issues.
Setup.hs view
@@ -1,31 +1,70 @@ #!/usr/bin/runhaskell +{-# LANGUAGE TemplateHaskell #-} module Main where -import Data.List-import Distribution.Simple-import Distribution.Simple.LocalBuildInfo-import Distribution.Simple.PackageIndex-import Distribution.Simple.Setup-import Distribution.Simple.Utils (rawSystemExit)-import qualified Distribution.InstalledPackageInfo as I-import Distribution.PackageDescription-import System.Directory-import System.FilePath- import Control.Monad import Data.Char+import Data.List import Data.Maybe-import qualified Distribution.ModuleName as ModuleName+import Distribution.Simple import Distribution.Simple.BuildPaths+import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Program import Distribution.Simple.Program.Ld import Distribution.Simple.Register+import Distribution.Simple.Setup import Distribution.Simple.Utils import Distribution.Text-import Distribution.Version import Distribution.Verbosity+import qualified Distribution.InstalledPackageInfo as I+import qualified Distribution.ModuleName as ModuleName+import Distribution.PackageDescription+import Language.Haskell.TH import System.FilePath +-- Use Template Haskell to support both the pre- and post-1.18 Cabal API+$(let+ newCabalAPI = cabalVersion >= Version [1,17,0] []+ vnameE = VarE . mkName+ vnameP = VarP . mkName+ cnameE = ConE . mkName+ app2E f x y = AppE (AppE f x) y+ app3E f x y z = AppE (app2E f x y) z+ nothingE = cnameE "Nothing"+ falseE = cnameE "False"+ -- 'LocalBuildInfo' record changed fields in Cabal 1.18+ extractCLBI = if newCabalAPI+ then app2E (vnameE "getComponentLocalBuildInfo")+ (vnameE "x") (cnameE "CLibName")+ else AppE (vnameE "fromJust") $ AppE (vnameE "libraryConfig")+ (vnameE "x")+ -- 'programFindLocation' field changed signature in Cabal 1.18+ adaptFindLoc = if newCabalAPI+ then LamE [vnameP "f", vnameP "x", WildP] $+ AppE (vnameE "f") (vnameE "x")+ else vnameE "id"+ -- 'rawSystemStdInOut' function changed signature in Cabal 1.18+ rawSystemStdErr = if newCabalAPI+ then AppE (app3E (app3E (vnameE "rawSystemStdInOut")+ (vnameE "v") (vnameE "p") (vnameE "a"))+ nothingE nothingE nothingE) falseE + else app2E (app3E (vnameE "rawSystemStdInOut")+ (vnameE "v") (vnameE "p") (vnameE "a")) nothingE falseE+ -- 'programPostConf' field changed signature in Cabal 1.18+ noPostConf = if newCabalAPI+ then LamE [WildP, vnameP "c"] $ AppE (vnameE "return") (vnameE "c")+ else LamE [WildP, WildP] $ AppE (vnameE "return") (cnameE "[]")+ in return [+ FunD (mkName "extractCLBI") [+ Clause [vnameP "x"] (NormalB extractCLBI) []],+ FunD (mkName "adaptFindLoc") [+ Clause [] (NormalB adaptFindLoc) []],+ FunD (mkName "rawSystemStdErr") [+ Clause [vnameP "v", vnameP "p", vnameP "a"] (+ NormalB rawSystemStdErr) []],+ FunD (mkName "noPostConf") [+ Clause [] (NormalB noPostConf) []]])+ main :: IO () main = defaultMainWithHooks simpleUserHooks { confHook = confWithQt, buildHook = buildWithQt,@@ -111,9 +150,9 @@ mkGHCiFixLibPkgId :: PackageDescription -> PackageIdentifier mkGHCiFixLibPkgId pkgDesc =- let id = packageId pkgDesc- (PackageName name) = pkgName id- in id {pkgName = PackageName $ "cbits-" ++ name}+ let pid = packageId pkgDesc+ (PackageName name) = pkgName pid+ in pid {pkgName = PackageName $ "cbits-" ++ name} mkGHCiFixLibName :: PackageDescription -> String mkGHCiFixLibName pkgDesc =@@ -133,7 +172,6 @@ (stubObjs ++ hsObjs) (ghc,_) <- requireProgram verb ghcProgram (withPrograms lbi) let bi = libBuildInfo lib- bDir = buildDir lbi runProgram verb ghc ( ["-shared","-o",bDir </> (mkGHCiFixLibName pkgDesc)] ++ (ldOptions bi) ++ (map ("-l" ++) $ extraLibs bi) ++@@ -144,14 +182,15 @@ mocProgram :: Program mocProgram = Program { programName = "moc",- programFindLocation = flip findProgramLocation "moc",- programFindVersion = \verbosity path -> do- (_,line,_) <- rawSystemStdInOut verbosity path ["-v"] Nothing False+ programFindLocation = adaptFindLoc $+ \verb -> findProgramLocation verb "moc",+ programFindVersion = \verb path -> do+ (_,line,_) <- rawSystemStdErr verb path ["-v"] return $ findSubseq (stripPrefix "(Qt ") line >>= Just . takeWhile (\c -> isDigit c || c == '.') >>= simpleParse,- programPostConf = \_ _ -> return []+ programPostConf = noPostConf } qtVersionRange :: VersionRange@@ -172,12 +211,12 @@ regWithQt :: PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()-regWithQt pkg@PackageDescription { library = Just lib }- lbi@LocalBuildInfo { libraryConfig = Just clbi } hooks flags = do+regWithQt pkg@PackageDescription { library = Just lib } lbi _ flags = do let verb = fromFlag $ regVerbosity flags inplace = fromFlag $ regInPlace flags dist = fromFlag $ regDistPref flags pkgDb = withPackageDB lbi+ clbi = extractCLBI lbi instPkgInfo <- generateRegistrationInfo verb pkg lib lbi clbi inplace dist let instPkgInfo' = if (needsGHCiFix pkg lbi)@@ -187,9 +226,8 @@ else instPkgInfo case flagToMaybe $ regGenPkgConf flags of Just regFile -> do- let regFile = fromMaybe (display (packageId pkg) <.> "conf")- (fromFlag $ regGenPkgConf flags)- writeUTF8File regFile $ I.showInstalledPackageInfo instPkgInfo'+ writeUTF8File (fromMaybe (display (packageId pkg) <.> "conf") regFile) $+ I.showInstalledPackageInfo instPkgInfo' _ | fromFlag (regGenScript flags) -> die "Registration scripts are not implemented." | otherwise ->
hsqml.cabal view
@@ -1,6 +1,6 @@ Name: hsqml-Version: 0.2.0.1-Cabal-version: >= 1.10+Version: 0.2.0.2+Cabal-version: >= 1.14 Build-type: Custom License: BSD3 License-file: LICENSE@@ -34,7 +34,7 @@ containers >= 0.4 && < 0.6, filepath == 1.3.*, network >= 2.3 && < 2.5,- text == 0.11.*,+ text >= 0.11 && < 1.2, tagged >= 0.4 && < 0.8, transformers >= 0.2 && < 0.4 Exposed-modules:@@ -88,7 +88,7 @@ containers >= 0.4 && < 0.6, directory >= 1.1 && < 1.3, network >= 2.3 && < 2.5,- text == 0.11.*,+ text >= 0.11 && < 1.2, tagged >= 0.4 && < 0.8, QuickCheck >= 2.4 && < 2.7, hsqml == 0.2.*