diff options
Diffstat (limited to 'CabalHelper')
-rw-r--r-- | CabalHelper/Licenses.hs | 18 | ||||
-rw-r--r-- | CabalHelper/Main.hs | 12 |
2 files changed, 21 insertions, 9 deletions
diff --git a/CabalHelper/Licenses.hs b/CabalHelper/Licenses.hs index 4660c15..b16f61d 100644 --- a/CabalHelper/Licenses.hs +++ b/CabalHelper/Licenses.hs @@ -23,9 +23,12 @@ import Distribution.Simple.Configure import Distribution.Simple.LocalBuildInfo import Distribution.Simple.PackageIndex import Distribution.Text +import Distribution.ModuleName -------------------------------------------------------------------------------- -#if CABAL_MAJOR == 1 && CABAL_MINOR > 22 + + +#if CABAL_MAJOR == 1 && CABAL_MINOR > 22 type CPackageIndex a = PackageIndex (InstalledPackageInfo) #elif CABAL_MAJOR == 1 && CABAL_MINOR >= 22 type CPackageIndex a = PackageIndex (InstalledPackageInfo_ a) @@ -35,6 +38,7 @@ type CPackageIndex a = PackageIndex #if CABAL_MAJOR == 1 && CABAL_MINOR >= 23 type CInstalledPackageId = UnitId +lookupInstalledPackageId' :: PackageIndex a -> UnitId -> Maybe a lookupInstalledPackageId' = lookupUnitId #elif CABAL_MAJOR == 1 && CABAL_MINOR > 22 type CInstalledPackageId = ComponentId @@ -45,7 +49,7 @@ lookupInstalledPackageId' = lookupInstalledPackageId #endif findTransitiveDependencies - :: CPackageIndex a + :: CPackageIndex Distribution.ModuleName.ModuleName -> Set CInstalledPackageId -> Set CInstalledPackageId findTransitiveDependencies pkgIdx set0 = go Set.empty (Set.toList set0) @@ -86,16 +90,16 @@ groupByLicense :: [InstalledPackageInfo] -> [(License, [InstalledPackageInfo])] groupByLicense = foldl' - (\assoc ipi -> insert (license ipi) ipi assoc) [] + (\assoc ipi -> insertAList (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 -- exceed 100 so I think we're alright. - insert :: Eq k => k -> v -> [(k, [v])] -> [(k, [v])] - insert k v [] = [(k, [v])] - insert k v ((k', vs) : kvs) + insertAList :: Eq k => k -> v -> [(k, [v])] -> [(k, [v])] + insertAList k v [] = [(k, [v])] + insertAList k v ((k', vs) : kvs) | k == k' = (k, v : vs) : kvs - | otherwise = (k', vs) : insert k v kvs + | otherwise = (k', vs) : insertAList k v kvs -------------------------------------------------------------------------------- diff --git a/CabalHelper/Main.hs b/CabalHelper/Main.hs index 2170d30..f35ed3f 100644 --- a/CabalHelper/Main.hs +++ b/CabalHelper/Main.hs @@ -14,7 +14,7 @@ -- You should have received a copy of the GNU Affero General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -{-# LANGUAGE CPP, BangPatterns, RecordWildCards #-} +{-# LANGUAGE CPP, BangPatterns, RecordWildCards, RankNTypes #-} {-# OPTIONS_GHC -fno-warn-deprecations #-} import Distribution.Simple.Utils (cabalVersion) import Distribution.Simple.Configure @@ -441,11 +441,19 @@ nubPackageFlags opts = opts nubPackageFlags opts = opts { ghcOptPackages = nub $ ghcOptPackages opts } #endif +renderGhcOptions' :: LocalBuildInfo + -> Verbosity + -> GhcOptions + -> IO [String] renderGhcOptions' lbi v opts = do #if CABAL_MAJOR == 1 && CABAL_MINOR < 20 (ghcProg, _) <- requireProgram v ghcProgram (withPrograms lbi) let Just ghcVer = programVersion ghcProg return $ renderGhcOptions ghcVer opts -#else +#elif CABAL_MAJOR == 1 && CABAL_MINOR >= 22 && CABAL_MINOR < 24 +-- && CABAL_MINOR < 24 return $ renderGhcOptions (compiler lbi) opts +#elif CABAL_MAJOR == 1 && CABAL_MINOR >= 24 +-- CABAL_MAJOR == 1 && CABAL_MINOR >= 24 + return $ renderGhcOptions (compiler lbi) (hostPlatform lbi) opts #endif |