summaryrefslogtreecommitdiff
path: root/hadrian
diff options
context:
space:
mode:
authorAlp Mestanogullari <alp@well-typed.com>2018-11-29 17:14:57 +0100
committerAlp Mestanogullari <alpmestan@gmail.com>2018-11-29 17:14:58 +0100
commitfb9971607c5a41ade71338188c683ee9cb8ca6fc (patch)
treefc3ab90ed5204f123a36905bc1d8e9db1ee61268 /hadrian
parent1235ca956c80d7035e1a6c50501a97de66d32b92 (diff)
downloadhaskell-fb9971607c5a41ade71338188c683ee9cb8ca6fc.tar.gz
Hadrian: bump Cabal submodule, install extra dynamic flavours of RTS
Previously, Hadrian was building all the appropriate dynamic ways for libHSrts but they were not picked up and installed in the package database when we register the rts library. Since we use Cabal for registering packages and the .cabal files of packages as sources of truth for configuring and installing, we ended up patching Cabal to add a new field, 'extra-dynamic-library-flavours', to specify those extra flavours to install in .cabal files: https://github.com/haskell/cabal/pull/5606 We now make use of this in rts.cabal.in to expose dynamic flavours behind a Cabal flag, which Hadrian will use whenever we are building a GHC flavour that requires dynamic libraries. This is all part of a larger plan to build a dynamic stage 2 GHC by default, like with make, which in turn will fix a lot of test failures. See Test Plan: hadrian/build.sh _build/stage1/lib/package.conf.d/rts-1.0.conf _build/stage1/lib/x86_64-.../ should contain many libHSrts-*.so Reviewers: snowleopard, DavidEichmann, bgamari, erikd, simonmar Reviewed By: snowleopard, DavidEichmann Subscribers: rwbarton, carter GHC Trac Issues: #15837 Differential Revision: https://phabricator.haskell.org/D5385
Diffstat (limited to 'hadrian')
-rw-r--r--hadrian/src/Oracles/Setting.hs2
-rw-r--r--hadrian/src/Rules/Library.hs4
-rw-r--r--hadrian/src/Settings/Packages.hs1
3 files changed, 4 insertions, 3 deletions
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
index 1cdcddf186..5197b8ea54 100644
--- a/hadrian/src/Oracles/Setting.hs
+++ b/hadrian/src/Oracles/Setting.hs
@@ -218,4 +218,4 @@ libsuf way
extension <- setting DynamicExtension -- e.g., .dll or .so
version <- setting ProjectVersion -- e.g., 7.11.20141222
let suffix = waySuffix (removeWayUnit Dynamic way)
- return ("-ghc" ++ version ++ suffix ++ extension)
+ return (suffix ++ "-ghc" ++ version ++ extension)
diff --git a/hadrian/src/Rules/Library.hs b/hadrian/src/Rules/Library.hs
index b53bcc8a8c..334d687c9d 100644
--- a/hadrian/src/Rules/Library.hs
+++ b/hadrian/src/Rules/Library.hs
@@ -134,7 +134,7 @@ data LibA = LibA String [Integer] Way deriving (Eq, Show)
-- | > <so or dylib>
data DynLibExt = So | Dylib deriving (Eq, Show)
--- | > libHS<pkg name>-<pkg version>-ghc<ghc version>[_<way suffix>].<so or dylib>
+-- | > libHS<pkg name>-<pkg version>[_<way suffix>]-ghc<ghc version>.<so|dylib>
data LibDyn = LibDyn String [Integer] Way DynLibExt deriving (Eq, Show)
-- | > HS<pkg name>-<pkg version>[_<way suffix>].o
@@ -231,8 +231,8 @@ parseLibDynFilename :: String -> Parsec.Parsec String () LibDyn
parseLibDynFilename ext = do
_ <- Parsec.string "libHS"
(pkgname, pkgver) <- parsePkgId
- _ <- optional $ Parsec.string "-ghc" *> parsePkgVersion
way <- addWayUnit Dynamic <$> parseWaySuffix dynamic
+ _ <- optional $ Parsec.string "-ghc" *> parsePkgVersion
_ <- Parsec.string ("." ++ ext)
return (LibDyn pkgname pkgver way $ if ext == "so" then So else Dylib)
diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs
index 4d75e325d4..51a980ca8b 100644
--- a/hadrian/src/Settings/Packages.hs
+++ b/hadrian/src/Settings/Packages.hs
@@ -285,6 +285,7 @@ rtsPackageArgs = package rts ? do
[ any (wayUnit Profiling) rtsWays ? arg "profiling"
, any (wayUnit Debug) rtsWays ? arg "debug"
, any (wayUnit Logging) rtsWays ? arg "logging"
+ , any (wayUnit Dynamic) rtsWays ? arg "dynamic"
]
, builder (Cc FindCDependencies) ? cArgs
, builder (Ghc CompileCWithGhc) ? map ("-optc" ++) <$> cArgs