From 103d5e6dabf8975c3903f62afd0418801778cd71 Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Fri, 30 Oct 2015 19:44:42 +0100 Subject: Catch up with Cabal-1.23 git --- CabalHelper/Licenses.hs | 86 ++++++++++++++++++++++++++----------------------- CabalHelper/Main.hs | 18 +++++++++-- 2 files changed, 61 insertions(+), 43 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 -------------------------------------------------------------------------------- -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 diff --git a/CabalHelper/Main.hs b/CabalHelper/Main.hs index 59c3e91..2244859 100644 --- a/CabalHelper/Main.hs +++ b/CabalHelper/Main.hs @@ -47,8 +47,12 @@ import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), componentBuildInfo, externalPackageDeps, withComponentsLBI, - withLibLBI, - inplacePackageId) + withLibLBI) +#if CABAL_MAJOR == 1 && CABAL_MINOR <= 22 +import Distribution.Simple.LocalBuildInfo (inplacePackageId) +#else +import Distribution.Simple.LocalBuildInfo (localComponentId) +#endif import Distribution.Simple.GHC (componentGhcOptions) import Distribution.Simple.Program.GHC (GhcOptions(..), renderGhcOptions) @@ -408,7 +412,10 @@ removeInplaceDeps v lbi pd clbi = let libbi = libBuildInfo lib liboutdir = componentOutDir lbi (CLib lib) libopts = (componentGhcOptions normal lbi libbi libclbi liboutdir) { - ghcOptPackageDBs = [] + ghcOptPackageDBs = [] +#if CABAL_MAJOR == 1 && CABAL_MINOR > 22 + , ghcOptComponentId = NoFlag +#endif } (ideps, deps) = partition isInplaceDep (componentPackageDeps clbi) @@ -419,7 +426,12 @@ removeInplaceDeps v lbi pd clbi = let where isInplaceDep :: (InstalledPackageId, PackageId) -> Bool +#if CABAL_MAJOR == 1 && CABAL_MINOR <= 22 isInplaceDep (ipid, pid) = inplacePackageId pid == ipid +#else + isInplaceDep (ipid, pid) = localComponentId lbi == ipid +#endif + #if CABAL_MAJOR == 1 && CABAL_MINOR >= 22 -- >= 1.22 uses NubListR -- cgit v1.2.3