diff --git a/Stackage/CompleteBuild.hs b/Stackage/CompleteBuild.hs index cd7fb51b..897020c6 100644 --- a/Stackage/CompleteBuild.hs +++ b/Stackage/CompleteBuild.hs @@ -1,6 +1,7 @@ {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} +{-# OPTIONS_GHC -fno-warn-type-defaults #-} module Stackage.CompleteBuild ( BuildType (..) , BumpType (..) @@ -41,6 +42,7 @@ data BuildFlags = BuildFlags , bfEnableLibProfile :: !Bool , bfVerbose :: !Bool , bfSkipCheck :: !Bool + , bfGhcOptions :: !String } deriving (Show) data BuildType = Nightly | LTS BumpType @@ -210,6 +212,7 @@ getPerformBuild buildFlags Settings {..} = PerformBuild , pbEnableLibProfiling = bfEnableLibProfile buildFlags , pbVerbose = bfVerbose buildFlags , pbAllowNewer = bfSkipCheck buildFlags + , pbGhcOptions = bfGhcOptions buildFlags } -- | Make a complete plan, build, test and upload bundle, docs and diff --git a/Stackage/InstallBuild.hs b/Stackage/InstallBuild.hs index abe8a14e..6f4a8aec 100644 --- a/Stackage/InstallBuild.hs +++ b/Stackage/InstallBuild.hs @@ -51,6 +51,7 @@ getPerformBuild plan InstallFlags{..} = , pbEnableLibProfiling = ifEnableLibProfiling , pbVerbose = ifVerbose , pbAllowNewer = ifSkipCheck + , pbGhcOptions = [] } -- | Install stackage from an existing build plan. diff --git a/Stackage/PerformBuild.hs b/Stackage/PerformBuild.hs index 52e37cd5..a7eb441c 100644 --- a/Stackage/PerformBuild.hs +++ b/Stackage/PerformBuild.hs @@ -69,6 +69,7 @@ data PerformBuild = PerformBuild , pbVerbose :: Bool , pbAllowNewer :: Bool -- ^ Pass --allow-newer to cabal configure + , pbGhcOptions :: String } data PackageInfo = PackageInfo diff --git a/Stackage/ShakeBuild.hs b/Stackage/ShakeBuild.hs index 156248c4..a02a415d 100644 --- a/Stackage/ShakeBuild.hs +++ b/Stackage/ShakeBuild.hs @@ -323,7 +323,7 @@ packageTarget env@Env{..} name plan = do envmap <- liftIO (fmap (Shake.Env . (++ defaultEnv envPB pwd)) getEnvironment) unpack env name version configure env dir envmap plan - () <- cmd cwd envmap "cabal" "build" "--ghc-options=-O0" + () <- cmd cwd envmap "cabal" "build" ("--ghc-options=" <> pbGhcOptions envPB) register dir envmap envRegLock makeTargetFile (targetForPackage envShake name version) where dir = pkgDir env name version diff --git a/app/stackage.hs b/app/stackage.hs index 8fdd2833..ab33c463 100644 --- a/app/stackage.hs +++ b/app/stackage.hs @@ -90,7 +90,13 @@ main = help "Output verbose detail about the build steps") <*> switch (long "skip-check" <> - help "Skip the check phase, and pass --allow-newer to cabal configure") + help "Skip the check phase, and pass --allow-newer to cabal configure") <*> + option + auto + (long "ghc-options" <> + metavar "OPTIONS" <> + showDefault <> + help "GHC options") nightlyUploadFlags = fromString <$> strArgument (metavar "DATE" <>