summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheng Shao <terrorjack@type.dance>2023-05-09 00:25:25 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-11 11:57:15 -0400
commit1bb24432ff77e11a0340a7d8586e151e15bba2a1 (patch)
tree5ba4cd13a7d142925ff8de0878b97d2174fb46eb
parent05cea68c0f883999e8fc69edd305906041f44829 (diff)
downloadhaskell-1bb24432ff77e11a0340a7d8586e151e15bba2a1.tar.gz
hadrian: fix no_dynamic_libs flavour transformer
This patch fixes the no_dynamic_libs flavour transformer and make fully_static reuse it. Previously building with no_dynamic_libs fails since ghc program is still dynamic and transitively brings in dyn ways of rts which are produced by no rules.
-rw-r--r--hadrian/src/Flavour.hs20
1 files changed, 6 insertions, 14 deletions
diff --git a/hadrian/src/Flavour.hs b/hadrian/src/Flavour.hs
index 47211d0971..27159bc042 100644
--- a/hadrian/src/Flavour.hs
+++ b/hadrian/src/Flavour.hs
@@ -243,10 +243,12 @@ enableProfiledGhc flavour =
disableDynamicGhcPrograms :: Flavour -> Flavour
disableDynamicGhcPrograms flavour = flavour { dynamicGhcPrograms = pure False }
--- | Don't build libraries in profiled 'Way's.
+-- | Don't build libraries in dynamic 'Way's.
disableDynamicLibs :: Flavour -> Flavour
disableDynamicLibs flavour =
- flavour { libraryWays = prune $ libraryWays flavour
+ flavour { libraryWays = prune $ libraryWays flavour,
+ rtsWays = prune $ rtsWays flavour,
+ dynamicGhcPrograms = pure False
}
where
prune :: Ways -> Ways
@@ -306,18 +308,8 @@ enableBootNonmovingGc = addArgs $ mconcat
-- for static linking.
fullyStatic :: Flavour -> Flavour
fullyStatic flavour =
- addArgs staticExec
- $ flavour { dynamicGhcPrograms = return False
- , libraryWays = prune $ libraryWays flavour
- , rtsWays = prune $ rtsWays flavour }
+ addArgs staticExec $ disableDynamicLibs flavour
where
- -- Remove any Way that contains a WayUnit of Dynamic
- prune :: Ways -> Ways
- prune = fmap $ Set.filter staticCompatible
-
- staticCompatible :: Way -> Bool
- staticCompatible = not . wayUnit Dynamic
-
staticExec :: Args
{- Some packages, especially iserv, seem to force a set of build ways,
- including some that are dynamic (in Rules.BinaryDist). Trying to
@@ -326,7 +318,7 @@ fullyStatic flavour =
- the Ways will need to include a Way that's not explicitly dynamic
- (like "vanilla").
-}
- staticExec = staticCompatible <$> getWay ? mconcat
+ staticExec = mconcat
{-
- Disable dynamic linking by the built ghc executable because the
- statically-linked musl doesn't support dynamic linking, but will