[commit: ghc] wip/nfs-locking: Enable optional UserSettings.hs file (123bdb3)

git at git.haskell.org git at git.haskell.org
Fri Oct 27 00:16:35 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nfs-locking
Link       : http://ghc.haskell.org/trac/ghc/changeset/123bdb37674bfe60509886ec92c99e80b0588966/ghc

>---------------------------------------------------------------

commit 123bdb37674bfe60509886ec92c99e80b0588966
Author: Kai Harries <kai.harries at gmail.com>
Date:   Sat May 28 17:53:07 2016 +0200

    Enable optional UserSettings.hs file
    
    Fix #247
    
    The defaul user settings are stored in ./src/UserSettings.hs. If the
    user want to override these settings, he can copy this file into ./ and
    make the desired changes to ./UserSettings.hs.


>---------------------------------------------------------------

123bdb37674bfe60509886ec92c99e80b0588966
 .gitignore                                |   3 +
 README.md                                 |   3 +-
 doc/user-settings.md                      |   5 +-
 hadrian.cabal                             |   3 +-
 src/Settings/User.hs                      | 103 ++----------------------------
 src/{Settings/User.hs => UserSettings.hs} |   8 ++-
 6 files changed, 20 insertions(+), 105 deletions(-)

diff --git a/.gitignore b/.gitignore
index b7bfddb..5307cdd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,6 @@ cabal.sandbox.config
 
 # build.stack.sh specific
 /.stack-work/
+
+# the user settings
+/UserSettings.hs
diff --git a/README.md b/README.md
index e4fb7dc..b1da6f7 100644
--- a/README.md
+++ b/README.md
@@ -88,7 +88,7 @@ by Shake oracles.
 #### User settings
 
 The `make`-based build system uses `mk/build.mk` to specify user build settings. We
-use [`src/Settings/User.hs`][user-settings] for the same purpose, see
+use `./UserSettings.hs` for the same purpose, see
 [documentation](doc/user-settings.md).
 
 #### Clean and full rebuild
@@ -155,7 +155,6 @@ helped me endure and enjoy the project.
 [windows-build]: https://github.com/snowleopard/hadrian/blob/master/doc/windows.md
 [build-artefacts-issue]: https://github.com/snowleopard/hadrian/issues/113
 [ghc-split-objs-bug]: https://ghc.haskell.org/trac/ghc/ticket/11315
-[user-settings]: https://github.com/snowleopard/hadrian/blob/master/src/Settings/User.hs
 [test-issue]: https://github.com/snowleopard/hadrian/issues/197
 [dynamic-issue]: https://github.com/snowleopard/hadrian/issues/4
 [validation-issue]: https://github.com/snowleopard/hadrian/issues/187
diff --git a/doc/user-settings.md b/doc/user-settings.md
index 1433ae9..a5185ad 100644
--- a/doc/user-settings.md
+++ b/doc/user-settings.md
@@ -1,7 +1,8 @@
 # User settings
 
-You can customise Hadrian by specifying user build settings in file
-`src/Settings/User.hs`. Here we document currently supported settings.
+You can customise Hadrian by copying the file ./src/UserSettings.hs to
+./UserSettings.hs and specifying user build settings in
+`./UserSettings.hs`. Here we document currently supported settings.
 
 ## Build directory
 
diff --git a/hadrian.cabal b/hadrian.cabal
index c9d5551..3bbc2dd 100644
--- a/hadrian.cabal
+++ b/hadrian.cabal
@@ -16,7 +16,8 @@ source-repository head
 
 executable hadrian
     main-is:             Main.hs
-    hs-source-dirs:      src
+    hs-source-dirs:      .
+                       , src
     other-modules:       Base
                        , Builder
                        , CmdLineFlag
diff --git a/src/Settings/User.hs b/src/Settings/User.hs
index 16c7c25..9588297 100644
--- a/src/Settings/User.hs
+++ b/src/Settings/User.hs
@@ -5,101 +5,8 @@ module Settings.User (
     turnWarningsIntoErrors, splitObjects, verboseCommands, putBuild, putSuccess
     ) where
 
-import System.Console.ANSI
-
-import Base
-import CmdLineFlag
-import GHC
-import Predicate
-import Settings.Default
-
--- See doc/user-settings.md for instructions.
-
--- | All build results are put into 'buildRootPath' directory.
-buildRootPath :: FilePath
-buildRootPath = "_build"
-
--- | Modify default build command line arguments.
-userArgs :: Args
-userArgs = builder Ghc ? remove ["-Wall", "-fwarn-tabs"]
-
--- | Modify the set of packages that are built by default in each stage.
-userPackages :: Packages
-userPackages = mempty
-
--- | Add user defined packages. Don't forget to add them to 'userPackages' too.
-userKnownPackages :: [Package]
-userKnownPackages = []
-
--- | Choose the integer library: 'integerGmp' or 'integerSimple'.
-integerLibrary :: Package
-integerLibrary = integerGmp
-
--- FIXME: We skip 'dynamic' since it's currently broken #4.
--- | Modify the set of ways in which library packages are built.
-userLibraryWays :: Ways
-userLibraryWays = remove [dynamic]
-
--- | Modify the set of ways in which the 'rts' package is built.
-userRtsWays :: Ways
-userRtsWays = mempty
-
--- | User defined flags. Note the following type semantics:
--- * @Bool@: a plain Boolean flag whose value is known at compile time.
--- * @Action Bool@: a flag whose value can depend on the build environment.
--- * @Predicate@: a flag whose value can depend on the build environment and
--- on the current build target.
-
--- TODO: Drop 'trackBuildSystem' as it brings negligible gains.
--- | Set this to True if you are making any changes in the build system and want
--- appropriate rebuilds to be initiated. Switching this to False speeds things
--- up a little (particularly zero builds).
--- WARNING: a complete rebuild is required when changing this setting.
-trackBuildSystem :: Bool
-trackBuildSystem = True
-
--- TODO: This should be set automatically when validating.
-validating :: Bool
-validating = False
-
--- | Control when split objects are generated. Note, due to the GHC bug #11315
--- it is necessary to do a full clean rebuild when changing this option.
-splitObjects :: Predicate
-splitObjects = (return cmdSplitObjects) &&^ defaultSplitObjects
-
--- | Control when to build Haddock documentation.
-buildHaddock :: Predicate
-buildHaddock = return cmdBuildHaddock
-
--- TODO: Do we need to be able to set these from command line?
--- TODO: Turn the flags below into a simple list @ghcWays :: [Way]@?
-dynamicGhcPrograms :: Bool
-dynamicGhcPrograms = False
-
-ghciWithDebugger :: Bool
-ghciWithDebugger = False
-
-ghcProfiled :: Bool
-ghcProfiled = False
-
-ghcDebugged :: Bool
-ghcDebugged = False
-
--- TODO: Replace with stage2 ? arg "-Werror"? Also see #251.
--- | To enable -Werror in Stage2 set turnWarningsIntoErrors = stage2.
-turnWarningsIntoErrors :: Predicate
-turnWarningsIntoErrors = return False
-
--- | Set to True to print full command lines during the build process. Note,
--- this is a Predicate, hence you can enable verbose output only for certain
--- targets, e.g.: @verboseCommands = package ghcPrim at .
-verboseCommands :: Predicate
-verboseCommands = return False
-
--- | Customise build progress messages (e.g. executing a build command).
-putBuild :: String -> Action ()
-putBuild = putColoured Vivid White
-
--- | Customise build success messages (e.g. a package is built successfully).
-putSuccess :: String -> Action ()
-putSuccess = putColoured Vivid Green
+-- Import the actual user settings from the module UserSettings.
+-- The user can put an UserSettings.hs file into the hadrian root
+-- folder that takes precedence over the default UserSettings.hs
+-- file located in src/.
+import UserSettings
diff --git a/src/Settings/User.hs b/src/UserSettings.hs
similarity index 94%
copy from src/Settings/User.hs
copy to src/UserSettings.hs
index 16c7c25..7560aa1 100644
--- a/src/Settings/User.hs
+++ b/src/UserSettings.hs
@@ -1,4 +1,8 @@
-module Settings.User (
+--
+-- If you want to customize your build you should copy this file from
+-- ./src/UserSettings.hs to ./UserSettings.hs and only edit your copy.
+--
+module UserSettings (
     buildRootPath, trackBuildSystem, userArgs, userPackages, userLibraryWays,
     userRtsWays, userKnownPackages, integerLibrary, buildHaddock, validating,
     ghciWithDebugger, ghcProfiled, ghcDebugged, dynamicGhcPrograms,
@@ -74,7 +78,7 @@ buildHaddock = return cmdBuildHaddock
 -- TODO: Do we need to be able to set these from command line?
 -- TODO: Turn the flags below into a simple list @ghcWays :: [Way]@?
 dynamicGhcPrograms :: Bool
-dynamicGhcPrograms = False
+dynamicGhcPrograms = True
 
 ghciWithDebugger :: Bool
 ghciWithDebugger = False



More information about the ghc-commits mailing list