haskell-gi 0.15 → 0.17
raw patch · 3 files changed
+28/−5 lines, 3 filesdep ~haskell-gi-basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: haskell-gi-base
API changes (from Hackage documentation)
+ Data.GI.CodeGen.Code: listModuleTree :: ModuleInfo -> [Text]
Files
- haskell-gi.cabal +2/−2
- lib/Data/GI/CodeGen/CabalHooks.hs +10/−3
- lib/Data/GI/CodeGen/Code.hs +16/−0
haskell-gi.cabal view
@@ -1,5 +1,5 @@ name: haskell-gi-version: 0.15+version: 0.17 synopsis: Generate Haskell bindings for GObject Introspection capable libraries description: Generate Haskell bindings for GObject Introspection capable libraries. This includes most notably Gtk+, but many other libraries in the GObject ecosystem provide introspection data too.@@ -23,7 +23,7 @@ Library pkgconfig-depends: gobject-introspection-1.0 >= 1.42, gobject-2.0 >= 2.36 build-depends: base >= 4.7 && < 5,- haskell-gi-base == 0.15,+ haskell-gi-base == 0.17, Cabal >= 1.24, containers, directory,
lib/Data/GI/CodeGen/CabalHooks.hs view
@@ -11,19 +11,22 @@ import Distribution.PackageDescription import Data.GI.CodeGen.API (loadGIRInfo)-import Data.GI.CodeGen.Code (genCode, writeModuleTree)+import Data.GI.CodeGen.Code (genCode, writeModuleTree, listModuleTree) import Data.GI.CodeGen.CodeGen (genModule) import Data.GI.CodeGen.Config (Config(..)) import Data.GI.CodeGen.Overrides (parseOverridesFile, girFixups, filterAPIsAndDeps) import Data.GI.CodeGen.Util (ucFirst) -import Data.Maybe (fromJust)+import Data.Maybe (fromJust, fromMaybe) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as TIO +import System.Directory (doesFileExist)+import System.FilePath ((</>), (<.>))+ type ConfHook = (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo @@ -54,7 +57,11 @@ overrides = ovs} m <- genCode cfg allAPIs ["GI", ucFirst name] (genModule apis)- moduleList <- writeModuleTree verbosity outputDir m+ alreadyDone <- doesFileExist (fromMaybe "" outputDir+ </> "GI" </> T.unpack (ucFirst name) <.> "hs")+ moduleList <- if not alreadyDone+ then writeModuleTree verbosity outputDir m+ else return (listModuleTree m) let em' = map (MN.fromString . T.unpack) moduleList ctd' = ((condTreeData . fromJust . condLibrary) gpd) {exposedModules = em'}
lib/Data/GI/CodeGen/Code.hs view
@@ -10,6 +10,7 @@ , evalCodeGen , writeModuleTree+ , listModuleTree , writeModuleCode , codeToText , transitiveModuleDeps@@ -736,6 +737,13 @@ writeModuleInfo verbose dirPrefix minfo return $ (dotModuleName (moduleName minfo) : submoduleNames) +-- | Return the list of modules `writeModuleCode` would write, without+-- actually writing anything to disk.+listModules :: ModuleInfo -> [Text]+listModules minfo =+ let submoduleNames = concatMap listModules (M.elems (submodules minfo))+ in dotModuleName (moduleName minfo) : submoduleNames+ -- | List of reexports from the ".Types" module. typeReexports :: ModuleName -> [Text] -> Text typeReexports typesModule bootFiles =@@ -787,3 +795,11 @@ writeModuleTree :: Bool -> Maybe FilePath -> ModuleInfo -> IO [Text] writeModuleTree verbose dirPrefix minfo = (:) <$> writeTypes dirPrefix minfo <*> writeModuleCode verbose dirPrefix minfo++-- | Return the list of modules that would be written by+-- `writeModuleTree`, without actually writing anything to disk.+listModuleTree :: ModuleInfo -> [Text]+listModuleTree minfo =+ let pkgRoot = take 2 (moduleName minfo)+ typesModule = pkgRoot ++ ["Types"]+ in dotModuleName typesModule : listModules minfo