Merge pull request #266 from KaiHa/copyDirectoryContent
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Fri, 1 Jul 2016 14:44:33 +0000 (15:44 +0100)
committerGitHub <noreply@github.com>
Fri, 1 Jul 2016 14:44:33 +0000 (15:44 +0100)
Add actions copyDirectoryContent and runBuilderWith

.travis.yml
README.md
appveyor.yml
hadrian.cabal
src/CmdLineFlag.hs
src/Settings/Args.hs
src/Settings/Flavours/Quick.hs
src/Settings/Flavours/Quickest.hs [new file with mode: 0644]
src/Settings/Ways.hs

index 18ede46..b066e89 100644 (file)
@@ -3,7 +3,7 @@ sudo: true
 matrix:
     include:
         - os: linux
-          env: CABALVER=1.22 GHCVER=7.10.3 TARGET=
+          env: CABALVER=1.22 GHCVER=7.10.3 FLAVOUR=quick TARGET=
           addons:
               apt:
                   packages:
@@ -20,7 +20,7 @@ matrix:
               - cabal install alex happy
 
         - os: osx
-          env: TARGET=
+          env: FLAVOUR=quickest TARGET=
           before_install:
               - brew update
               - brew install ghc cabal-install
@@ -59,7 +59,7 @@ install:
 script:
     - ( cd ghc/hadrian && cabal haddock --internal )
     - ./ghc/hadrian/build.sh selftest
-    - ./ghc/hadrian/build.sh -j --verbose --no-progress --progress-colour=never --profile=- --flavour=quick $TARGET
+    - ./ghc/hadrian/build.sh -j --verbose --no-progress --progress-colour=never --profile=- --flavour=$FLAVOUR $TARGET
     - ./ghc/inplace/bin/ghc-stage2 -e 1+2
 
 cache:
index 6b5b234..4ce3b3a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -43,12 +43,13 @@ runs the `boot` and `configure` scripts automatically on the first build, so tha
 need to. Use `--skip-configure` to suppress this behaviour (see overview of command line
 flags below).
 
-* Also note on OS X newer versions of XCode ship with a broken `nm` tool ([#1174](https://ghc.haskell.org/trac/ghc/ticket/11744)). To mitigate the problem place something like 
+* Also note on OS X newer versions of XCode ship with a broken `nm` tool
+([#11744](https://ghc.haskell.org/trac/ghc/ticket/11744)). One way to mitigate the
+problem is to add the following into your `UserSettings.hs`:
   ````haskell
   userArgs :: Args
   userArgs = builder (Configure ".") ? arg "--with-nm=$(xcrun --find nm-classic)"
   ````
- in your `UserSettings.hs`.
 
 Using the build system
 ----------------------
index bb5620e..e4d7d52 100644 (file)
@@ -37,4 +37,4 @@ install:
 build_script:
     - cd C:\msys64\home\ghc\hadrian
     - echo "" | stack --no-terminal exec -- build.bat selftest
-    - echo "" | stack --no-terminal exec -- build.bat -j --verbose --no-progress --progress-colour=never --profile=- --flavour=quick inplace/bin/ghc-stage1.exe
+    - echo "" | stack --no-terminal exec -- build.bat -j --verbose --no-progress --progress-colour=never --profile=- --flavour=quickest inplace/bin/ghc-stage1.exe
index df2a4a5..2ba6dab 100644 (file)
@@ -89,6 +89,7 @@ executable hadrian
                        , Settings.Builders.Tar
                        , Settings.Default
                        , Settings.Flavours.Quick
+                       , Settings.Flavours.Quickest
                        , Settings.Packages
                        , Settings.Packages.Base
                        , Settings.Packages.Compiler
index 10c39f2..df3af5b 100644 (file)
@@ -21,7 +21,7 @@ data Untracked = Untracked
     , splitObjects   :: Bool }
     deriving (Eq, Show)
 
-data Flavour        = Default | Quick deriving (Eq, Show)
+data Flavour        = Default | Quick | Quickest deriving (Eq, Show)
 data ProgressColour = Never | Auto | Always deriving (Eq, Show)
 data ProgressInfo   = None | Brief | Normal | Unicorn deriving (Eq, Show)
 
@@ -43,9 +43,10 @@ readFlavour ms =
     maybe (Left "Cannot parse flavour") (Right . set) (go =<< lower <$> ms)
   where
     go :: String -> Maybe Flavour
-    go "default" = Just Default
-    go "quick"   = Just Quick
-    go _         = Nothing
+    go "default"  = Just Default
+    go "quick"    = Just Quick
+    go "quickest" = Just Quickest
+    go _          = Nothing
     set :: Flavour -> Untracked -> Untracked
     set flag flags = flags { flavour = flag }
 
@@ -83,7 +84,7 @@ readSplitObjects = Right $ \flags -> flags { splitObjects = True }
 cmdFlags :: [OptDescr (Either String (Untracked -> Untracked))]
 cmdFlags =
     [ Option [] ["flavour"] (OptArg readFlavour "FLAVOUR")
-      "Build flavour (Default or Quick)."
+      "Build flavour (Default, Quick or Quickest)."
     , Option [] ["haddock"] (NoArg readBuildHaddock)
       "Generate Haddock documentation."
     , Option [] ["progress-colour"] (OptArg readProgressColour "MODE")
index 18079a2..2ff071a 100644 (file)
@@ -20,6 +20,7 @@ import Settings.Builders.Ld
 import Settings.Builders.Make
 import Settings.Builders.Tar
 import Settings.Flavours.Quick
+import Settings.Flavours.Quickest
 import Settings.Packages.Base
 import Settings.Packages.Compiler
 import Settings.Packages.Directory
@@ -88,5 +89,7 @@ defaultPackageArgs = mconcat
     , unlitPackageArgs ]
 
 flavourArgs :: Args
-flavourArgs = mconcat
-    [ cmdFlavour == Quick ? quickFlavourArgs ]
+flavourArgs = case cmdFlavour of
+    Default  -> mempty
+    Quick    -> quickFlavourArgs
+    Quickest -> quickestFlavourArgs
index e3f0a5d..834a72b 100644 (file)
@@ -1,9 +1,17 @@
 module Settings.Flavours.Quick (quickFlavourArgs, quickFlavourWays) where
 
+import Context
+import GHC
 import Predicate
 
+optimise :: Context -> Bool
+optimise Context {..} = package `elem` [compiler, ghc]
+                     || stage == Stage1 && isLibrary package
+
 quickFlavourArgs :: Args
-quickFlavourArgs = builder Ghc ? arg "-O0"
+quickFlavourArgs = builder Ghc ? do
+    context <- getContext
+    if optimise context then arg "-O" else arg "-O0"
 
 quickFlavourWays :: Ways
 quickFlavourWays = remove [profiling]
diff --git a/src/Settings/Flavours/Quickest.hs b/src/Settings/Flavours/Quickest.hs
new file mode 100644 (file)
index 0000000..3696237
--- /dev/null
@@ -0,0 +1,9 @@
+module Settings.Flavours.Quickest (quickestFlavourArgs, quickestFlavourWays) where
+
+import Predicate
+
+quickestFlavourArgs :: Args
+quickestFlavourArgs = builder Ghc ? arg "-O0"
+
+quickestFlavourWays :: Ways
+quickestFlavourWays = remove [profiling]
index 79dd164..95301e1 100644 (file)
@@ -5,6 +5,7 @@ import CmdLineFlag
 import Oracles.Config.Flag
 import Predicate
 import Settings.Flavours.Quick
+import Settings.Flavours.Quickest
 import UserSettings
 
 -- | Combine default library ways with user modifications.
@@ -29,8 +30,10 @@ defaultLibraryWays = mconcat
     , notStage0 ? platformSupportsSharedLibs ? append [dynamic] ]
 
 flavourLibraryWays :: Ways
-flavourLibraryWays = mconcat
-    [ cmdFlavour == Quick ? quickFlavourWays ]
+flavourLibraryWays = case cmdFlavour of
+    Default  -> mempty
+    Quick    -> quickFlavourWays
+    Quickest -> quickestFlavourWays
 
 defaultRtsWays :: Ways
 defaultRtsWays = do