Build mkUserGuidePart with stage-0
authorBen Gamari <ben@smart-cactus.org>
Sat, 8 Oct 2016 19:10:43 +0000 (15:10 -0400)
committerBen Gamari <ben@smart-cactus.org>
Sun, 9 Oct 2016 22:13:31 +0000 (18:13 -0400)
This addresses GHC #12619, allowing the users guide to be built with
only the stage 0 compiler.

src/Builder.hs
src/GHC.hs
src/Settings/Default.hs

index 6f892f2..09b87cb 100644 (file)
@@ -104,6 +104,7 @@ builderPath builder = case builderProvenance builder of
     Just context
       | Just path <- programPath context -> return path
       | otherwise                        ->
+        -- TODO: Make builderPath total.
         error $ "Cannot determine builderPath for " ++ show builder
              ++ " in context " ++ show context
     Nothing -> case builder of
index 0bfd131..3521e54 100644 (file)
@@ -102,7 +102,10 @@ ghcSplit = "inplace/lib/bin/ghc-split"
 programPath :: Context -> Maybe FilePath
 programPath context@Context {..}
     | package == ghc = Just . inplaceProgram $ "ghc-stage" ++ show (fromEnum stage + 1)
-    | package `elem` [checkApiAnnotations, ghcTags, haddock, mkUserGuidePart] =
+    | package `elem` [mkUserGuidePart] =
+        case stage of Stage0 -> Just . inplaceProgram $ pkgNameString package
+                      _      -> Nothing
+    | package `elem` [checkApiAnnotations, ghcTags, haddock] =
         case stage of Stage2 -> Just . inplaceProgram $ pkgNameString package
                       _      -> Nothing
     | package `elem` [touchy, unlit] = case stage of
index e35fea0..4588c4b 100644 (file)
@@ -108,7 +108,7 @@ packagesStage0 = mconcat
              , ghcPkg, hsc2hs, hoopl, hpc, templateHaskell, transformers ]
     -- the stage0 predicate makes sure these packages are built only in Stage0
     , stage0 ? append [ deriveConstants, dllSplit, genapply, genprimopcode
-                      , hp2ps, unlit ]
+                      , hp2ps, unlit, mkUserGuidePart ]
     , stage0 ? windowsHost ? append [touchy]
     , notM windowsHost ? notM iosHost ? append [terminfo] ]
 
@@ -127,7 +127,7 @@ packagesStage1 = mconcat
 -- in Stage2 and Stage3. Can we check this in compile time?
 packagesStage2 :: Packages
 packagesStage2 = mconcat
-    [ append [checkApiAnnotations, ghcTags, mkUserGuidePart]
+    [ append [checkApiAnnotations, ghcTags ]
     , buildHaddock flavour ? append [haddock] ]
 
 -- TODO: What about profilingDynamic way? Do we need platformSupportsSharedLibs?