Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
3b6bb0df46
|
|||
|
60299b6bb8
|
|||
|
4d20f4e07c
|
|||
|
5f6b5f845d
|
|||
|
b0fecce0d1
|
|||
|
|
27c06ddde7 | ||
|
3154d2839b
|
|||
|
|
511d8d5ed8 | ||
|
fe22405ee1
|
27
CHANGELOG.md
27
CHANGELOG.md
@@ -1,5 +1,32 @@
|
|||||||
# Revision history for ghcup
|
# Revision history for ghcup
|
||||||
|
|
||||||
|
## 0.1.18.0 -- 2022-07-30
|
||||||
|
|
||||||
|
* Fix tui set wrt [#266](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/266) by Arjun Kathuria
|
||||||
|
- Ask the user to install the tool via prompt when setting an non-installed version
|
||||||
|
* improvements to safe (un-)installations
|
||||||
|
- bindists that don't support `make DESTDIR=/some/tmp/dir install` are now unsupported
|
||||||
|
- installed GHC files are now recorded to avoid use of `removePathForcibly`
|
||||||
|
- internally uses a newtype wrapper for user-input paths and restrict destructive operations to validated paths
|
||||||
|
* use of `TMPDIR` is dropped... now uses an internal tmp dir `~/.ghcup/tmp`
|
||||||
|
* improvements to error handling and warnings
|
||||||
|
* Require --isolate to have an absolute directory, fixes #367
|
||||||
|
* Fix mingw PATH handling wrt #371
|
||||||
|
* Add --mingw-path switch to `ghcup run`
|
||||||
|
* Fix `ghcup run` on windows, fixes #375
|
||||||
|
* Allow passing bindist configure args wrt #377
|
||||||
|
* Improve `ghcup compile hls`
|
||||||
|
- short hashes now work
|
||||||
|
- print the long hash in addition to the detected cabal version of HLS
|
||||||
|
- add `--git-describe-version` switch as an alternative to `--overwrite-version`
|
||||||
|
- Allow to build HLS from hackage (now is the default)
|
||||||
|
- Allow to run 'cabal update' automatically before the HLS build
|
||||||
|
- Fix parser and completer for 'ghcup compile hls --version'
|
||||||
|
* Improve `ghcup compile ghc`
|
||||||
|
- short hashes now work
|
||||||
|
- print the long hash in addition to the detected cabal version of HLS
|
||||||
|
- Allow to build from arbitrary GHC source dists
|
||||||
|
|
||||||
## 0.1.17.10 -- 2022-05-12
|
## 0.1.17.10 -- 2022-05-12
|
||||||
|
|
||||||
* windows hotfix (hackage-only release)
|
* windows hotfix (hackage-only release)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ This is a more in-depth guide specific to GHCup. `ghcup --help` is your friend.
|
|||||||
|
|
||||||
## Basic usage
|
## Basic usage
|
||||||
|
|
||||||
For the simple interactive TUI (not available on windows), run:
|
For the simple, interactive, text-based user interface (TUI) (not available on windows), run:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ghcup tui
|
ghcup tui
|
||||||
@@ -186,6 +186,51 @@ url-source:
|
|||||||
|
|
||||||
# More on installation
|
# 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
|
## Installing custom bindists
|
||||||
|
|
||||||
There are a couple of good use cases to install custom bindists:
|
There are a couple of good use cases to install custom bindists:
|
||||||
@@ -301,7 +346,9 @@ Examples:
|
|||||||
|
|
||||||
## Continuous integration
|
## 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
|
```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:\"
|
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
|
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:
|
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.
|
||||||
* [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)
|
|
||||||
|
|
||||||
### github workflows
|
### github workflows
|
||||||
|
|
||||||
|
|||||||
@@ -301,8 +301,9 @@ installUnpackedGHC path inst ver forceInstall addConfArgs
|
|||||||
| otherwise = do
|
| otherwise = do
|
||||||
PlatformRequest {..} <- lift getPlatformReq
|
PlatformRequest {..} <- lift getPlatformReq
|
||||||
|
|
||||||
let alpineArgs
|
let ldOverride
|
||||||
| ver >= [vver|8.2.2|], Linux Alpine <- _rPlatform
|
| ver >= [vver|8.2.2|]
|
||||||
|
, _rPlatform `elem` [Linux Alpine, Darwin]
|
||||||
= ["--disable-ld-override"]
|
= ["--disable-ld-override"]
|
||||||
| otherwise
|
| otherwise
|
||||||
= []
|
= []
|
||||||
@@ -310,7 +311,7 @@ installUnpackedGHC path inst ver forceInstall addConfArgs
|
|||||||
lift $ logInfo "Installing GHC (this may take a while)"
|
lift $ logInfo "Installing GHC (this may take a while)"
|
||||||
lEM $ execLogged "sh"
|
lEM $ execLogged "sh"
|
||||||
("./configure" : ("--prefix=" <> fromInstallDir inst)
|
("./configure" : ("--prefix=" <> fromInstallDir inst)
|
||||||
: (alpineArgs <> (T.unpack <$> addConfArgs))
|
: (ldOverride <> (T.unpack <$> addConfArgs))
|
||||||
)
|
)
|
||||||
(Just $ fromGHCupPath path)
|
(Just $ fromGHCupPath path)
|
||||||
"ghc-configure"
|
"ghc-configure"
|
||||||
|
|||||||
@@ -659,7 +659,7 @@ ask_hls() {
|
|||||||
warn "Do you want to install haskell-language-server (HLS)?"
|
warn "Do you want to install haskell-language-server (HLS)?"
|
||||||
warn "HLS is a language-server that provides IDE-like functionality"
|
warn "HLS is a language-server that provides IDE-like functionality"
|
||||||
warn "and can integrate with different editors, such as Vim, Emacs, VS Code, Atom, ..."
|
warn "and can integrate with different editors, such as Vim, Emacs, VS Code, Atom, ..."
|
||||||
warn "Also see https://github.com/haskell/haskell-language-server/blob/master/README.md"
|
warn "Also see https://haskell-language-server.readthedocs.io/en/stable/"
|
||||||
warn ""
|
warn ""
|
||||||
warn "[Y] Yes [N] No [?] Help (default is \"N\")."
|
warn "[Y] Yes [N] No [?] Help (default is \"N\")."
|
||||||
warn ""
|
warn ""
|
||||||
|
|||||||
Reference in New Issue
Block a user