aboutsummaryrefslogtreecommitdiff
path: root/CabalHelper
diff options
context:
space:
mode:
Diffstat (limited to 'CabalHelper')
-rw-r--r--CabalHelper/Licenses.hs18
-rw-r--r--CabalHelper/Main.hs12
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