Commit fb997160 authored by Alp Mestanogullari's avatar Alp Mestanogullari 🦑 Committed by Alp Mestanogullari
Browse files

Hadrian: bump Cabal submodule, install extra dynamic flavours of RTS

Previously, Hadrian was building all the appropriate dynamic ways for
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
we ended up patching Cabal to add a new field,
to specify those extra flavours to install in .cabal files:

We now make use of this 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
like with make, which in turn will fix a lot of test failures. See

Test Plan:
hadrian/ _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:
parent 1235ca95
......@@ -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)
......@@ -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)
......@@ -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
Subproject commit 3da088e281f5cbc8a731e18ceb698cfea2e45004
Subproject commit 064d9e9082c825f538655db1868108c48240377e
cabal-version: 2.1
cabal-version: 2.5
name: rts
version: 1.0
license: BSD-3-Clause
......@@ -39,6 +39,8 @@ flag debug
default: False
flag logging
default: False
flag dynamic
default: False
-- rts is a wired in package and
......@@ -65,8 +67,14 @@ library
extra-library-flavours: _debug_p _thr_debug_p
if flag(debug)
extra-library-flavours: _debug _thr_debug
if flag(dynamic)
extra-dynamic-library-flavours: _debug _thr_debug
if flag(logging)
extra-library-flavours: _l _thr_l
if flag(dynamic)
extra-dynamic-library-flavours: _l _thr_l
if flag(dynamic)
extra-dynamic-library-flavours: _thr
exposed: True
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment