aboutsummaryrefslogtreecommitdiff
path: root/CabalHelper/Licenses.hs
diff options
context:
space:
mode:
Diffstat (limited to 'CabalHelper/Licenses.hs')
-rw-r--r--CabalHelper/Licenses.hs86
1 files changed, 46 insertions, 40 deletions
diff --git a/CabalHelper/Licenses.hs b/CabalHelper/Licenses.hs
index e237e58..d1258c7 100644
--- a/CabalHelper/Licenses.hs
+++ b/CabalHelper/Licenses.hs
@@ -4,80 +4,86 @@ module CabalHelper.Licenses where
-- Copyright (c) 2014, Jasper Van der Jeugt <m@jaspervdj.be>
--------------------------------------------------------------------------------
-import Control.Arrow ((***), (&&&))
-import Control.Monad (forM_, unless)
-import Data.List (foldl', sort)
-import Data.Maybe (catMaybes)
-import Data.Version (Version)
-import Data.Set (Set)
-import qualified Data.Set as Set
-import Distribution.InstalledPackageInfo (InstalledPackageInfo)
-import qualified Distribution.InstalledPackageInfo as InstalledPackageInfo
-import qualified Distribution.License as Cabal
-import qualified Distribution.Package as Cabal
-import qualified Distribution.Simple.Configure as Cabal
-import qualified Distribution.Simple.LocalBuildInfo as Cabal
-import qualified Distribution.Simple.PackageIndex as Cabal
-import qualified Distribution.Text as Cabal
-import System.Directory (getDirectoryContents)
-import System.Exit (exitFailure)
-import System.FilePath (takeExtension)
-import System.IO (hPutStrLn, stderr)
+import Control.Arrow ((***), (&&&))
+import Control.Monad (forM_, unless)
+import Data.List (foldl', sort)
+import Data.Maybe (catMaybes)
+import Data.Version (Version)
+import Data.Set (Set)
+import qualified Data.Set as Set
+import System.Directory (getDirectoryContents)
+import System.Exit (exitFailure)
+import System.FilePath (takeExtension)
+import System.IO (hPutStrLn, stderr)
+import Distribution.InstalledPackageInfo
+import Distribution.InstalledPackageInfo
+import Distribution.License
+import Distribution.Package
+import Distribution.Simple.Configure
+import Distribution.Simple.LocalBuildInfo
+import Distribution.Simple.PackageIndex
+import Distribution.Text
--------------------------------------------------------------------------------
#if CABAL_MAJOR == 1 && CABAL_MINOR > 22
-type PackageIndex a = Cabal.PackageIndex (InstalledPackageInfo.InstalledPackageInfo)
+type CPackageIndex a = PackageIndex (InstalledPackageInfo)
#elif CABAL_MAJOR == 1 && CABAL_MINOR >= 22
-type PackageIndex a = Cabal.PackageIndex (InstalledPackageInfo.InstalledPackageInfo_ a)
+type CPackageIndex a = PackageIndex (InstalledPackageInfo_ a)
#else
-type PackageIndex a = Cabal.PackageIndex
+type CPackageIndex a = PackageIndex
#endif
+#if CABAL_MAJOR == 1 && CABAL_MINOR > 22
+type CInstalledPackageId = ComponentId
+lookupInstalledPackageId = lookupComponentId
+#endif
+
+
+
findTransitiveDependencies
- :: PackageIndex a
- -> Set Cabal.InstalledPackageId
- -> Set Cabal.InstalledPackageId
+ :: CPackageIndex a
+ -> Set CInstalledPackageId
+ -> Set CInstalledPackageId
findTransitiveDependencies pkgIdx set0 = go Set.empty (Set.toList set0)
where
go set [] = set
go set (q : queue)
| q `Set.member` set = go set queue
| otherwise =
- case Cabal.lookupInstalledPackageId pkgIdx q of
+ case lookupInstalledPackageId pkgIdx q of
Nothing ->
-- Not found can mean that the package still needs to be
-- installed (e.g. a component of the target cabal package).
-- We can ignore those.
go set queue
Just ipi ->
- go (Set.insert q set)
- (InstalledPackageInfo.depends ipi ++ queue)
+ go (Set.insert q set) (depends ipi ++ queue)
--------------------------------------------------------------------------------
getDependencyInstalledPackageIds
- :: Cabal.LocalBuildInfo -> Set Cabal.InstalledPackageId
+ :: LocalBuildInfo -> Set InstalledPackageId
getDependencyInstalledPackageIds lbi =
- findTransitiveDependencies (Cabal.installedPkgs lbi) $
- Set.fromList $ map fst $ Cabal.externalPackageDeps lbi
+ findTransitiveDependencies (installedPkgs lbi) $
+ Set.fromList $ map fst $ externalPackageDeps lbi
--------------------------------------------------------------------------------
getDependencyInstalledPackageInfos
- :: Cabal.LocalBuildInfo -> [InstalledPackageInfo]
+ :: LocalBuildInfo -> [InstalledPackageInfo]
getDependencyInstalledPackageInfos lbi = catMaybes $
- map (Cabal.lookupInstalledPackageId pkgIdx) $
+ map (lookupInstalledPackageId pkgIdx) $
Set.toList (getDependencyInstalledPackageIds lbi)
where
- pkgIdx = Cabal.installedPkgs lbi
+ pkgIdx = installedPkgs lbi
--------------------------------------------------------------------------------
groupByLicense
:: [InstalledPackageInfo]
- -> [(Cabal.License, [InstalledPackageInfo])]
+ -> [(License, [InstalledPackageInfo])]
groupByLicense = foldl'
- (\assoc ipi -> insert (InstalledPackageInfo.license ipi) ipi assoc) []
+ (\assoc ipi -> insert (license ipi) ipi assoc) []
where
-- 'Cabal.License' doesn't have an 'Ord' instance so we need to use an
-- association list instead of 'Map'. The number of licenses probably won't
@@ -91,12 +97,12 @@ groupByLicense = foldl'
--------------------------------------------------------------------------------
displayDependencyLicenseList
- :: [(Cabal.License, [InstalledPackageInfo])]
+ :: [(License, [InstalledPackageInfo])]
-> [(String, [(String, Version)])]
displayDependencyLicenseList =
- map (Cabal.display *** map (getName &&& getVersion))
+ map (display *** map (getName &&& getVersion))
where
getName =
- Cabal.display . Cabal.pkgName . InstalledPackageInfo.sourcePackageId
+ display . pkgName . sourcePackageId
getVersion =
- Cabal.pkgVersion . InstalledPackageInfo.sourcePackageId
+ pkgVersion . sourcePackageId