From 27c06ddde7f9ade7925e308b70f23ccba7828753 Mon Sep 17 00:00:00 2001 From: Mike Pilgrem Date: Sat, 23 Jul 2022 21:32:15 +0100 Subject: [PATCH] Fix #293 Document expressly how installation scripts can be customised The proposed addition does not go into the mechanism (the names of the specific environment variables or the PowerShell parameters) but is more express about in what manner the behaviour of the installation scripts can be changed. Introduces that important flexibility as the first topic under 'More on installation'. Explains that the PowerShell script finally (by default) runs the script for Unix-like operating systems (so a Windows user understands better that the environment variables in the former are applicable to both, and what is meant by the 'final' bootstrap script in the content of the Windows parameters). Refers to what has gone before, under 'Continuous integration', rather than repeat the added content. --- docs/guide.md | 57 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/docs/guide.md b/docs/guide.md index 554c3cc..4c3d61b 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -186,6 +186,51 @@ url-source: # More on installation +## Customisation of the installation scripts + +The scripts offered to install GHCup are available here: + +* [bootstrap-haskell](https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/scripts/bootstrap/bootstrap-haskell#L7) + for Unix-like operating systems +* [bootstrap-haskell.ps1](https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/scripts/bootstrap/bootstrap-haskell.ps1#L17) + for Windows (PowerShell). This will, in turn, run the final bootstrap script + (by default, that for the Unix-like operating systems). + +The effect of the scripts can be customised by setting one or more +`BOOTSTRAP_HASKELL_*` environment variables (as set out in the first script) +and, in the case of Windows, by specifying parameters (as set out in the +PowerShell script). + +For example, you can toggle: + +* non-interactive installation +* a more verbose installation +* whether to install only GHCup (and, on Windows, MSYS2) +* not to trigger the upgrade of GHCup +* whether to install the latest version of HLS +* whether to install the latest version of Stack +* whether to respect the XDG Base Directory Specification +* whether to adjust (prepend) the PATH in `bashrc` +* on Windows, whether to adjust MINGW paths in `cabal.config` + +You can also specify: + +* the GHC version to install +* the Cabal version to install +* which downloader to use (the default is `curl`) +* the base URL for the download of the GHCup binary distribution + +On Windows, you can also use the parameters to: + +* toggle whether to overwrite a previous installation +* specify the GHCup installation root directory +* specify the Cabal root directory +* specify the directory of an existing installation of MSYS2 (for example, + the one supplied by Stack) +* specify the URL of the final bootstrap script +* toggle whether to run the final bootstrap script via `bash` (instead of in a + new MSYS2 shell) + ## Installing custom bindists There are a couple of good use cases to install custom bindists: @@ -301,7 +346,9 @@ Examples: ## Continuous integration -On windows, ghcup can be installed automatically on a CI runner non-interactively like so: +On Windows, GHCup can be installed automatically on a CI runner +non-interactively, as below. The paramaters to the PowerShell script are +specified positionally, after `-ArgumentList`: ```ps Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $false,$true,$true,$false,$false,$false,$false,"C:\" @@ -313,12 +360,10 @@ On linux/darwin/freebsd, run the following on your runner: curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_MINIMAL=1 sh ``` -This will just install `ghcup` and on windows additionally `msys2`. +This will just install `ghcup` and on Windows additionally MSYS2. -For the full list of env variables and parameters to tweak the script behavior, see: - -* [bootstrap-haskell for linux/darwin/freebsd](https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/scripts/bootstrap/bootstrap-haskell#L7) -* [bootstrap-haskell.ps1 for windows](https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/scripts/bootstrap/bootstrap-haskell.ps1#L17) +See the installation scripts referred to above for the full list of environment +variables and, in the case of Windows, parameters to tweak the script behavior. ### github workflows