summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hadrian/doc/user-settings.md21
-rwxr-xr-xhadrian/src/Settings.hs4
-rw-r--r--hadrian/src/UserSettings.hs9
3 files changed, 28 insertions, 6 deletions
diff --git a/hadrian/doc/user-settings.md b/hadrian/doc/user-settings.md
index b81c0dc582..0c6d4ba3cd 100644
--- a/hadrian/doc/user-settings.md
+++ b/hadrian/doc/user-settings.md
@@ -34,7 +34,7 @@ data Flavour = Flavour {
-- | Build GHC with debug information.
ghcDebugged :: Bool }
```
-Hadrian provides several built-in flavours (`defaultFlavour`, `quickFlavour`, and a few
+Hadrian provides several built-in flavours (`default`, `quick`, and a few
others; see `hadrian/doc/flavours.md`), which can be activated from the command line,
e.g. by passing `--flavour=quick`. Users can define new build flavours by adding them
to `userFlavours` list:
@@ -48,7 +48,24 @@ userFlavours = [userFlavour] -- Add more build flavours if need be.
userFlavour :: Flavour
userFlavour = defaultFlavour { name = "user" } -- Modify other settings here.
```
-Now `--flavour=user` will run Hadrian with `userFlavour` settings. In the
+Now `--flavour=user` will run Hadrian with `userFlavour` settings.
+
+When no `--flavour` argument is passed to hadrian, it will use the
+`default` one. You can however change this, and for example make
+the "fallback" flavour be `user`, by changing `userDefaultFlavour`:
+
+``` haskell
+userDefaultFlavour :: String
+-- before:
+-- userDefaultFlavour = "default"
+-- now:
+userDefaultFlavour = "user"
+```
+
+This saves you from having to type `build --flavour=user [...]`
+every time, allowing you to _persist_ the choice of flavour.
+
+In the
following sections we look at specific fields of the `Flavour` record in
more detail. Note: `defaultFlavour`, as well as its individual fields such
as `defaultArgs`, `defaultPackages`, etc. that we use below, are defined in module
diff --git a/hadrian/src/Settings.hs b/hadrian/src/Settings.hs
index 3497f43a1e..99a58db71f 100755
--- a/hadrian/src/Settings.hs
+++ b/hadrian/src/Settings.hs
@@ -8,7 +8,7 @@ import CommandLine
import Expression
import Flavour
import Packages
-import UserSettings
+import UserSettings (userFlavours, userPackages, userDefaultFlavour)
import {-# SOURCE #-} Settings.Default
import Settings.Flavours.Development
@@ -40,7 +40,7 @@ hadrianFlavours =
flavour :: Action Flavour
flavour = do
- flavourName <- fromMaybe "default" <$> cmdFlavour
+ flavourName <- fromMaybe userDefaultFlavour <$> cmdFlavour
let unknownFlavour = error $ "Unknown build flavour: " ++ flavourName
flavours = hadrianFlavours ++ userFlavours
return $ fromMaybe unknownFlavour $ find ((== flavourName) . name) flavours
diff --git a/hadrian/src/UserSettings.hs b/hadrian/src/UserSettings.hs
index 9246806991..e029dadda7 100644
--- a/hadrian/src/UserSettings.hs
+++ b/hadrian/src/UserSettings.hs
@@ -3,8 +3,8 @@
-- If you don't copy the file your changes will be tracked by git and you can
-- accidentally commit them.
module UserSettings (
- userFlavours, userPackages, verboseCommand, buildProgressColour,
- successColour, stage1Only
+ userFlavours, userPackages, userDefaultFlavour,
+ verboseCommand, buildProgressColour, successColour, stage1Only
) where
import Flavour
@@ -14,6 +14,11 @@ import {-# SOURCE #-} Settings.Default
-- See doc/user-settings.md for instructions.
-- Please update doc/user-settings.md when committing changes to this file.
+-- | Name of the default flavour, i.e the one used when no --flavour=<name>
+-- argument is passed to Hadrian.
+userDefaultFlavour :: String
+userDefaultFlavour = "default"
+
-- | User-defined build flavours. See 'userFlavour' as an example.
userFlavours :: [Flavour]
userFlavours = [userFlavour] -- Add more build flavours if need be.