diff options
author | Alp Mestanogullari <alp@well-typed.com> | 2018-12-17 01:15:45 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-12-17 01:15:46 -0500 |
commit | c42eb2e67ae7f1e77c7bf365b7a41f808bc606cc (patch) | |
tree | 332ccf137bd7f67f7c9afc4db41969a46276c900 /hadrian | |
parent | 205762bd1b7c7bcd7fb041f19f56c9ec08f1cdcc (diff) | |
download | haskell-c42eb2e67ae7f1e77c7bf365b7a41f808bc606cc.tar.gz |
Hadrian: introduce userDefaultFlavour, making default flavour overridable
This patch introduces the `userDefaultFlavour` user setting. It should
be the name of the default flavour to use when no --flavour argument is
passed. Before this patch, we would just always default to... the
`default` flavour. With this patch, we default to whatever Flavour whose
name is `userDefaultFlavour`, therefore providing a way for users to
"persist" their choice of flavour, not having to repeat --flavour=[...]
in every hadrian command.
Test Plan:
Set `userDefaultFlavour = "quickest"`, run `hadrian/build.sh`, check
that the quickest flavour is indeed picked.
Reviewers: snowleopard, bgamari
Reviewed By: snowleopard
Subscribers: mpickering, rwbarton, carter
GHC Trac Issues: #15890
Differential Revision: https://phabricator.haskell.org/D5454
Diffstat (limited to 'hadrian')
-rw-r--r-- | hadrian/doc/user-settings.md | 21 | ||||
-rwxr-xr-x | hadrian/src/Settings.hs | 4 | ||||
-rw-r--r-- | hadrian/src/UserSettings.hs | 9 |
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. |