Fix merge conflicts
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 16 Aug 2017 02:47:39 +0000 (03:47 +0100)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 16 Aug 2017 02:47:39 +0000 (03:47 +0100)
1  2 
src/Rules.hs
src/Rules/Program.hs

diff --combined src/Rules.hs
@@@ -24,6 -24,8 +24,6 @@@ import qualified Rules.Per
  import qualified Rules.Program
  import qualified Rules.Register
  import Settings
 -import Settings.Path (inplaceLibCopyTargets, pkgLibraryFile,
 -                      pkgSetupConfigFile, pkgHaddockFile)
  import Target
  import Utilities
  
@@@ -40,10 -42,11 +40,11 @@@ topLevelTargets = action $ d
                   libs <- concatForM [Stage0, Stage1] $ \stage ->
                       concatForM libraryPackages $ packageTargets stage
                   prgs <- concatForM programsStage1Only $ packageTargets Stage0
-                  return $ libs ++ prgs
-              else
-                  concatForM allStages $ \stage ->
-                      concatForM (knownPackages \\ [rts, libffi]) $ packageTargets stage
+                  return $ libs ++ prgs ++ inplaceLibCopyTargets
+              else do
+                  targets <- concatForM allStages $ \stage ->
+                                 concatForM (knownPackages \\ [rts, libffi]) $ packageTargets stage
+                  return $ targets ++ inplaceLibCopyTargets
  
  -- | Return the list of targets associated with a given 'Stage' and 'Package'.
  packageTargets :: Stage -> Package -> Action [FilePath]
@@@ -54,14 -57,12 +55,14 @@@ packageTargets stage pkg = d
      then return [] -- Skip inactive packages.
      else if isLibrary pkg
          then do -- Collect all targets of a library package.
 -            ways <- interpretInContext context getLibraryWays
 -            libs <- mapM (pkgLibraryFile . Context stage pkg) ways
 -            docs <- interpretInContext context =<< buildHaddock <$> flavour
 -            more <- libraryTargets context
 -            return $ [ pkgSetupConfigFile context | nonCabalContext context ]
 -                  ++ [ pkgHaddockFile     context | docs && stage == Stage1 ]
 +            ways    <- interpretInContext context getLibraryWays
 +            libs    <- mapM (pkgLibraryFile . Context stage pkg) ways
 +            docs    <- interpretInContext context =<< buildHaddock <$> flavour
 +            more    <- libraryTargets context
 +            setup   <- pkgSetupConfigFile context
 +            haddock <- pkgHaddockFile     context
 +            return $ [ setup   | nonCabalContext context ]
 +                  ++ [ haddock | docs && stage == Stage1 ]
                    ++ libs ++ more
          else -- The only target of a program package is the executable.
              fmap maybeToList . programPath =<< programContext stage pkg
diff --combined src/Rules/Program.hs
@@@ -11,6 -11,8 +11,6 @@@ import Oracles.PackageDat
  import Oracles.Setting
  import Rules.Wrappers
  import Settings
 -import Settings.Path (buildPath, inplaceLibBinPath, rtsContext, objectPath,
 -                      inplaceLibPath, inplaceBinPath)
  import Target
  import Utilities
  
@@@ -21,12 -23,10 +21,10 @@@ buildProgram rs context@Context {..} = 
              latest <- latestBuildStage package -- fromJust below is safe
              return $ if package == ghc then stage else fromJust latest
  
 -    buildPath context -/- programName context <.> exe %> \bin -> do
 +    "//" ++ contextDir context -/- programName context <.> exe %> \bin -> do
          context' <- programContext stage package
          buildBinaryAndWrapper rs context' bin
  
-     when (package == ghc) $ want inplaceLibCopyTargets
      -- Rules for programs built in install directories
      when (stage == Stage0 || package == ghc) $ do
          -- Some binaries in inplace/bin are wrapped
@@@ -97,9 -97,8 +95,9 @@@ buildBinary rs context@Context {..} bi
              when (stage > Stage0) $ do
                  ways <- interpretInContext context (getLibraryWays <> getRtsWays)
                  needLibrary [ rtsContext { way = w } | w <- ways ]
 -            let path = buildPath context
 -            cObjs  <- map (objectPath context) <$> pkgDataList (CSrcs path)
 +            path   <- buildPath context
 +            cSrcs  <- pkgDataList (CSrcs path)
 +            cObjs  <- mapM (objectPath context) cSrcs
              hsObjs <- hsObjects context
              return $ cObjs ++ hsObjs
                    ++ [ path -/- "Paths_hsc2hs.o"  | package == hsc2hs  ]