Minor revision
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 19 Jul 2017 15:03:35 +0000 (16:03 +0100)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 19 Jul 2017 15:03:55 +0000 (16:03 +0100)
src/Oracles/Config/Setting.hs
src/Rules/Install.hs
src/Settings/Path.hs

index c4ed10e..1bf9186 100644 (file)
@@ -53,19 +53,18 @@ data Setting = BuildArch
              | IconvIncludeDir
              | IconvLibDir
              | CursesLibDir
-             -- Paths to where GHC is installed
-             -- ref: mk/install.mk
+             -- Paths to where GHC is installed (ref: mk/install.mk)
              | InstallPrefix
              | InstallBinDir
              | InstallLibDir
              | InstallDataRootDir
-             -- "install" utility
+             -- Command lines for invoking the @install@ utility
              | Install
              | InstallData
              | InstallProgram
              | InstallScript
              | InstallDir
-             -- symbolic link
+             -- Command line for creating a symbolic link
              | LnS
 
 data SettingList = ConfCcArgs Stage
@@ -202,9 +201,10 @@ cmdLineLengthLimit = do
         -- On all other systems, we try this:
         _             -> 4194304 -- Cabal library needs a bit more than 2MB!
 
--- | On Windows we normally want to make a relocatable bindist,
--- to we ignore flags like libdir
--- ref: mk/config.mk.in:232
+-- ref: https://ghc.haskell.org/trac/ghc/wiki/Building/Installing#HowGHCfindsitsfiles
+-- | On Windows we normally build a relocatable installation, which assumes that
+-- the library directory @libdir@ is in a fixed location relative to the GHC
+-- binary, namely @../lib@.
 relocatableBuild :: Action Bool
 relocatableBuild = windowsHost
 
@@ -213,10 +213,10 @@ installDocDir = do
   version <- setting ProjectVersion
   (-/- ("doc/ghc-" ++ version)) <$> setting InstallDataRootDir
 
--- | Unix: override libdir and datadir to put ghc-specific stuff in
--- a subdirectory with the version number included.
 -- ref: mk/install.mk:101
 -- TODO: CroosCompilePrefix
+-- | Unix: override @libdir@ and @datadir@ to put GHC-specific files in a
+-- subdirectory with the version number included.
 installGhcLibDir :: Action String
 installGhcLibDir = do
   r <- relocatableBuild
@@ -224,4 +224,4 @@ installGhcLibDir = do
   if r then return libdir
        else do
          v <- setting ProjectVersion
-         return (libdir -/- ("ghc-" ++ v))
+         return $ libdir -/- ("ghc-" ++ v)
index 525746b..77e340e 100644 (file)
@@ -128,6 +128,7 @@ withLatestBuildStage pkg m = do
       Nothing    -> return ()
 
 -- ref: rules/manual-package-conf.mk
+-- TODO: Should we use a temporary file instead of pkgConfInstallPath?
 -- | Install @package.conf.install@ for each package. Note that it will be
 -- recreated each time.
 installPackageConf :: Action ()
@@ -161,7 +162,7 @@ installPackages = do
     -- Install RTS
     let rtsDir = destDir ++ ghcLibDir -/- "rts"
     installDirectory rtsDir
-    ways <- interpretInContext (vanillaContext Stage1 rts) getRtsWays
+    ways    <- interpretInContext (vanillaContext Stage1 rts) getRtsWays
     rtsLibs <- mapM pkgLibraryFile $ map (Context Stage1 rts) ways
     ffiLibs <- sequence $ map rtsLibffiLibrary ways
 
@@ -183,14 +184,14 @@ installPackages = do
         when (isLibrary pkg) $
             withLatestBuildStage pkg $ \stage -> do
                 let context = vanillaContext stage pkg
-                top <- interpretInContext context getTopDirectory
+                top <- topDirectory
                 let installDistDir = top -/- buildPath context
                 buildPackage stage pkg
                 docDir <- installDocDir
                 ghclibDir <- installGhcLibDir
 
                 -- Copy over packages
-                strip <- stripCmdPath context
+                strip <- stripCmdPath
                 ways  <- interpretInContext context getLibraryWays
                 let ghcCabalInplace = inplaceBinPath -/- "ghc-cabal" <.> exe -- HACK?
                 need [ghcCabalInplace]
@@ -230,7 +231,7 @@ installPackages = do
         when (isLibrary pkg) $
             withLatestBuildStage pkg $ \stage -> do
                 let context = vanillaContext stage pkg
-                top <- interpretInContext context getTopDirectory
+                top <- topDirectory
                 let installDistDir = top -/- buildPath context
                 -- TODO: better reference to the built inplace binary path
                 let ghcCabalInplace = inplaceBinPath -/- "ghc-cabal"
index 1b0dc13..0be1838 100644 (file)
@@ -14,8 +14,8 @@ import Context
 import Expression
 import GHC
 import Oracles.PackageData
-import Oracles.Config.Setting (setting, Setting(..))
-import Oracles.Path (getTopDirectory)
+import Oracles.Config.Setting
+import Oracles.Path
 import UserSettings
 
 -- | Path to the directory containing the Shake database and other auxiliary
@@ -202,12 +202,12 @@ inplaceInstallPath pkg
 ghcSplitPath :: FilePath
 ghcSplitPath = inplaceLibBinPath -/- "ghc-split"
 
--- | Command line tool for stripping
 -- ref: mk/config.mk
-stripCmdPath :: Context -> Action FilePath
-stripCmdPath ctx = do
+-- | Command line tool for stripping.
+stripCmdPath :: Action FilePath
+stripCmdPath = do
     targetPlatform <- setting TargetPlatform
-    top <- interpretInContext ctx getTopDirectory
+    top <- topDirectory
     case targetPlatform of
         "x86_64-unknown-mingw32" ->
              return (top -/- "inplace/mingw/bin/strip.exe")