packages feed

chs-cabal 0.1.1.2 → 0.1.1.3

raw patch · 4 files changed

+37/−34 lines, 4 filesdep ~CabalPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: Cabal

API changes (from Hackage documentation)

- Distribution.C2Hs.TopSort: reorderC2Hs :: Verbosity -> [FilePath] -> [ModuleName] -> IO [ModuleName]
+ Distribution.C2Hs.TopSort: reorderC2Hs :: Verbosity -> [CabalDir] -> [ModuleName] -> IO [ModuleName]

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # chs-cabal +## 0.1.1.3++  * Update for Cabal 3.14+ ## 0.1.1.2    * Update for Cabal 3.12
chs-cabal.cabal view
@@ -1,6 +1,6 @@ cabal-version:   1.18 name:            chs-cabal-version:         0.1.1.2+version:         0.1.1.3 license:         BSD3 license-file:    LICENSE copyright:       Copyright: (c) 2019, 2021 Vanessa McHale@@ -29,7 +29,7 @@     build-depends:         base >=4.7 && <5,         chs-deps,-        Cabal >=3.12.0.0+        Cabal >=3.14.0.0      if impl(ghc >=8.0)         ghc-options:
src/Distribution/C2Hs.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE DataKinds #-}+ -- | Everything in this module is slightly morally dubious in that it works by -- considering *all* modules to be @exposed-modules@ in the preprocessor phase. --@@ -20,9 +22,10 @@                                                         defaultMainWithHooks,                                                         simpleUserHooks) import           Distribution.Simple.LocalBuildInfo    (LocalBuildInfo)-import           Distribution.Simple.Setup             (BuildFlags (BuildFlags, buildVerbosity),-                                                        HaddockFlags (HaddockFlags, haddockVerbosity),-                                                        ReplFlags (ReplFlags, replVerbosity),+import           Distribution.Simple.Setup             (BuildFlags, buildCommonFlags,+                                                        HaddockFlags, haddockCommonFlags,+                                                        ReplFlags, replCommonFlags,+                                                        CommonSetupFlags (CommonSetupFlags, setupVerbosity),                                                         fromFlagOrDefault) import           Distribution.Types.Benchmark import           Distribution.Types.BuildInfo@@ -31,12 +34,11 @@ import           Distribution.Types.Library import           Distribution.Types.PackageDescription import           Distribution.Types.TestSuite-import           Distribution.Utils.Path               (PackageDir, SourceDir,-                                                        SymbolicPath,-                                                        getSymbolicPath)+import           Distribution.Utils.Path               (Pkg, Source, FileOrDir (Dir),+                                                        SymbolicPath) import           Distribution.Verbosity                (Verbosity, normal) -type CabalFP = SymbolicPath PackageDir SourceDir+type CabalFP = SymbolicPath Pkg (Dir Source)  defaultMainC2Hs :: IO () defaultMainC2Hs = defaultMainWithHooks c2hsUserHooks@@ -48,37 +50,28 @@                                 , replHook = c2hsReplHooks                                 } -reorderC2Hs' :: Verbosity -> [CabalFP] -> [ModuleName] -> IO [ModuleName]-reorderC2Hs' v fps = reorderC2Hs v (fmap getSymbolicPath fps)- -- | Custom build hooks to be used with @.chs@ files which @{\#import\#}@ one -- another. c2hsBuildHooks :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO () c2hsBuildHooks = \pd lbi hooks bf -> do-    let v = getVerbosity bf-    pd' <- mapPackageDescription (reorderC2Hs' v) pd+    let v = getSetupVerbosity (buildCommonFlags bf)+    pd' <- mapPackageDescription (reorderC2Hs v) pd     buildHook simpleUserHooks pd' lbi hooks bf  c2hsHaddockHooks :: PackageDescription -> LocalBuildInfo -> UserHooks -> HaddockFlags -> IO () c2hsHaddockHooks = \pd lbi hooks hf -> do-    let v = getHaddockVerbosity hf-    pd' <- mapPackageDescription (reorderC2Hs' v) pd+    let v = getSetupVerbosity (haddockCommonFlags hf)+    pd' <- mapPackageDescription (reorderC2Hs v) pd     haddockHook simpleUserHooks pd' lbi hooks hf  c2hsReplHooks :: PackageDescription -> LocalBuildInfo -> UserHooks -> ReplFlags -> [String] -> IO () c2hsReplHooks = \pd lbi hooks rf ss -> do-    let v = getReplVerbosity rf-    pd' <- mapPackageDescription (reorderC2Hs' v) pd+    let v = getSetupVerbosity (replCommonFlags rf)+    pd' <- mapPackageDescription (reorderC2Hs v) pd     replHook simpleUserHooks pd' lbi hooks rf ss -getHaddockVerbosity :: HaddockFlags -> Verbosity-getHaddockVerbosity HaddockFlags { haddockVerbosity = v } = fromFlagOrDefault normal v--getVerbosity :: BuildFlags -> Verbosity-getVerbosity BuildFlags { buildVerbosity = v } = fromFlagOrDefault normal v--getReplVerbosity :: ReplFlags -> Verbosity-getReplVerbosity ReplFlags { replVerbosity = v } = fromFlagOrDefault normal v+getSetupVerbosity :: CommonSetupFlags -> Verbosity+getSetupVerbosity CommonSetupFlags { setupVerbosity = v } = fromFlagOrDefault normal v  mapPackageDescription :: ([CabalFP] -> [ModuleName] -> IO [ModuleName]) -> PackageDescription -> IO PackageDescription mapPackageDescription f p@PackageDescription { library = ml
src/Distribution/C2Hs/TopSort.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE DataKinds #-}+ -- | Topological sort for @.chs@ files according to @{\#import\#}@s. module Distribution.C2Hs.TopSort ( reorderC2Hs ) where @@ -7,35 +9,39 @@ import           Distribution.Compat.Graph            (Node (..),                                                        fromDistinctList,                                                        revTopSort)-import           Distribution.ModuleName              (ModuleName, toFilePath)+import           Distribution.ModuleName              (ModuleName) import           Distribution.Parsec                  (simpleParsec) import           Distribution.Simple.PreProcess.Types (Suffix (..))-import           Distribution.Simple.Utils            (findFileWithExtension,+import           Distribution.Utils.Path               (FileOrDir (..), Pkg, Source, (</>),+                                                        SymbolicPath,+                                                        interpretSymbolicPathCWD)+import           Distribution.Simple.Utils            (findModuleFileEx,                                                        warn) import           Distribution.Verbosity               (Verbosity) import           Language.Haskell.CHs.Deps            (getFileImports) +type CabalDir = SymbolicPath Pkg (Dir Source)+ -- | Given a list of 'ModuleName's, sort it according to @c2hs@ @{\#import\#}@ -- declarations. reorderC2Hs :: Verbosity-            -> [FilePath] -- ^ Source directories+            -> [CabalDir] -- ^ Source directories             -> [ModuleName] -- ^ Module names             -> IO [ModuleName] -- ^ Sorted modules reorderC2Hs v dirs preMods = do -    chsFiles <- traverse findCHS preMods+    chsFiles <- traverse (fmap (interpretSymbolicPathCWD . uncurry (</>)) . findCHS) preMods      modDeps <- traverse (extractDeps v) (zip preMods chsFiles)      pure $ fmap (\(N m _ _) -> m) (revTopSort $ fromDistinctList modDeps) -        where findCHS = findFileWithExtension [Suffix ".chs"] dirs . toFilePath+        where findCHS = findModuleFileEx v dirs [Suffix ".chs"]  -- | Given a 'ModuleName' and its corresponding filepath, return a 'Node' -- with its associated @c2hs@ dependencies-extractDeps :: Verbosity -> (ModuleName, Maybe FilePath) -> IO (Node ModuleName ModuleName)-extractDeps _ (m, Nothing) = pure (N m m [])-extractDeps v (m, Just f) = do+extractDeps :: Verbosity -> (ModuleName, FilePath) -> IO (Node ModuleName ModuleName)+extractDeps v (m, f) = do     res <- getFileImports f     mods <- case res of         Right ms -> case traverse simpleParsec ms of