Fix missing libHSghc-8.5-0.a (#574)
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Mon, 16 Apr 2018 22:29:25 +0000 (23:29 +0100)
committerGitHub <noreply@github.com>
Mon, 16 Apr 2018 22:29:25 +0000 (23:29 +0100)
* Drop support for lib0 libraries

See #573

* Minor refactoring

src/Context.hs
src/Hadrian/Oracles/TextFile.hs
src/Rules/Library.hs
src/Utilities.hs

index 225752d..0694eb1 100644 (file)
@@ -7,11 +7,9 @@ module Context (
     withHsPackage,
 
     -- * Paths
-    contextDir, buildPath, buildDir,
-    pkgInplaceConfig, pkgSetupConfigFile,
-    pkgHaddockFile, pkgLibraryFile, pkgLibraryFile0, pkgGhciLibraryFile,
-    pkgConfFile, objectPath, contextPath, getContextPath,
-    libDir, libPath
+    contextDir, buildPath, buildDir, pkgInplaceConfig, pkgSetupConfigFile,
+    pkgHaddockFile, pkgLibraryFile, pkgGhciLibraryFile, pkgConfFile, objectPath,
+    contextPath, getContextPath, libDir, libPath
     ) where
 
 import Base
@@ -101,13 +99,6 @@ pkgLibraryFile context@Context {..} = do
     extension <- libsuf way
     pkgFile context "libHS" extension
 
--- | Path to the auxiliary library file of a given 'Context', e.g.:
--- @_build/stage1/compiler/build/libHSghc-8.1-0.a@.
-pkgLibraryFile0 :: Context -> Action FilePath
-pkgLibraryFile0 context@Context {..} = do
-    extension <- libsuf way
-    pkgFile context "libHS" ("-0" ++ extension)
-
 -- | Path to the GHCi library file of a given 'Context', e.g.:
 -- @_build/stage1/libraries/array/build/HSarray-0.5.1.0.o@.
 pkgGhciLibraryFile :: Context -> Action FilePath
index 98c098a..2f58fab 100644 (file)
@@ -147,10 +147,11 @@ textFileOracle = do
 
     confCabal <- newCache $ \(ctx@Context {..}) -> do
         case pkgCabalFile package of
-          Just file -> do
-            need [file]
-            putLoud $ "| PackageDataFile oracle: reading " ++ quote file ++ " (Stage: " ++ stageString stage ++ ")..."
-            Just <$> parsePackageData ctx
-          Nothing -> return Nothing
+            Just file -> do
+                need [file]
+                putLoud $ "| PackageDataFile oracle: reading " ++ quote file
+                       ++ " (Stage: " ++ stageString stage ++ ")..."
+                Just <$> parsePackageData ctx
+            Nothing -> return Nothing
 
     void $ addOracle $ \(PackageDataFile ctx) -> confCabal ctx
index 000d032..6ce0a71 100644 (file)
@@ -12,7 +12,6 @@ import Expression hiding (way, package)
 import Flavour
 import GHC.Packages
 import Oracles.ModuleFiles
-import Oracles.Setting
 import Rules.Gmp
 import Settings
 import Target
@@ -60,8 +59,8 @@ buildDynamicLib :: Context -> Rules ()
 buildDynamicLib context@Context{..} = do
     root <- buildRootRules
     pkgId <- case pkgCabalFile package of
-      Just file -> liftIO $ parseCabalPkgId file
-      Nothing   -> return (pkgName package)
+        Just file -> liftIO $ parseCabalPkgId file
+        Nothing   -> return $ pkgName package
     let libPrefix = root -/- buildDir context -/- "libHS" ++ pkgId
     -- OS X
     libPrefix ++ "*.dylib" %> buildDynamicLibUnix
@@ -79,20 +78,17 @@ buildPackageLibrary :: Context -> Rules ()
 buildPackageLibrary context@Context {..} = do
     root <- buildRootRules
     pkgId <- case pkgCabalFile package of
-      Just file -> liftIO (parseCabalPkgId file)
-      Nothing   -> return (pkgName package)
+        Just file -> liftIO $ parseCabalPkgId file
+        Nothing   -> return $ pkgName package
     let libPrefix = root -/- buildDir context -/- "libHS" ++ pkgId
         archive = libPrefix ++ (waySuffix way <.> "a")
     archive %%> \a -> do
         objs <- libraryObjects context
-        asuf <- libsuf way
-        let isLib0 = ("//*-0" ++ asuf) ?== a
         removeFile a
-        if isLib0 then build $ target context (Ar Pack stage) []   [a] -- TODO: Scan for dlls
-                  else build $ target context (Ar Pack stage) objs [a]
+        build $ target context (Ar Pack stage) objs [a]
 
         synopsis <- pkgSynopsis context
-        unless isLib0 . putSuccess $ renderLibrary
+        putSuccess $ renderLibrary
             (quote (pkgName package) ++ " (" ++ show stage ++ ", way "
             ++ show way ++ ").") a synopsis
 
@@ -101,13 +97,13 @@ buildPackageLibrary context@Context {..} = do
 buildPackageGhciLibrary :: Context -> Rules ()
 buildPackageGhciLibrary context@Context {..} = priority 2 $ do
     root <- buildRootRules
+    -- TODO: Get rid of code duplication for 'pkgId'.
     pkgId <- case pkgCabalFile package of
         Just file -> liftIO $ parseCabalPkgId file
         Nothing   -> return $ pkgName package
 
     let libPrefix = root -/- buildDir context -/- "HS" ++ pkgId
-        o = libPrefix ++ "*" ++ (waySuffix way <.> "o")
-    o %> \obj -> do
+    libPrefix ++ "*" ++ (waySuffix way <.> "o") %> \obj -> do
         objs <- allObjects context
         need objs
         build $ target context (Ld stage) objs [obj]
index 57faf41..2c73d94 100644 (file)
@@ -13,8 +13,6 @@ import Hadrian.Utilities
 
 import Context
 import Expression hiding (stage)
-import GHC.Packages
-import Oracles.Setting (windowsHost)
 import Settings
 import Target
 
@@ -67,18 +65,11 @@ stage1Dependencies =
 libraryTargets :: Bool -> Context -> Action [FilePath]
 libraryTargets includeGhciLib context = do
     libFile  <- pkgLibraryFile     context
-    lib0File <- pkgLibraryFile0    context
-    lib0     <- buildDll0          context
     ghciLib  <- pkgGhciLibraryFile context
     ghci     <- if includeGhciLib
                 then interpretInContext context $ getPackageData PD.buildGhciLib
                 else return False
-    return $ [ libFile ] ++ [ lib0File | lib0 ] ++ [ ghciLib | ghci ]
-
-  where buildDll0 :: Context -> Action Bool
-        buildDll0 Context {..} = do
-          windows <- windowsHost
-          return $ windows && stage == Stage1 && package == compiler
+    return $ [ libFile ] ++ [ ghciLib | ghci ]
 
 -- | Coarse-grain 'need': make sure all given libraries are fully built.
 needLibrary :: [Context] -> Action ()