Compare commits

...

2026 Commits

Author SHA1 Message Date
Julian Ospald 7daf199610
Merge remote-tracking branch 'origin/pr/1048' 2024-04-27 16:09:04 +08:00
David Binder 23c185e3e0 Fix user guide w.r.t. ghcjs cross bindist installs
Installing a ghcjs bindist might require to install
a specific version of emscripten, and not the latest.
2024-04-24 02:02:17 +02:00
Julian Ospald 682e0e94f7
Clean up docs warnings 2024-04-23 20:12:20 +08:00
Julian Ospald 814f0cd184
Fix CSS 2024-04-23 20:07:22 +08:00
Julian Ospald 15a8137c99
Merge branch 'issue-1040' 2024-04-23 19:42:11 +08:00
Julian Ospald 7d662bb020
Document how to use GHCup's msys2 with stack, fixes #1040 2024-04-23 19:40:56 +08:00
Julian Ospald df6205c482
Merge remote-tracking branch 'origin/pr/1041' 2024-04-22 23:09:17 +08:00
Julian Ospald 7a9d897c14
Hackage package 2024-04-22 19:27:32 +08:00
Julian Ospald 183498df7e
Extend information about transition period 2024-04-22 19:23:28 +08:00
Julian Ospald 53695fbb11
Add section about project ownership and emergency procedures 2024-04-22 19:01:09 +08:00
Artem Pelenitsyn ca10f8ce62
!fixup 2024-04-21 21:40:52 -04:00
Artem Pelenitsyn 978c6d2704
Update guide.md: use the latest prelease channel version in the example
Plus a tiny bit of copy editing.
2024-04-21 21:37:27 -04:00
Julian Ospald eebbc9908b
Merge branch 'issue-1036' 2024-04-07 21:40:09 +08:00
Julian Ospald b37ac53aaf
Fix windows process creation handling wrt #1036 2024-04-07 18:07:01 +08:00
Julian Ospald be4a1bdf7a
Update submodule 2024-03-31 22:09:42 +08:00
Julian Ospald 7cad0ca9fe
Merge branch 'issue-1032' 2024-03-31 22:09:07 +08:00
Julian Ospald bd6ac3068b
Use ld.gold on armv7 2024-03-31 20:30:37 +08:00
Julian Ospald 1e634131ca
Revert to old GHCs for armv7 2024-03-31 19:36:59 +08:00
Julian Ospald 87c61def9b
Fix missing C++ toolchain 2024-03-31 19:04:49 +08:00
Julian Ospald 11a3bd3e1b
Force ld.gold for armv7 2024-03-31 18:31:01 +08:00
Julian Ospald 243b200fb8
Add defGHCConfOptions option 2024-03-31 18:23:30 +08:00
Julian Ospald 700cf74001
Fix linux cross CI 2024-03-23 16:11:09 +08:00
Julian Ospald 95ac5c8fc6
Use deb 11 2024-03-23 15:18:56 +08:00
Julian Ospald 68225c1933
Update metadata submodule 2024-03-23 14:37:30 +08:00
Julian Ospald 1e0843d2ce
Update cross images 2024-03-23 14:24:38 +08:00
Julian Ospald b853443c9e
Update cross CI 2024-03-23 13:47:34 +08:00
Julian Ospald 7a684add89
Pass --disable-ld-override when installing/compiling GHC
Fixes #1032

Users can still run 'ghcup install ghc <ver> -- enable-ld-override'
2024-03-23 13:47:33 +08:00
Julian Ospald 63e714d1b1
Merge branch 'stack-ci' 2024-03-16 18:50:20 +08:00
Julian Ospald 3675c6b16c
Add contribution section to docs 2024-03-16 18:46:38 +08:00
Julian Ospald 7f8bb14112
Document cabal.project files etc. 2024-03-16 18:27:12 +08:00
Julian Ospald a4290909b4
Use platform specific project files 2024-03-16 18:11:39 +08:00
Julian Ospald 36fb39553d
Fix refreeze 2024-03-16 17:32:38 +08:00
Julian Ospald 18abdbf2d9
Fix cabal.project for windows 2024-03-16 17:16:29 +08:00
Julian Ospald 89ac09bbe1
Add cabal.project workflow 2024-03-16 16:38:48 +08:00
Julian Ospald 65bf155326
Add stack.yaml workflow 2024-03-16 16:38:47 +08:00
Julian Ospald 6801bf9d88
Fix 'stack build', fixes #1026 2024-03-16 16:14:39 +08:00
Julian Ospald 456200e747
Update CHANGELOG 2024-03-13 21:14:14 +08:00
Julian Ospald 09e199a176
Bump bootstrap script to 0.1.22.0 2024-03-13 20:54:23 +08:00
Julian Ospald 2ecc61ad92
Disable system-libyaml for release builds 2024-03-13 18:47:10 +08:00
Julian Ospald dd8b23ff86
Force maerwald runners 2024-03-13 18:34:29 +08:00
Julian Ospald d78e7af80c
Update changelog 2024-03-13 16:22:34 +08:00
Julian Ospald cf8ed4211b
Merge branch 'checkout-4' 2024-03-13 12:05:44 +08:00
Julian Ospald 39931d98b9
Bump checkout action to 4 2024-03-13 10:34:46 +08:00
Julian Ospald ac18c044e1
Merge branch 'cross-wasm-commits' 2024-03-11 21:45:18 +08:00
Julian Ospald e5c941b4d7
Merge branch 'issue-1019' 2024-03-11 21:44:49 +08:00
Julian Ospald 065b307d60
Fix cabal.project.release 2024-03-11 17:59:45 +08:00
Julian Ospald 5eaae9916d
Allow to remove all unset versions, fixes #1019 2024-03-11 17:42:26 +08:00
Julian Ospald 5d0a7b71a2
Merge branch 'issue-1016' 2024-03-11 17:34:21 +08:00
Julian Ospald b4600b8183
Merge branch 'issue-1013' 2024-03-11 17:33:28 +08:00
Julian Ospald f465243fc6
Merge branch 'bzlib-cve' 2024-03-11 17:32:29 +08:00
Julian Ospald e4b0e8debf
Use fixed bzlib 2024-03-11 17:31:57 +08:00
Julian Ospald d9d13dda5f
Fix crash in 'ghcup tui' on windows
* https://github.com/haskell/ghcup-hs/issues/1013
* https://github.com/jtdaugherty/brick/issues/502#issuecomment-1974980299
* 4c395182cb
2024-03-03 14:44:20 +08:00
Julian Ospald aef10a699e
Add viPreInstall wrt #1016 2024-03-02 17:44:40 +08:00
Julian Ospald b413ade4db
Update docs for ghc-wasm-meta 2024-03-02 13:01:28 +08:00
Julian Ospald 190d308ddf
Bump ghcup to 0.1.22.0 2024-03-01 22:33:58 +08:00
Julian Ospald 4314146247
Merge remote-tracking branch 'origin/issue-1004' 2024-03-01 22:15:13 +08:00
Julian Ospald 4831798c9e
Merge branch 'issue-982' 2024-02-21 16:50:24 +08:00
Julian Ospald e999e6f5b8
Merge branch 'refreezeee' 2024-02-21 16:27:36 +08:00
Julian Ospald 3ad785c116
Refreeze, update stack.yaml, etc. 2024-02-21 15:32:35 +08:00
Julian Ospald be3db87410
Clean up on error, fixes #1004 2024-02-18 20:07:12 +08:00
Julian Ospald 57d23c477d
Update hie.yaml 2024-02-18 19:53:46 +08:00
Julian Ospald 0ec07636fb
Merge branch 'issue-998' 2024-02-18 19:53:23 +08:00
Julian Ospald bdd15ad6e7
Beef up --overwrite-version, fixes #998 2024-02-18 19:52:01 +08:00
Julian Ospald 96f7aa5c62
Allow to set ghcup msys2 environment
Fixes #982
2024-02-18 16:22:20 +08:00
Julian Ospald 2fdf896fbd
Begone travis 2024-02-12 23:58:51 +08:00
Julian Ospald 251c82ee9f
Begone gitlab 2024-02-12 23:58:10 +08:00
Julian Ospald c2186bb33c
Merge branch 'issue-233' 2024-02-09 21:45:02 +08:00
Julian Ospald 1a9d43ea1a
Allow all runners 2024-02-09 21:41:34 +08:00
Julian Ospald 9de324d3c3
Merge remote-tracking branch 'origin/windows-bootstrap-fail-on-non-x86' 2024-02-09 21:40:40 +08:00
Julian Ospald b53acfe61f
Drop enforcing clang on FreeBSD (why did we ever do that?) 2024-02-09 21:36:53 +08:00
Rune K. Svendsen c92f71471d Windows bootstrap: fail on non-x86 2024-02-07 10:50:38 +01:00
Julian Ospald 2a79c669a5
Update release scripts 2024-02-03 00:16:18 +08:00
Julian Ospald 9b2d326c38
Merge branch 'freebsd' 2024-02-03 00:15:53 +08:00
Julian Ospald 2bfca3760c
Finalize FreeBSD CI 2024-02-02 23:05:14 +08:00
Julian Ospald 0f7f5347d8
Force x86 self hosted runners for cross 2024-02-02 16:22:24 +08:00
Julian Ospald 80703d7b29
Be more portable wrt sourcing scripts 2024-02-02 16:18:50 +08:00
Julian Ospald 942685f396
Also dump env into ~/.profile, fixes #763 2024-02-02 15:40:31 +08:00
Julian Ospald 02744ff4a0
Don't spam bashrc with commented lines 2024-02-02 15:31:32 +08:00
Julian Ospald c74409b9a5
Remove cleanup hack on ARM64 Linux 2024-02-01 16:02:34 +08:00
Julian Ospald 1c32dbc88a
Also install libiconv on FreeBSD 2024-02-01 16:02:20 +08:00
Julian Ospald ab17270761
Use self-hosted FreeBSD runner 2024-02-01 00:08:25 +08:00
Julian Ospald d0538a50e0
Don't error when cleanup action fails 2024-01-30 16:32:29 +08:00
Julian Ospald 318ac21e41
Merge branch 'tui-scrolling' 2024-01-25 19:48:24 +08:00
Julian Ospald 3e9bb7c369
Restore TUI scrolling to old behavior 2024-01-22 22:39:45 +08:00
Julian Ospald 2c64cd0f02
Merge branch 'issue-981' 2024-01-22 16:04:54 +08:00
Julian Ospald 59e6b65249
Make sure .bashrc is adjusted on windows during installation
Fixes #981
2024-01-22 15:52:27 +08:00
Julian Ospald 91ef2c7666
Merge branch 'issue-983' 2024-01-22 13:51:45 +08:00
Julian Ospald 935cb5541b
Fix 'versions' version to resolver #983 2024-01-21 22:01:08 +08:00
Julian Ospald 9a7eb11c73
Merge branch 'issue-978' 2024-01-21 16:34:31 +08:00
Julian Ospald 4b338ccfd8
Fix windows ghcup test script 2024-01-21 15:29:12 +08:00
Julian Ospald ca92b29ffe
Fix optparse tests on windows 2024-01-21 14:00:53 +08:00
Julian Ospald ec4e69e89d
Fix indentation 2024-01-21 13:52:49 +08:00
Julian Ospald c225f2cfee
Fix language-c on windows 2024-01-21 13:51:54 +08:00
Julian Ospald e325728f38
Fix windows golden test 2024-01-21 13:47:03 +08:00
Julian Ospald c9a44d211e
Update .gitignore 2024-01-20 18:24:17 +08:00
Julian Ospald 4b3ffd8570
Use file-uri for better URI handling, fixes #978 2024-01-20 18:23:08 +08:00
Julian Ospald 3e9746cf0c
Fix cabal.project.release 2024-01-20 17:58:04 +08:00
Julian Ospald 950155cbe3
Fix hlint 2024-01-20 17:50:40 +08:00
Julian Ospald dd978ff2fd
Merge branch 'issue-967' 2024-01-20 17:48:51 +08:00
Julian Ospald 4bbaffaa6f
Update project files 2024-01-20 17:43:12 +08:00
Julian Ospald 2a12362e75
Merge branch 'issue-408' 2024-01-20 17:40:21 +08:00
Julian Ospald 411ac8dc31
Refreeze 2024-01-20 17:37:08 +08:00
Julian Ospald b837a93176
Merge remote-tracking branch 'origin/pr/943' 2024-01-20 16:59:53 +08:00
Julian Ospald 1c56e782d2
Revert GHC bump on alpine32 wrt #962 2024-01-20 16:58:38 +08:00
Julian Ospald c6c61ca486
Merge remote-tracking branch 'origin/update-ci2' 2024-01-20 16:56:12 +08:00
Julian Ospald 6ae312c1f9
Merge remote-tracking branch 'origin/tar' 2024-01-20 16:55:46 +08:00
Julian Ospald f6cf4cb90c
Merge remote-tracking branch 'origin/fix-957' 2024-01-20 16:54:42 +08:00
Julian Ospald 3ff65219e8
Merge remote-tracking branch 'origin/pr/976' 2024-01-20 16:52:31 +08:00
Julian Ospald e33f554838
Merge branch 'disable-cabal-xdg' 2024-01-20 16:48:43 +08:00
Julian Ospald 2850f343b9
Disable cabal XDG by default 2024-01-16 23:59:39 +08:00
Geoffrey Noel 8d6445c632 Assume /home/gnoel/.local/share if XDG_DATA_HOME is not set 2024-01-13 18:35:37 -05:00
Geoffrey Noel de611e0d4e Consider STACK_XDG env to determine the stack root path 2024-01-13 15:34:14 -05:00
Rune K. Svendsen 6fec9d4737 Quote version in `Pretty NotInstalled` instance 2024-01-11 11:42:56 +01:00
Rune K. Svendsen 856e48aa14 Make HLint happy 2024-01-09 10:26:46 +01:00
Rune K. Svendsen 2cafd9d2bc Fix redundant import warning 2024-01-09 10:22:51 +01:00
Rune K. Svendsen 87ec8c756f Move ArchiveResult into GHCup.Utils.Tar.Types
So a module that wants to import ArchiveResult doesn't have to worry about CPP.
2024-01-09 10:19:58 +01:00
Julian Ospald 2ece023c0f
Fix coding suggestions 2024-01-07 22:03:06 +08:00
Julian Ospald 16e20ed474
Set LD=ld.bfd on Alpine linux during bindist configure 2024-01-04 20:53:21 +08:00
Julian Ospald afd7e7dc4f
Re-introduce tar 2024-01-03 17:56:33 +08:00
Julian Ospald d46bdbf959
Fix misinterpretation of '+' in URI paths, fixes #408 2024-01-03 00:42:01 +08:00
Julian Ospald cac3cec135
Use i386/alpine:3.16 2024-01-02 19:08:56 +08:00
Julian Ospald 4e0efff4c4
Fix tests 2024-01-02 19:08:56 +08:00
Julian Ospald 71b7c96ddd
Use alpine:3.12
It appears tat at least alpine:3.16 is broken
and produces linking errors.
2024-01-02 19:08:56 +08:00
Julian Ospald 5ff61cdf86
Bump toolchain in cirrus CI 2024-01-02 19:08:56 +08:00
Julian Ospald 7d0ba7fc62
Bump llvm to 13 2024-01-02 19:08:56 +08:00
Julian Ospald bfe56aed1f
Fix Dockerfile 2024-01-02 19:08:56 +08:00
Julian Ospald a1103c05a5
Update ARM docker images 2024-01-02 19:08:56 +08:00
Julian Ospald 125125b9db
Downgrade cabal on armv7 2024-01-02 19:08:55 +08:00
Julian Ospald 4eec582f1b
Update alpine docker containers 2024-01-02 19:08:55 +08:00
Julian Ospald e969489ca2
Fix build on windows 2024-01-02 19:08:55 +08:00
Julian Ospald ec4a657b42
Update tools in CI 2024-01-02 19:08:55 +08:00
Julian Ospald 55030d83da
Merge branch 'issue-958' 2024-01-01 21:40:36 +08:00
Rune K. Svendsen dfe213824f Improve NoDownload Pretty instance on missing/unknown "mtarget"
The guard was only used for the "Perhaps you meant"-part, so include the other part regardless of what `mtarget` is.
2023-12-30 14:13:16 +01:00
Julian Ospald c680a9f33b
Support cygwin in bootstrap-haskell too
Fixes #958
2023-12-29 19:56:38 +08:00
Julian Ospald df192ee18e
Merge remote-tracking branch 'origin/pr/956' 2023-12-26 21:41:40 +08:00
Rune K. Svendsen 008def2ff4 Add comment about why we ignore this error 2023-12-20 10:26:42 +01:00
Rune K. Svendsen 3976daddb7 bootstrap-haskell.ps1: don't exit if tmp file removal fails 2023-12-20 10:21:22 +01:00
Julian Ospald 524cdbbeb1
Merge remote-tracking branch 'origin/pr/953' 2023-12-15 23:53:59 +08:00
Julian Ospald a01c5acfe2
Update submodules 2023-12-15 23:53:41 +08:00
Rune K. Svendsen 6689312ac5 docs: remove "TUI not supported on Windows"
TUI works on Windows since v0.1.20.0 (cf. https://github.com/haskell/ghcup-hs/pull/912)
2023-12-15 16:49:55 +01:00
Julian Ospald e214695a3e
Merge remote-tracking branch 'origin/pr/850' 2023-12-02 18:42:22 +08:00
Yuto Tanaka 9d7f99bd00 Fix many typos 2023-11-30 18:12:46 +09:00
Julian Ospald 3cea6ef97c
Merge remote-tracking branch 'origin/pr/937' 2023-11-28 21:25:12 +08:00
Julian Ospald 3b0f131a65
Merge remote-tracking branch 'origin/pr/940' 2023-11-28 21:08:49 +08:00
konsumlamm e0a3020e34
Update WASM install instructions 2023-11-28 13:55:52 +01:00
Luis Morillo 0e46b9509a complete tutorial. remove show all tools from widgets. resolve some conflicts. 2023-11-23 16:05:12 +01:00
Luis Morillo d3474d0cd9 add KeyInfo handler and widget. Improve tutorial 2023-11-23 15:32:23 +01:00
Luis Morillo 5c3dad1bb9 reorganize code by sections 2023-11-23 15:31:33 +01:00
Luis Morillo 987cdaf313 factor out attr names. Add windows symbols to tutotial widget. Improve tutorial aesthetics and text 2023-11-23 15:28:21 +01:00
Luis Morillo 835352428a simplify rendering for better ux 2023-11-23 15:28:19 +01:00
Luis Morillo 8f4246e716 Use proper Name type and Modal type. Create tutorial Widget 2023-11-23 15:27:33 +01:00
Luis Morillo 1353a2fd20 use map-like data structure 2023-11-23 15:26:49 +01:00
Luis Morillo aa9fbdbfc2 Use MonadState Instance to simplify install', del', set' and changelog'. Lensify the app 2023-11-23 15:24:24 +01:00
Julian Ospald 3a8cdf9967
Fix opening changelog on windows 2023-11-20 22:36:17 +08:00
Julian Ospald 2caf491e9d
Remove the "show all tool" config
We show all tools at the moment anyway.
2023-11-18 18:55:06 +08:00
Julian Ospald d277e56121
Improve logging by dropping trailing newline 2023-11-18 13:09:19 +08:00
Julian Ospald 335099ad19
Add rocky/void detection 2023-11-17 17:03:10 +08:00
Julian Ospald b1106985ec
Merge branch 'monday-improvements' 2023-11-14 23:16:42 +08:00
Julian Ospald cd8ce9aaa9
Update test artifact upload 2023-11-14 22:11:28 +08:00
Julian Ospald 18f0cb086b
Fix tests 2023-11-14 09:37:07 +08:00
Julian Ospald dee54445bf
Merge remote-tracking branch 'origin/pr/928' 2023-11-13 17:50:37 +08:00
Bryan Richter 2df59fd1b3
Emphasize experimental nature of wasm and js 2023-11-13 11:28:14 +02:00
Julian Ospald 2e5dee8e1a
Add mechanism to warn on new metadata versions, fixes #860 2023-11-13 16:53:24 +08:00
Julian Ospald c6aa5c3ed7
Don't remove share dir link prematurely 2023-11-13 16:00:48 +08:00
Julian Ospald 47ef380ebd
Add update-shell-completions.sh 2023-11-13 16:00:31 +08:00
Julian Ospald d6601b0353
Remove globalTools from metadata 2023-11-13 15:39:58 +08:00
Julian Ospald 0eba225723
Update modgraph 2023-11-13 15:21:54 +08:00
Julian Ospald e7d91d138b
Improve metadata documentation 2023-11-13 15:19:58 +08:00
Julian Ospald 0103e2771e
Merge branch 'sunday-improvements' 2023-11-12 22:50:09 +08:00
Julian Ospald b6246734e4
Givee cross bindists it's own doc section 2023-11-12 18:47:54 +08:00
Julian Ospald 6146c3494f
Improve documentation for cross bindists 2023-11-12 18:39:06 +08:00
Julian Ospald e5a7a2da70
Fix prefetch for cross bindists 2023-11-12 18:21:49 +08:00
Julian Ospald 6047614a16
Be less confusing when user tries to 'set' ghcup in TUI
Fixes #923
2023-11-12 17:36:00 +08:00
Julian Ospald 6a86e9e77e
Fix failure mode when metadata is garbage, fixes #921 2023-11-12 17:11:33 +08:00
Julian Ospald 4132447e04
Require user to explicitly choose subcommand for 'ghcup config'
This should further reduce confusion wrt #922
2023-11-12 16:49:39 +08:00
Julian Ospald 9d223730de
Error out on empty UserSettings wrt #922 2023-11-12 16:49:06 +08:00
Julian Ospald ad9199568b
Don't download twice when trying stack decoding 2023-11-12 16:24:39 +08:00
Julian Ospald 0d91c2ac14
Make install error more visible 2023-11-12 15:59:15 +08:00
Julian Ospald 8644ca41e1
Merge remote-tracking branch 'origin/pr/924' 2023-11-12 12:19:56 +08:00
Cheng Shao 6051c0cfbc
Bump minimum windows version to 8.1 2023-11-11 06:18:13 +01:00
Julian Ospald 67d977ce39
Update metadata submodule 2023-11-10 21:42:31 +08:00
Julian Ospald 8b6b3d2fbe
Update bootstrap script ghver 2023-11-10 21:41:19 +08:00
Julian Ospald a5d228ba89
Bump to 0.1.20.0 2023-11-10 19:53:04 +08:00
Julian Ospald a7be1e7068
Merge branch 'brick-windows' 2023-11-10 19:32:20 +08:00
Julian Ospald 30a10d871a
Update bootstrap script 2023-11-09 23:42:31 +08:00
Julian Ospald 90b0281c1c
Merge remote-tracking branch 'origin/pr/918' 2023-11-09 23:30:05 +08:00
Tom Smeding bba92baeb1 Fix typo in ToolShadowed error for stack 2023-11-09 13:41:21 +01:00
Julian Ospald e06a1c03d4
Merge remote-tracking branch 'origin/pr/911' 2023-11-09 18:00:06 +08:00
Julian Ospald 0171f2e870
Merge branch 'issue-914' 2023-11-09 17:53:42 +08:00
Julian Ospald da078c7362
Use prompt for desktop shortcuts, fixes #914 2023-11-09 17:24:41 +08:00
Julian Ospald 94b4b7c455
Merge branch 'issue-913' 2023-11-06 22:12:46 +08:00
Julian Ospald 6aa486594a
Redo ghc-install.sh, fixes #913 2023-11-06 18:23:02 +08:00
Julian Ospald 2c3148abcc
Update supported tools table, fixes #915 2023-11-06 18:20:36 +08:00
Julian Ospald dde32fa72e
Ensure patched version of vty-windows is used 2023-11-06 17:35:20 +08:00
Julian Ospald 675ab17fff
Improve signs on windows (no unicode) 2023-11-05 22:29:55 +08:00
Julian Ospald 9fcacbd96b
Fix CPP defines for windows+brick 2023-11-05 22:22:53 +08:00
Julian Ospald ba4c6e5b99
Relax vector upper bound 2023-11-05 17:33:54 +08:00
Julian Ospald f2b139b58b
Drop temp source-repository stanza for 'versions' 2023-11-05 17:32:25 +08:00
Julian Ospald a44bf5884d
Enable tui for windows in release builds 2023-11-05 17:32:25 +08:00
Julian Ospald 64c1d63d33
Allow tui flag for windows as well 2023-11-05 17:32:25 +08:00
Julian Ospald 0300d8f2cc
Bump for brick windows 2023-11-05 17:20:29 +08:00
citrusmunch bb395b652d
Fix typo in `guide.md`
xdg section is below (not above)
2023-11-01 12:04:43 -04:00
Julian Ospald 59bfdd9a30
Stack docs improvement 2023-10-25 15:01:18 +08:00
Julian Ospald d85accb08e
Merge branch 'improve-stack-setup-use' 2023-10-25 15:01:04 +08:00
Julian Ospald c7439d3c89
Improve stack metadata support wrt #892 2023-10-25 14:00:01 +08:00
Julian Ospald 38cd5ad8ed
Merge branch 'improved-key-brick' 2023-10-24 15:00:31 +08:00
Julian Ospald 5fd0fa8d8e
Merge branch 'issue-892' 2023-10-24 15:00:10 +08:00
Julian Ospald 452ca8cca2
Improve key handling in TUI, fixes #875 2023-10-23 22:47:17 +08:00
Julian Ospald 5f73320b29
Support stacks installation strategy and metadata wrt #892 2023-10-23 22:46:43 +08:00
Julian Ospald d14526059b
Merge branch 'fixups' 2023-10-23 22:46:05 +08:00
Julian Ospald b1cde06bd0
Fix CI 2023-10-23 21:42:29 +08:00
Julian Ospald 0adb602a96
Improve distro code 2023-10-23 21:42:29 +08:00
Julian Ospald f9a2b21cb0
Update system requirements, fixes #902 2023-10-21 19:43:53 +08:00
Julian Ospald e73cf4033e
Merge remote-tracking branch 'origin/pr/899' 2023-10-21 19:35:51 +08:00
Julian Ospald 5f0c6f60b8
Update data/metadata 2023-10-21 19:31:06 +08:00
Julian Ospald 29c9611152
Update system requirements in docs 2023-10-21 19:28:20 +08:00
Julian Ospald e90ca97441
Fix property tests 2023-10-21 19:23:25 +08:00
Julian Ospald 1fb0387101
Add temp git ref to versions to fix CI 2023-10-21 19:23:25 +08:00
Colin Woodbury 1981a12e67
refactor: use upstream TH constructors 2023-10-21 19:23:25 +08:00
Colin Woodbury eae197ccb3
chore: bump `versions` upper bound and squash warnings 2023-10-21 19:23:25 +08:00
Colin Woodbury 15c6ed2b8d
refactor: upgrade `versions` library usage 2023-10-21 19:23:25 +08:00
Julian Ospald fbb648d984
Improve logging on broken symlinks wrt #880 2023-10-21 19:23:25 +08:00
Romain Ruetschi c914a284de
Use absolute path to `/usr/bin/xattr` instead of pulling whatever is in PATH
On macOS systems with Homebrew installed, the latter will install its
own copy of `xattr` in `/opt/homebrew/bin/xattr` which will often
take precedence over the system `xattr` at `/usr/bin/xattr`, and does
not support the `-r` flag to act recursively over a directory.

This commit changes the invocation of `xattr` to use the absolute path
to the system version of `xattr` at `/usr/bin/xattr`.
2023-10-21 19:23:25 +08:00
Julian Ospald 9a17eaa32a
Bump metadata version since we added new distros 2023-10-21 19:23:24 +08:00
Julian Ospald 480d6be02f
Add explicit support for Void Linux, fixes #378 2023-10-21 19:23:24 +08:00
Julian Ospald 3e907bd890
Add explicit support for Rocky Linux 2023-10-21 19:23:24 +08:00
wz1000 d999c3dfbf
Update supported HLS versions 2023-10-21 19:23:24 +08:00
Julian Ospald 41d44b037d
Validate gpg sig even if using file:// yaml url 2023-10-21 19:23:24 +08:00
Julian Ospald 9d8d6e3293
Improve Github CI documentation 2023-10-14 11:58:09 +08:00
Adam Bergmark 8696a1c710
doc: change order of stack integration recommendations 2023-10-11 14:15:30 +02:00
Julian Ospald 2f107197d4
Merge branch 'issue-887' 2023-10-10 16:57:58 +08:00
Julian Ospald 486a1bac25
Fix segfault in TUI when hitting enter early
Fixes #887
2023-10-10 10:26:35 +08:00
Julian Ospald a73ce186b5
Remove documentation of nightlies
GHC nightlies have been broken for a while and unless
they are not only fixed, but GHC upstream demonstrates that
they can make them work reliably, GHCup will not promote them.
2023-10-07 16:54:54 +08:00
Julian Ospald 76204aa366
Re-enable threaded runtime
Needed for vty.
2023-10-01 17:17:13 +08:00
Julian Ospald 502f0ea62f
Avoid module recompilation 2023-10-01 17:10:50 +08:00
Julian Ospald e7e6663017
Update stackage to 20.26 2023-10-01 14:53:37 +08:00
Julian Ospald e27fed09f3
Fix sdist 2023-10-01 14:45:41 +08:00
Julian Ospald 9eeac00714
Further improvement to tag documentation 2023-10-01 14:38:40 +08:00
Julian Ospald c0ffb22d6a
Improve documentation around tags 2023-10-01 14:35:31 +08:00
Julian Ospald f0b145d8dd
Merge remote-tracking branch 'origin/pr/890' 2023-09-30 15:20:42 +08:00
Julian Ospald bb700281a3
Update gpg docs 2023-09-30 00:02:36 +08:00
openingnow fcdec4ba2c
Add another cabal store path 2023-09-29 16:58:51 +09:00
Julian Ospald 371eda962f
Update system requirements for specific distro version
fixes #777
2023-09-04 15:08:24 +08:00
Julian Ospald 50252d8613
Merge branch 'fix-optparse-test' 2023-09-03 14:34:40 +08:00
Julian Ospald 78c393a16e
Fix optparse tests on windows 2023-09-02 18:47:42 +08:00
Julian Ospald 9c3478075f
Merge remote-tracking branch 'origin/pr/864' 2023-09-02 16:35:21 +08:00
Julian Ospald 7e7c11fda4
Merge remote-tracking branch 'origin/pr/868' 2023-09-02 16:34:30 +08:00
Julian Ospald bff14761ac
Use optparse-test in release/build 2023-09-02 16:32:46 +08:00
Julian Ospald 99ddcc938f
cabal-fmt 2023-09-02 16:20:54 +08:00
Julian Ospald e2301e2fa7
Merge remote-tracking branch 'origin/pr/862' 2023-09-02 16:19:56 +08:00
Julian Ospald c52096671e
Merge remote-tracking branch 'origin/pr/873' 2023-09-01 13:13:10 +08:00
Julian Ospald 64f03a2f18
Merge remote-tracking branch 'origin/pr/877' 2023-08-29 18:19:04 +08:00
Fendor a72b78ef96 Update supported tools table for HLS 2.2.0.0 2023-08-27 14:33:42 +02:00
Zubin Duggal b17849c258
Add my GPG keys to the docs 2023-08-23 17:59:56 +05:30
Julian Ospald d759535faa
Merge remote-tracking branch 'origin/pr/870' 2023-08-14 17:45:58 +08:00
Fendor c25c07aa61 Update supported tool list 2023-08-12 11:56:12 +02:00
Lei Zhu 5f361e1e0b Fix compile test 2023-08-05 13:47:51 +08:00
Lei Zhu bcb498de20 Merge branch 'master' into optparse-test-suite 2023-08-05 13:08:41 +08:00
Arjun Kathuria fd6ff9f8ec pretty-print instances for VersionRange and VersionCmp types 2023-07-30 12:45:01 +05:30
Lei Zhu 69d311f0b4 ci 2023-07-29 00:43:33 +08:00
Lei Zhu fde0e712ac add ci 2023-07-28 23:57:59 +08:00
Lei Zhu c60aa767ca format 2023-07-28 23:48:03 +08:00
Lei Zhu 78df858ba1 run test 2023-07-28 23:39:21 +08:00
Lei Zhu f1f4d5e836 gc test 2023-07-28 23:26:19 +08:00
Lei Zhu 2726e83235 whereis test 2023-07-28 23:00:15 +08:00
Lei Zhu f23631054a compile test 2023-07-28 22:06:16 +08:00
Lei Zhu 9189f9a65a Add absolute description 2023-07-25 23:01:44 +08:00
Lei Zhu 7076472bde compile test 2023-07-25 22:58:01 +08:00
Julian Ospald a2a605ad89
Merge remote-tracking branch 'origin/pr/867' 2023-07-25 18:10:40 +08:00
tomjaguarpaw 8fae9a5083
Fix spelling 2023-07-25 08:17:21 +01:00
Lei Zhu 6f07b6a343 compile test 2023-07-24 23:04:18 +08:00
Lei Zhu dfebfc9504 upgrade test 2023-07-24 22:26:33 +08:00
Lei Zhu 36463ebf97 list test 2023-07-24 22:09:03 +08:00
Lei Zhu f400f43b8c list test 2023-07-23 23:51:03 +08:00
Julian Ospald a3748507ca
Merge branch 'ghc-compile' 2023-07-23 22:46:14 +08:00
Lei Zhu c92875882a rm test 2023-07-23 16:30:25 +08:00
Lei Zhu 2df2e3da40 extend unset ghc optparse example 2023-07-23 15:47:47 +08:00
Lei Zhu cf1e8659b0 unset test 2023-07-23 15:41:27 +08:00
Lei Zhu fb2e3f2740 test test 2023-07-23 15:19:13 +08:00
Julian Ospald 578162f461
Merge remote-tracking branch 'origin/pr/866' 2023-07-23 12:37:20 +08:00
unleashy 29bc40f65b
Remove quote escapes 2023-07-22 18:41:00 -03:00
Lei Zhu aafb77df7c install test 2023-07-22 23:10:27 +08:00
Lei Zhu dc1a813305 config test 2023-07-22 17:46:23 +08:00
Lei Zhu 16c7ecabe2 nuke test 2023-07-22 17:20:42 +08:00
Lei Zhu e1d8ba869a Add missing stack for changelog parser 2023-07-22 17:16:58 +08:00
Lei Zhu 38db038953 changlog test 2023-07-22 17:14:49 +08:00
Lei Zhu bcdf2b23f1 debug-info test 2023-07-22 16:07:49 +08:00
Lei Zhu 83b82c328b Set test 2023-07-22 15:31:37 +08:00
Julian Ospald c149ee8d2b
Print better error on 'ghcup <command> <tool>-<version>'
Wrt #180
2023-07-22 12:21:19 +08:00
Lei Zhu c10924274d Set test 2023-07-22 11:45:29 +08:00
Lei Zhu e13c5a99af Remove origin test to ghcup-test subdir 2023-07-20 23:09:14 +08:00
Julian Ospald 6623e4b1c8
Add GHC JS cross test 2023-07-19 08:12:10 +08:00
Julian Ospald 5170baf074
Fix cleaning up directories of compiled tools
'fromSrc' doesn't work well anyway.
2023-07-18 11:02:26 +08:00
Julian Ospald d143daeb9a
Merge branch 'check-msys2' 2023-07-18 10:13:23 +08:00
Julian Ospald 699b183f62
Host msys2 on our servers and verify checksum
Wrt #836
2023-07-18 10:07:30 +08:00
Julian Ospald 09d72e7c97
Don't error on non-empty dirs during cleanup 2023-07-17 23:15:43 +08:00
Julian Ospald d551cc8077
Better logging for cross removal 2023-07-17 23:15:43 +08:00
Julian Ospald 4698639da9
Test linux cross build 2023-07-17 21:25:19 +08:00
Julian Ospald e67a9c93fe
Add documentation about Void Linux musl 2023-07-16 21:44:43 +08:00
Julian Ospald 621cc5782b
Consume 'VERSION' file if it exists 2023-07-16 21:22:37 +08:00
Julian Ospald 482503ca0a
Fix cross-compilation on make 2023-07-15 20:16:54 +08:00
Julian Ospald 2fb7328a6e
Detect hadrian/make automatically, wrt #846 2023-07-15 20:16:36 +08:00
Julian Ospald 06eae56646
Fix pulling freebsd bindist 2023-07-12 17:51:56 +08:00
Julian Ospald bdbbeb1040
Bump version to 0.1.19.5 2023-07-12 01:05:23 +08:00
Julian Ospald 1eed02c8c7
Merge branch 'docker-gg' 2023-07-12 01:04:53 +08:00
Julian Ospald 6d325a1804
Fix docker builds 2023-07-11 23:44:49 +08:00
Julian Ospald a05f272b58
Merge remote-tracking branch 'origin/pr/844' 2023-07-11 23:30:51 +08:00
Julian Ospald 07dfb1e94b
Fix tests 2023-07-08 00:07:29 +08:00
Julian Ospald 6ff07d3dbc
Disable fking cabal-cache 2023-07-07 23:41:28 +08:00
Julian Ospald 0da5572164
Don't need --bignum option 2023-07-07 23:20:16 +08:00
Julian Ospald 422b99a222
Make cabal-cache non-fatal 2023-07-07 23:20:06 +08:00
Julian Ospald 055df584a4
Avoid duplicates in cross compilers showing up 2023-07-07 21:09:55 +08:00
Julian Ospald 9798e0f1d2
Fix brick min size for version column 2023-07-07 17:37:20 +08:00
Julian Ospald a43fa7d63e
More cross fixes to install bindist 2023-07-07 16:41:58 +08:00
Julian Ospald 4361ef7a72
Fix cross target being ignored 2023-07-07 00:39:31 +08:00
Sylvain Henry 3218aaa378
Allow cross-compilation with Hadrian 2023-07-07 00:38:50 +08:00
Julian Ospald 186a37cf3e
Fix cross bindist installation 2023-07-07 00:38:50 +08:00
Sylvain Henry 7b1f591cc4
Fix Lint issues 2023-07-06 20:49:57 +08:00
Julian Ospald 0ecd244177
Update playground link 2023-07-06 20:43:14 +08:00
Julian Ospald e14600ae75
Update ghver in bootstrap script 2023-07-02 18:56:18 +08:00
Julian Ospald 0884756139
Update metadata 2023-07-02 18:55:57 +08:00
Julian Ospald 4c539d62c1
Add create yaml script 2023-07-02 18:55:40 +08:00
Julian Ospald f5b58d1db7
Update metadata submodule 2023-07-02 15:35:39 +08:00
Julian Ospald 18f6a74d08
Bump cabal in CI to 3.10.1.0 2023-07-02 12:34:04 +08:00
Julian Ospald becb3436d0
Bump to 0.1.19.4 2023-07-02 12:32:11 +08:00
Julian Ospald 1f220cd488
Update metadata submodule 2023-06-29 20:14:41 +08:00
Julian Ospald 572ee06bbb
Update ghcup version in bootstrap script 2023-06-29 20:12:10 +08:00
Julian Ospald 6e1380ef2e
Bump to 0.1.19.2, add changelog 2023-06-29 18:42:05 +08:00
Julian Ospald 3e83a7fd83
Merge branch 'nightlies' 2023-06-29 18:27:17 +08:00
Julian Ospald 34ac9cec4d
Add nightlies documentation 2023-06-29 14:47:49 +08:00
Julian Ospald 513f7446b3
Fix 2023-06-29 14:30:07 +08:00
Julian Ospald aed478153d
Print alternative day if day not found 2023-05-14 22:06:38 +08:00
Julian Ospald 210816769a
Add dlOutput to DownloadInfo 2023-05-14 22:06:38 +08:00
Julian Ospald 42bf21c86e
Update stack 2023-05-14 19:43:50 +08:00
Julian Ospald 4b34cddcda
Implement support for nightlies, wrt #824 2023-05-14 19:43:49 +08:00
Julian Ospald 1ba2361fea
Fix ARMv7 build 2023-05-02 23:54:53 +08:00
Julian Ospald 278a3005d1
Merge remote-tracking branch 'origin/pr/818' 2023-05-01 16:02:32 +08:00
Luis Morillo 78d68e381a apply logging only on GHC uninstalation 2023-04-14 17:31:28 +02:00
Julian Ospald 17ffc459db
Merge remote-tracking branch 'origin/pr/811' 2023-03-25 16:45:12 +08:00
Julian Ospald afcb482866
Update GPG keys 2023-03-25 15:33:56 +08:00
Julian Ospald c28de19faa
Fix GC with XDG dirs, fixes #810 2023-03-18 22:04:37 +08:00
Julian Ospald 7ae952c82e
Merge remote-tracking branch 'origin/pr/809' 2023-03-18 12:26:32 +08:00
Ryan Davis 98098035c9
Use correct environment variable for `STACK_ROOT`
The environment variable used to set the root Stack directory was
incorrectly defined as STACK_ROOOT (typo with an extra 'O'). 

This has been fixed and the correct STACK_ROOT variable is now used.

See: https://docs.haskellstack.org/en/stable/environment_variables/#stack_root
2023-03-16 13:38:25 +11:00
Julian Ospald acdc0786ba
Update tools table 2023-03-15 00:18:14 +08:00
Julian Ospald 7fa72a8892
Merge remote-tracking branch 'origin/pr/807' 2023-03-15 00:13:54 +08:00
Julian Ospald fa22920e51
Merge branch 'docker-glibc' 2023-03-15 00:13:17 +08:00
Julian Ospald f084fbce43
Fix f*ckup in docker image creation 2023-03-14 20:56:03 +08:00
Arjun Kathuria 1850c00e9d fix: project build error with new haskus-utils-variant version
* New haskus-utils-variant version 3.3 now includes the function
  "throwSomeE", which was now causing a compile error, since
  we have a function of the same name in our code.

* The function imported from the package and our own version clashed.

* Solution was to conditionally include our shim when haskus-utils-variant
  version < 3.3
2023-03-13 00:25:04 +05:30
Julian Ospald c20deceaa8
Improve wording around FreeBSD support 2023-03-11 21:26:16 +08:00
Julian Ospald 89e4145baf
Merge remote-tracking branch 'origin/pr/805' 2023-03-11 21:23:31 +08:00
Alexey Vyskubov f5f7c26d8a
Adds some information about FreeBSD installation. 2023-03-07 13:01:20 +02:00
Julian Ospald 784942ca58
Update submodule 2023-02-24 20:03:25 +08:00
Julian Ospald 75de2a7bc1
Merge branch 'ghcup-0.1.19.2' 2023-02-24 20:03:14 +08:00
Julian Ospald ea6c8d338c
Bump ghcup in bootstrap script 2023-02-24 19:52:50 +08:00
Julian Ospald ae625b181c
Improve pull_release_artifacts 2023-02-24 19:52:41 +08:00
Julian Ospald 89ae54a083
Set release date 2023-02-24 00:00:29 +08:00
Julian Ospald 1bd73591ba
Update data/metadata 2023-02-23 23:58:16 +08:00
Julian Ospald f709f6e714
Update ChangeLog 2023-02-23 23:56:46 +08:00
Julian Ospald 3d7e07c371
Merge branch 'issue-796' 2023-02-23 23:52:38 +08:00
Julian Ospald 8bf17379ac
Fix windows bootstrap, fixes #796 2023-02-23 23:41:25 +08:00
Julian Ospald 4b1225ad71
Merge branch 'issue-797' 2023-02-23 23:15:48 +08:00
Julian Ospald d628848af6
Silence hlint 2023-02-23 23:15:08 +08:00
Julian Ospald 48381be001
Bump GHC 9.2.5 to 9.2.6 2023-02-23 23:07:46 +08:00
Julian Ospald b547324253
Smarter variants for 'listDirectory', fixing #797 2023-02-23 21:47:50 +08:00
Julian Ospald 2b1599c234
Fix windows golden file 2023-02-23 20:57:40 +08:00
Julian Ospald 7ac8989dfc
Bump to 0.1.19.2 2023-02-21 23:01:08 +08:00
Julian Ospald cd6666ed30
Merge branch 'latest-prerelease' 2023-02-21 23:00:47 +08:00
Julian Ospald 5b7478438a
Merge branch 'issue-787' 2023-02-21 23:00:31 +08:00
Julian Ospald 4a830d9fb7
Fix regression in JFS support, fixes #787 2023-02-21 22:48:22 +08:00
Julian Ospald 785fb895b4
Implement 'latest-prerelease' tag wrt #788 2023-02-21 22:22:11 +08:00
Julian Ospald 75e801e9e6
Merge branch 'ghcup-0.1.19.1' 2023-02-20 00:03:26 +08:00
Julian Ospald 6ffd5328a4
Improve sftp-symlink-artifacts.sh 2023-02-20 00:01:11 +08:00
Julian Ospald ed509e482b
Improve pull_release_artifacts 2023-02-19 23:58:25 +08:00
Julian Ospald 420323f43b
Update bootstrap script to 0.1.19.1 2023-02-19 23:58:07 +08:00
Julian Ospald 432962792c
Update ghcup-metadata 2023-02-19 22:56:33 +08:00
Julian Ospald cb193f6069
Update ChangeLog for 0.1.19.1 2023-02-19 22:55:47 +08:00
Julian Ospald 2f268b6a25
Bump GHCup version 2023-02-19 22:44:28 +08:00
Julian Ospald 580606af14
Merge remote-tracking branch 'origin/pr/773' 2023-02-19 22:42:08 +08:00
Julian Ospald faa1c3992b
Merge branch 'issue-762' 2023-02-19 22:41:27 +08:00
Julian Ospald d17efef853
Merge branch 'issue-784' 2023-02-19 21:38:41 +08:00
Julian Ospald 179d4dd493
Fixup 2023-02-19 19:33:01 +08:00
Julian Ospald e03c5ee4a1
Don't fail on setModificationTime, fixes #784
Related:

* https://github.com/actions/runner-images/issues/7061
* https://github.com/actions/runner-images/pull/7068
2023-02-19 19:24:45 +08:00
Julian Ospald e57a8abd3d
Merge branch 'issue-751' 2023-02-19 19:23:48 +08:00
Julian Ospald 5fa10390a3
Fix CI 2023-02-19 19:15:09 +08:00
Julian Ospald e1e6f579d5
Use debian:10 rather 2023-02-19 18:48:42 +08:00
Julian Ospald 72f8e53344
Fix CI 2023-02-19 17:32:28 +08:00
Julian Ospald 9c464ec9fc
Don't fail if the duplicate is the last element 2023-02-19 17:25:14 +08:00
Julian Ospald 1c9b296a5e
Merge remote-tracking branch 'origin/pr/782' 2023-02-18 19:44:25 +08:00
Bryan Richter 275522584e
Remove deprecated www 2023-02-17 13:30:29 +02:00
Bryan Richter 804520c4bb
Remove duplicate js/css includes 2023-02-17 12:56:51 +02:00
Bryan Richter 9d25581f3c
Use favicon from gitlab.haskell.org
The current .png is presumably the wrong shape and looks flattened.

Plus, mkdocs complained that 'site_favicon' was an unrecognised
configuration name, so I used the method described in the docs instead:

https://www.mkdocs.org/user-guide/customizing-your-theme/#using-the-theme_dir
2023-02-17 12:55:27 +02:00
Bryan Richter e798037d80
Simplify removal of next/prev buttons
As documented on how to override template blocks:

https://www.mkdocs.org/user-guide/customizing-your-theme/#overriding-template-blocks

This is a big diff. I tested it by generating docs before and after the
change, and they were functionally identical.
2023-02-17 12:53:28 +02:00
Bryan Richter 2afe5858cb
Remove unused/missing javascript 2023-02-17 10:44:34 +02:00
Julian Ospald f575dcdad6
Improve usability on 'ghcup config add-release-channel'
Fixes #751 (or so I hope).
2023-02-12 19:58:08 +08:00
Julian Ospald 6cf9967e7c
Work around missing libtinfo.so.6 2023-02-12 18:41:40 +08:00
Julian Ospald 15a75d790a
Build arm binaries in bionic images, fixes #762 2023-02-12 17:16:32 +08:00
Julian Ospald 988672ea75
Build arm images for bionic as well wrh #762 2023-02-12 17:16:27 +08:00
Julian Ospald 6d3e8d65e1
Make readDirEntPortable more robust 2023-02-11 18:51:34 +08:00
Julian Ospald 895e4b3f18
Merge branch 'issue-775' 2023-02-11 18:38:39 +08:00
Julian Ospald 20f0505120
Don't implicitly smuggle in config options
Fixes #775
2023-02-09 00:04:53 +08:00
Julian Ospald 31e83cac5e
Don't configure meta-mode = Strict in bootstrap 2023-02-08 22:42:17 +08:00
ksqsf 9baba88f75
Add a known mirror 2023-02-08 22:09:04 +08:00
Julian Ospald d3a1115b99
Fix FreeBSD URL 2023-02-04 01:00:52 +08:00
Julian Ospald 6d46849fec
Merge remote-tracking branch 'origin/issue-766' 2023-02-03 23:58:50 +08:00
Julian Ospald 53e324bfee
Fix failure on JFS filesystems
Some filesystems always return DT_UNKNOWN for d_type, since
it's non-portable.

For those cases we use 'stat' to figure out the file type.

Similar to: https://github.com/ggreer/the_silver_searcher/pull/37
2023-02-03 22:48:05 +08:00
Julian Ospald 2e39b7b603
Fix FreeBSD URL 2023-02-03 22:43:41 +08:00
Julian Ospald 048932bf50
Fix _eghcup invocations 2023-02-01 16:53:25 +08:00
Julian Ospald 69d325bf90
Set metadata fetching mode to strict in bootstrap script
And improve error messages.
2023-02-01 16:44:10 +08:00
Julian Ospald 3d1b8859cd
Merge remote-tracking branch 'origin/pr/759' 2023-01-26 22:05:35 +08:00
Julian Ospald db89ca9942
Merge remote-tracking branch 'origin/pr/758' 2023-01-26 22:05:30 +08:00
Julian Ospald bba009d98c
Merge remote-tracking branch 'origin/pr/760' 2023-01-26 22:04:38 +08:00
Julian Ospald 9d954ea174
Add platforms to i386 alpine 2023-01-26 21:18:11 +08:00
Julian Ospald da9c9049d2
Fix alpine32/Dockerfile 2023-01-26 21:04:07 +08:00
Julian Ospald a4c00d2c56
Make version shortcuts work with 'ghcup set', fixes #757 2023-01-24 15:24:03 +08:00
Zixian Cai b30f565871
Fix index.md as well 2023-01-23 16:07:36 +11:00
Zixian Cai fa378a1d34
Fix section hyperlink 2023-01-23 16:06:00 +11:00
timo-a 119efb1ff4
fix link
currently resolves to: https://www.haskell.org/ghcup/install/install/#supported-tools
this commit fixes it to https://www.haskell.org/ghcup/install/#supported-tools
2023-01-22 15:36:14 +01:00
Julian Ospald 1fb4101b49
Fix msys2 URL, wrt #755 2023-01-21 17:58:26 +08:00
Julian Ospald ec8333b223
Small CI fixes 2023-01-18 22:04:02 +08:00
Julian Ospald 54b979aa0b
Merge remote-tracking branch 'origin/pr/748' 2023-01-16 21:14:15 +08:00
Julian Ospald ba274307c0
Improve CI 2023-01-16 20:29:16 +08:00
Rui Chen a623d0809d
build: remove travis config
Signed-off-by: Rui Chen <rui@chenrui.dev>
2023-01-14 13:24:45 -05:00
Julian Ospald e00899d176
Disable simdutf on windows, wrt #745 2023-01-14 00:59:52 +08:00
Julian Ospald a38ca1954b
Fix build on unix with -ftui 2023-01-13 12:33:40 +08:00
Julian Ospald 3f5a19c63e
Post release cleanup 2023-01-13 12:07:32 +08:00
Julian Ospald 525e9672e8
Make cirrus CI task discoverable 2023-01-13 11:16:13 +08:00
Julian Ospald 070c6e1cf1
Add missing entry to CHANGELOG 2023-01-13 10:57:57 +08:00
Julian Ospald 195fd00e0a
Add CHANGELOG for 0.1.19.0 2023-01-13 10:41:49 +08:00
Julian Ospald 733d014c19
Bump version to 0.1.19.0 2023-01-13 10:13:51 +08:00
Julian Ospald 16039769d5
Refreeze 2023-01-13 10:12:34 +08:00
Julian Ospald 5eeb8ca9fc
Fix windows 2023-01-13 00:26:15 +08:00
Julian Ospald 317a06bbc3
Fix ARM build 2023-01-13 00:03:12 +08:00
Julian Ospald f693adcd7c
Fix FreeBSD build for text-2.0 2023-01-12 23:53:03 +08:00
Julian Ospald ac88d2bd50
Fix cache eviction 2023-01-12 23:44:53 +08:00
Julian Ospald a427146de5
Update dependencies and make buildable with GHC-9.4.4 2023-01-12 13:52:08 +08:00
Julian Ospald a16bcddeaa
Update dependencies 2023-01-12 13:01:12 +08:00
Julian Ospald 74edf1fc07
Merge branch 'testsuite' 2023-01-12 12:58:39 +08:00
Julian Ospald 1e32639873
Implement 'ghcup test ghc' based on the bindist testsuite 2023-01-12 12:58:10 +08:00
Julian Ospald 0704d2640a
Document how to install windows manually, fixes #697 2023-01-12 00:45:16 +08:00
Julian Ospald 26a6368d79
Merge remote-tracking branch 'origin/pr/700' 2023-01-08 22:26:19 +08:00
Julian Ospald 54af66d115
Merge branch 'HF-errors' 2023-01-05 21:39:23 +08:00
Julian Ospald 850799c21a
Merge remote-tracking branch 'origin/pr/739' 2023-01-05 21:32:07 +08:00
Julian Ospald d4834d7541
Update docs/about.md
Co-authored-by: tomjaguarpaw <tom-github.com@jaguarpaw.co.uk>
2023-01-05 07:32:51 +08:00
Julian Ospald 2895dd9d13
Bump cabal-cache with amazonka patch 2023-01-04 21:08:10 +08:00
Julian Ospald eb9a0b66c4
Document distribution policies 2023-01-04 18:51:40 +08:00
Julian Ospald 8d0432b961
Make sure FreeBSD runner uses GMT
This should fix parsing issues in amazonka and
cabal-cache:

* https://github.com/haskell-works/cabal-cache/issues/207
* https://github.com/brendanhay/amazonka/issues/866
2023-01-04 16:56:07 +08:00
Julian Ospald ab2c01d1c9
Don't install stack by default in CI 2023-01-04 16:50:55 +08:00
Julian Ospald fffaa65b7f
Don't install stack by default in CI 2023-01-04 00:58:05 +08:00
Julian Ospald 703be0a706
Add support for mirrors wrt #357 2023-01-04 00:36:07 +08:00
Julian Ospald 4be97ffd7c
Pad and use hyperlinks 2023-01-03 23:43:46 +08:00
Julian Ospald 009f9211a9
Integrate with errors.haskell.org
Fixes #434
2023-01-03 23:43:46 +08:00
Julian Ospald 109187eb6f
Merge branch 'issue-367-content-prop' 2023-01-03 23:17:35 +08:00
Julian Ospald e881705323
Merge branch 'issue-440' 2023-01-03 22:47:12 +08:00
Julian Ospald ea06c155a7
Merge branch 'issue-695' 2023-01-03 22:46:52 +08:00
Julian Ospald d4732e15a7
Merge branch 'issue-716' 2023-01-03 22:46:13 +08:00
Julian Ospald db6f784a1f
Merge branch 'error-handling' 2023-01-03 22:45:25 +08:00
Julian Ospald 82e3837dd9
Update windows golden test file 2023-01-02 21:42:52 +08:00
Julian Ospald 957c5918b8
Upload golden files on failure 2023-01-02 20:47:49 +08:00
Julian Ospald 9d4c923649
Add content-length property to downloads
This is optional for now. Fixes #367
2023-01-02 20:41:42 +08:00
Julian Ospald 24c36ef856
Fix failure with --isolate=dir --force
Fixes #695
2023-01-02 20:39:27 +08:00
Julian Ospald 2783b8f693
Fix 'ghcup install hls -u' on windows
Fixes #716
2023-01-02 20:38:58 +08:00
Julian Ospald d5a680e3c6
Don't clean up tmp dirs when --keep=always 2023-01-02 20:38:26 +08:00
Julian Ospald d1075987de
Fix ARM cleanup 2023-01-02 20:35:46 +08:00
Julian Ospald e116a2392e
Enable arm tests 2023-01-01 21:40:04 +08:00
Julian Ospald 7dd6f1f4a4
Expose metadata-caching to --help 2023-01-01 19:19:37 +08:00
Julian Ospald 4d82c37539
Add --metadata-fetching-mode arg, fixes #440 2023-01-01 19:16:32 +08:00
Julian Ospald 801b1edfa7
Merge remote-tracking branch 'origin/pr/730' 2022-12-31 21:10:59 +08:00
Julian Ospald c1b67e1787
Merge branch 'issue-433' 2022-12-27 00:11:23 +08:00
Julian Ospald 70dd106549
Merge branch 'issue-708' 2022-12-27 00:10:41 +08:00
Julian Ospald b098aa4e65
Merge branch 'issue-368' 2022-12-27 00:09:59 +08:00
Julian Ospald 74b784fcfb
Merge branch 'issue-391-gh' 2022-12-27 00:09:39 +08:00
Julian Ospald 673db344d6
Merge branch 'issue-414' 2022-12-27 00:09:28 +08:00
Julian Ospald 5594a19c02
Merge branch 'issue-384' 2022-12-27 00:09:05 +08:00
Kristoffer Grundström a5bc13fe50
Added Mageia
Signed-off-by: Kristoffer Grundström <lovaren@gmail.com>
2022-12-25 08:02:41 +01:00
Julian Ospald a5f2067d76
Improve stripping logic 2022-12-21 13:44:31 +08:00
Julian Ospald be8fa57be1
Freeze the MSYS2 version we install
Fixes #368
2022-12-20 23:38:48 +08:00
Julian Ospald 6ad9963889
Allow building newer GHCs from git
The user will have to pass --overwrite-version=<ver> because
we can't discover the GHC version from git anymore.

https://gitlab.haskell.org/ghc/ghc/-/issues/22322
2022-12-20 23:18:44 +08:00
Julian Ospald bcddb05b1d
Fix bootstrap under windows when msys2 has non-posix login shell 2022-12-20 22:46:58 +08:00
Julian Ospald f7d2033e25
Improve postRm message, fixes #384 2022-12-20 22:20:10 +08:00
Julian Ospald 6ce7649cfe
Improve upgrade warning wrt #414 2022-12-20 21:49:26 +08:00
Julian Ospald cb0d8b80c3
Merge branch 'retry-cache' 2022-12-20 15:41:25 +08:00
Julian Ospald 95869f9560
Improve CI 2022-12-20 14:00:26 +08:00
Julian Ospald e8586cf993
Improve add-release-channel, fixes #708 2022-12-20 00:57:56 +08:00
Julian Ospald d195a3f86c
Merge branch 'issue-706' 2022-12-19 02:03:47 +08:00
Julian Ospald b171afa09d
Document GHCUP_MSYS2, fixes #427 2022-12-19 00:52:11 +08:00
Julian Ospald 5cf49bffac
Improve warning for incompatible HLS/GHC combos 2022-12-19 00:40:07 +08:00
Julian Ospald 5659de8516
Improve hyperlinks 2022-12-19 00:16:48 +08:00
Julian Ospald 0cd2b6d549
Improve documentation on stack hooks 2022-12-19 00:10:49 +08:00
Julian Ospald ae092de4b6
Update CI 2022-12-18 22:00:33 +08:00
Julian Ospald a7e6e7c27d
Merge branch 'cirrus' 2022-12-16 19:12:49 +08:00
Julian Ospald 175a301a0d
Cirrus CI 2022-12-16 18:25:17 +08:00
Julian Ospald 823458910b
Merge branch 'armv7-aarch64' 2022-12-11 22:12:49 +08:00
Julian Ospald 2abcb46199
Fix ARM etc 2022-12-11 22:11:58 +08:00
Julian Ospald 75b891147a
Add packages for VoidLinux 2022-12-03 17:22:03 +08:00
Julian Ospald de208f004e
Make sure powershell installation snippet doesn't crash parent shell
Fixes #418
2022-12-03 16:29:01 +08:00
Julian Ospald ecb0676fea
Merge branch 'cleanup-docs' 2022-12-03 15:29:47 +08:00
Julian Ospald 957867ff1c
Fix remaining gitlab links wrt #692 2022-11-22 19:06:12 +08:00
Julian Ospald b1b21f000d
Also update README 2022-11-20 23:47:53 +08:00
Julian Ospald fbbafc33be
Yes, ghcup is the main installer 2022-11-20 23:44:39 +08:00
Julian Ospald 4a46de4c49
Switch releases to Github CI 2022-11-20 23:29:56 +08:00
Julian Ospald 77419ea41d
Fix nuke bug on windows 2022-11-20 23:29:56 +08:00
Julian Ospald 043500e8e8
Optimize 'ghcup whereis ghcup' 2022-11-20 23:29:56 +08:00
Julian Ospald e924ad8278
Allow to statically overwrite distro detection, fixes #421 2022-11-12 14:12:13 +08:00
Julian Ospald 010db93b93
Fix install page 2022-11-12 11:25:52 +08:00
Julian Ospald 9fdc6eebe8
Add system requirements do documentation wrt #411 2022-11-12 11:17:27 +08:00
Julian Ospald 7c8d013b6e
Update tools table 2022-11-10 23:32:46 +08:00
Julian Ospald 96eb0c3532
Docs improvements 2022-11-10 23:28:39 +08:00
Julian Ospald 94c01ee362
Update tool tables 2022-11-10 23:22:29 +08:00
Julian Ospald 4297a46f13
Merge remote-tracking branch 'origin/merge-requests/290' 2022-11-10 23:12:18 +08:00
Julian Ospald c07e1bbc8f
Merge remote-tracking branch 'origin/merge-requests/288' 2022-11-10 23:00:06 +08:00
Julian Ospald 9ee2df3841
Merge remote-tracking branch 'origin/merge-requests/286' 2022-11-10 22:59:48 +08:00
Julian Ospald 3c5505d222
Fix disabling installation of stack
Fixes #429
2022-11-10 22:38:30 +08:00
Will Badart 70df740f9d Check $ZDOTDIR in bootstrap script
Zsh looks for .zshrc in $ZDOTDIR, or $HOME if $ZDOTDIR is unset. I doubt
non-$HOME $ZDOTDIRs are widespread (I might be the only one I know with
one), but it's how zsh's startup is defined, so it can happen.

This commit simply adds a check to the `*/zsh` case of `find_shell()` to
respect $ZDOTDIR if it is set.
2022-10-28 17:01:38 +00:00
Jaro Reinders 761f3253c3 Fix broken link to included libraries 2022-10-25 18:21:06 +00:00
Julian Ospald 787edc17af
Improve stack GHC install script 2022-09-30 13:59:43 +08:00
Julian Ospald 9902adab6d
Make stack GHC install hook posix compliant
See https://github.com/commercialhaskell/stack/issues/5888
2022-09-30 13:29:57 +08:00
Julian Ospald 156b4724f3
Merge branch 'stack-hook' 2022-09-26 22:53:40 +08:00
Julian Ospald e9575aba5c
Add stack ghc installation hooks and install stack by default 2022-09-22 00:04:14 +08:00
Julian Ospald 81c7f6a32a
Merge remote-tracking branch 'origin/merge-requests/283' 2022-08-24 22:34:21 +08:00
taylorfausak ab97c80b80 Fix build error 2022-08-23 11:59:08 +00:00
taylorfausak 04369673ef Fix spacing 2022-08-23 11:19:33 +00:00
taylorfausak 63dfdc2da6 Remove hard-coded reference to "cabal"
Fixes #407.
2022-08-22 19:35:38 +00:00
Julian Ospald 14de382129
Merge remote-tracking branch 'origin/merge-requests/282' 2022-08-12 22:20:45 +08:00
Julian Ospald d97c10dbe6
Merge remote-tracking branch 'origin/merge-requests/281' 2022-08-12 22:20:25 +08:00
Cheng Shao 8420bf093e Update ghc-head bindist URL 2022-08-09 13:32:58 +00:00
amesgen 5e28074522
Account for GHC 9.4.1 2022-08-09 00:43:55 +02:00
Julian Ospald c842c41a78
Bump to 0.1.18.1 for hackage 2022-08-06 19:11:47 +08:00
Julian Ospald 8b93eaad59
cabal-fmt 2022-08-06 19:08:34 +08:00
Julian Ospald 2cba97cf1c
Merge remote-tracking branch 'origin/merge-requests/277' 2022-08-06 19:07:59 +08:00
Julian Ospald 7d74178295
Merge remote-tracking branch 'origin/merge-requests/279' 2022-08-06 19:07:50 +08:00
Julian Ospald c37bef55e9
Merge remote-tracking branch 'origin/merge-requests/278' 2022-08-06 19:07:34 +08:00
Julian Ospald 837ba8b46a
Merge remote-tracking branch 'origin/merge-requests/280' 2022-08-06 17:41:09 +08:00
Dmitrii Kovanikov c25e73408a Change attribution for the Haskell Beginners 2022 course 2022-08-06 09:33:01 +00:00
why-not-try-calmer 71c3172cf5 Less duplication. 2022-08-05 13:03:02 +02:00
why-not-try-calmer 1f2855a107 Added and referenced solution in case of 'ghc version not found' for Linux VSCode + hls extension users. 2022-08-05 12:51:46 +02:00
Artem Pelenitsyn d949c4375e docs: add example of installing bindinst specified by job id 2022-08-05 02:27:35 +00:00
FTS 22f0081303 include c header file in sdict 2022-07-30 16:41:16 +00:00
Julian Ospald 5562be18e3
More docs improvements 2022-07-30 17:18:42 +08:00
Julian Ospald 6baa891424
Update metadata 2022-07-30 10:51:41 +08:00
Julian Ospald a544feffb3
Finalize release 2022-07-30 10:29:34 +08:00
Julian Ospald 3b6bb0df46
Add changelog 2022-07-29 21:52:56 +08:00
Julian Ospald 60299b6bb8
Update HLS doc link 2022-07-27 23:29:33 +08:00
Julian Ospald 4d20f4e07c
Merge branch 'issue-391' 2022-07-25 20:33:21 +08:00
Julian Ospald 5f6b5f845d
Add --disable-ld-override for darwin bindists
Fixes #391
2022-07-25 17:57:10 +08:00
Julian Ospald b0fecce0d1
Merge remote-tracking branch 'origin/merge-requests/273' 2022-07-24 20:24:00 +08:00
Mike Pilgrem 27c06ddde7 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.
2022-07-23 21:32:15 +01:00
Julian Ospald 3154d2839b
Merge remote-tracking branch 'origin/merge-requests/272' 2022-07-23 23:27:33 +08:00
Mike Pilgrem 511d8d5ed8 Update guide.md to explain what is meant by 'TUI'. 2022-07-23 14:25:49 +00:00
Julian Ospald fe22405ee1
Merge branch 'issue-383' 2022-07-12 20:44:09 +02:00
Julian Ospald ea828cd13a
Fix non-interactive install on windows 2022-07-12 20:26:57 +02:00
Julian Ospald 00fa70b9de
Merge remote-tracking branch 'origin/merge-requests/266' 2022-07-12 00:15:14 +02:00
Julian Ospald 823275363c
Merge branch 'ghcup-run-improvements' 2022-07-12 00:10:17 +02:00
Julian Ospald 2f299ee48d
Merge branch 'hls-hackage' 2022-07-12 00:06:40 +02:00
Julian Ospald 284fe1b3b6
Fix parser and completer for 'ghcup compile hls --version' 2022-07-12 00:05:08 +02:00
Julian Ospald 35bda8d67a
Fix hlint warnings 2022-07-11 19:49:08 +02:00
Julian Ospald 7a2a5074fa
Fix parsing issues with 'ghcup run' and non-PVP versions
This is a major refactor of some CLI code. We try to distinguish
GHC versions from other versions, so that we can use distinct parsers.

Hopefully this doesn't introduce new bugs.

This also forces ghcup run to use the new internal ~/.ghcup/tmp dir.
2022-07-11 19:45:15 +02:00
Julian Ospald ce239ab88e
Fix error message 2022-07-11 19:44:10 +02:00
Julian Ospald f3c703d655
Support hls in 'ghcup changelog' 2022-07-11 19:44:10 +02:00
Julian Ospald b6ff5bc764
Use ghcup's internal dir for 'ghcup run' 2022-07-11 19:43:48 +02:00
Julian Ospald b8aeb1f935
Fix guide 2022-07-11 00:43:18 +02:00
Julian Ospald 9673d28d3e
Docs 2022-07-11 00:40:39 +02:00
Julian Ospald 99a51d67a1
Make compiling from hackage the default 2022-07-10 21:58:03 +02:00
Julian Ospald b0ef0590a2
Merge branch 'pwsh' 2022-07-10 21:21:17 +02:00
Julian Ospald 256e1942f2
More stuff 2022-07-10 21:19:45 +02:00
Julian Ospald aa71f0dfa1
Set wget 2022-07-10 21:05:51 +02:00
Julian Ospald 04d527c98a
Add DisableCurl powershell switch 2022-07-10 20:58:30 +02:00
Arjun Kathuria ca5c5550ab removes newline after set' function 2022-07-10 21:49:54 +05:30
Julian Ospald 7b59621179
Support wget in bootstrap script 2022-07-10 17:56:00 +02:00
Julian Ospald 9d59463ded
Add GHCUP_CURL_OPTS to bootstrap script 2022-07-10 17:35:45 +02:00
Arjun Kathuria 3d49f79beb removes `prettyShow` from error case in BrickMain set' 2022-07-10 09:52:57 +05:30
Arjun Kathuria e9740d13fc Updates `userPrompt` in BrickMain to a more efficient version 2022-07-10 09:50:58 +05:30
Arjun Kathuria 2bd5a8fe1a Removes redundant `putPrompt` function from Prompts module. 2022-07-10 09:45:39 +05:30
Arjun Kathuria 0acccae523 Removes `GHCup.Types.Prompts` module and stuffs it into `GHCup.Types` 2022-07-10 09:44:23 +05:30
Julian Ospald 974112016e
Allow to run 'cabal update' automatically before the HLS build 2022-07-09 23:50:20 +02:00
Julian Ospald 9fb2889696
Allow to build from arbitrary GHC source dists 2022-07-09 23:12:00 +02:00
Julian Ospald 63f22b28d7
Allow to build HLS from hackage 2022-07-09 21:12:23 +02:00
Julian Ospald 9a72fa13d5
Relax Cabal bounds 2022-07-09 18:04:03 +02:00
Julian Ospald 86a8a32032
Merge branch 'issue-380' 2022-07-07 17:04:42 +02:00
Julian Ospald 13e01ab453
Fix hlint warnings 2022-07-07 15:05:51 +02:00
Julian Ospald 873dd77a6f
Fix build on windows 2022-07-07 15:05:51 +02:00
Julian Ospald 544c618473
Don't remove legacy dir if it doesn't exist 2022-07-07 14:03:49 +02:00
Julian Ospald a264cb088e
Improve 'ghcup compile hls'
1. short hashes now work
2. print the long hash in addition to the detected cabal version of HLS
3. add `--git-describe-version` switch as an alternative to
   `--overwrite-version`

Fix 1. and 2. for GHC as well.
2022-07-06 22:49:11 +02:00
Julian Ospald 1a43fddca9
Improve about docs 2022-07-02 20:34:19 +02:00
Arjun Kathuria 9ceb66ef21 chore: fix a hlint warning 2022-06-28 22:10:02 +05:30
Arjun Kathuria 7cbe38b011 Behavior Enhancement: make user press "S" only once to set, asks to install AND set if tool uninstalled 2022-06-28 19:50:22 +05:30
Arjun Kathuria 3bbc1edb19 updates user prompt message for "set" uninstalled version in BrickMain 2022-06-28 19:49:00 +05:30
Arjun Kathuria b8dac2d7cd Updates the Prompt module to use logInfo instead of putStrLn,
makes the prompt look prettier
2022-06-28 19:45:17 +05:30
Julian Ospald bdfb1a3a9b
Merge remote-tracking branch 'origin/merge-requests/264' 2022-06-26 23:14:36 +02:00
Julian Ospald 9b8b3e8126
Merge remote-tracking branch 'origin/merge-requests/263' 2022-06-26 23:14:10 +02:00
Julian Ospald d657c17df4
Merge branch 'issue-375' 2022-06-26 23:11:32 +02:00
Arjun Kathuria 0e1fd68d93 when setting an uninstalled tool in tui, asks user to install first 2022-06-25 13:45:07 +05:30
Arjun Kathuria c7eceb2330 Adds GHCup.Prompt modules and its types to project 2022-06-25 13:44:25 +05:30
why-not-try-calmer e143c06697 VSCode integration
Typo
2022-06-16 11:07:12 +02:00
Jens Petersen 29da21f5dc bootstrap-haskell: s/will download/can download/
A one word tweak to weaken the language in the initial explanation
to make it "less scary": in general ghcup does not always download
all of ghcup, ghc, cabal, stack, and hls
(unless requested or they are not already installed, etc),
but "will download" sounds like the user is has no choice here
except to always download everything,
which might give them second thoughts about trying this script
and hence adopting ghcup.

Perhaps the wording could be made further more precise,
but at least "can" gives one less anxiety.
2022-06-11 13:06:54 +08:00
Julian Ospald 028696d4be
Merge branch 'issue-377' 2022-06-09 15:29:01 +02:00
Julian Ospald 4022edb12e
Allow passing bindist configure args wrt #377 2022-06-09 14:42:01 +02:00
Julian Ospald fde5044194
Merge branch 'issue-371' 2022-06-07 18:44:31 +02:00
Julian Ospald 3af1286ab7
Fix ghcup_bootstrap test 2022-06-07 17:49:33 +02:00
Julian Ospald bcff46d3d4
Fix mingw PATH handling wrt #371 2022-06-07 14:37:23 +02:00
Julian Ospald d1c72cdff4
Add --mingw-path switch to 'ghcup run' 2022-06-06 23:03:45 +02:00
Julian Ospald 565bb59f45
Fix ghcup_bootstrap test 2022-06-06 23:03:07 +02:00
Julian Ospald aae3f31c50
Fix bootstrap-haskell picking system cabal 2022-06-06 23:03:07 +02:00
Julian Ospald 0ce9b5d352
Fix test 2022-06-06 23:03:07 +02:00
Julian Ospald bf0e5b37ca
Test issue #375 2022-06-06 20:22:45 +02:00
Julian Ospald fe620835be
Fix 'ghcup run' on windows, fixes #375 2022-06-06 20:18:10 +02:00
Julian Ospald c7dc77e6bc
Refreeze 2022-06-05 17:18:44 +02:00
Julian Ospald 05c72a3de6
Fix build with 9.2.3 2022-06-05 16:55:08 +02:00
Julian Ospald 0653844931
Fix build with ghc-9.0.2 2022-06-04 23:15:06 +02:00
Julian Ospald 7661046bcb
Update GHC version table 2022-05-28 16:44:15 +02:00
Julian Ospald 16888a12d4
Cleanup 2022-05-28 16:44:08 +02:00
Julian Ospald 9f7df33692
Merge branch 'issue-367' 2022-05-24 12:44:57 +02:00
Julian Ospald b7007aa100
Merge branch 'excepts-refac' 2022-05-24 12:44:39 +02:00
Julian Ospald 03dfd0cba0
Require --isolate to have an absolute directory, fixes #367 2022-05-23 23:50:49 +02:00
Julian Ospald 0e64d1f22f
Improve AlreadyInstalled 2022-05-23 23:49:43 +02:00
Julian Ospald c7774450bf
Refactor excepts 2022-05-23 23:37:09 +02:00
Julian Ospald 9375255452
Warn on all tools when shadowed 2022-05-23 16:50:23 +02:00
Julian Ospald b8b3a16589
Update modgraph 2022-05-23 00:00:57 +02:00
Julian Ospald e1d86c77d0
Merge branch 'issue-364' 2022-05-22 23:39:41 +02:00
Julian Ospald 001d33eabb
Use 'cabal update' 2022-05-22 22:47:40 +02:00
Julian Ospald 2845425099
Restructure modules 2022-05-22 21:11:40 +02:00
Julian Ospald c56b9ec3ce
Make windows mergeFileTree more robust 2022-05-21 20:51:13 +02:00
Julian Ospald 68c81577a4
Fix HLS install via compile 2022-05-21 15:03:20 +02:00
Julian Ospald b5fb8772fe
Fix windows 2022-05-21 11:34:57 +02:00
Julian Ospald 5741e069ad
Fix deletion on missing files 2022-05-20 23:29:31 +02:00
Julian Ospald df89ddcdf5
Use internal tmpdir 2022-05-20 23:19:33 +02:00
Julian Ospald c9e1261af2
Some fixes 2022-05-20 00:46:50 +02:00
Julian Ospald d5efc86d85
Preserve mtime when merging filetrees 2022-05-20 00:32:22 +02:00
Julian Ospald 430b655785
Improve error handling for mergeFileTree 2022-05-20 00:15:25 +02:00
Julian Ospald 1cffa358b8
Fix M1 CI 2022-05-19 21:01:48 +02:00
Julian Ospald ca89112a8e
Fix for darwin M1 2022-05-17 01:55:56 +02:00
Julian Ospald 65f02a5a7a
Fix test 2022-05-16 23:04:49 +02:00
Julian Ospald 9ccf29903e
Add Ben's GPG key 2022-05-16 21:40:02 +02:00
Julian Ospald e4b8c9748a
Fix oleg url 2022-05-16 18:03:19 +02:00
Julian Ospald 3318c30cee
Fix stack.yaml 2022-05-16 17:38:46 +02:00
Julian Ospald b9aba98cd5
Fix recursive deletion in `ghcup nuke` 2022-05-16 17:38:05 +02:00
Julian Ospald 55fdc41137
WIP 2022-05-16 11:29:55 +02:00
Julian Ospald c9790e5823
Use strongly types `GHCupPath` and restrict destructive operations 2022-05-13 21:35:34 +02:00
Julian Ospald fa924eac15
Fix CI 2022-05-13 17:59:38 +02:00
Julian Ospald db4e411dfd
Fix darwin binaries after copying 2022-05-13 17:58:15 +02:00
Julian Ospald 48aee1e76c
[WIP] Prototype of recording installed files
This also installs makefile based build system via DESTDIR
into a temporary directory and then merges it into the filesystem.
2022-05-13 00:46:47 +02:00
Julian Ospald 2a2ace603b
Bump 2022-05-12 18:35:38 +02:00
Julian Ospald 25f9ac71ca
Merge branch 'windows-hotfix' 2022-05-12 18:33:19 +02:00
Julian Ospald 61e2801838
Windows fix 2022-05-12 18:03:04 +02:00
Julian Ospald e60b8ee238
Merge branch 'CIi' 2022-05-12 17:15:55 +02:00
Julian Ospald dc0ea5a59c
Document and handle '--force' option better 2022-05-12 13:28:09 +02:00
Julian Ospald 10e704cd73
Fix CI 2022-05-12 13:17:40 +02:00
Julian Ospald 8004cc0537
Make sure root-clenaup runs 2022-05-12 01:12:45 +02:00
Julian Ospald 0a2373f407
Fix CI 2022-05-12 00:17:46 +02:00
Julian Ospald 96f87eaf5f
Update timestamp in CHANGELOG 2022-05-11 23:52:19 +02:00
Julian Ospald e9bd687b8f
Update ghcup version in bootstrap-haskell 2022-05-11 23:39:45 +02:00
Julian Ospald 3ffa38cf98
Update guide 2022-05-11 23:39:37 +02:00
Julian Ospald a770c4bcca
Update CHANGELOG 2022-05-11 23:08:26 +02:00
Julian Ospald f648a6e698
Update submodule 2022-05-11 22:31:06 +02:00
Julian Ospald a72a12b96d
Test that --isolate --force bevaves well 2022-05-11 22:30:55 +02:00
Julian Ospald 591c54b5f7
Update CHANGELOG 2022-05-11 20:42:48 +02:00
Julian Ospald a6a54f34cf
Merge branch 'issue-360' 2022-05-11 20:35:56 +02:00
Julian Ospald f7811961b5
Merge branch 'isolateDir' 2022-05-11 20:35:38 +02:00
Julian Ospald ee778e1177
Print bindir 2022-05-11 20:13:24 +02:00
Julian Ospald 5787a662ed
Add a --quick switch to 'ghcup run'
Also fixes #360, because we resolve all tags/versions now
by default.
2022-05-11 20:11:35 +02:00
Julian Ospald fce654f3c7
Update CHANGELOG 2022-05-11 16:21:37 +02:00
Julian Ospald 0f052c3465
Merge branch 'reenable-upgrade' 2022-05-11 16:20:28 +02:00
Julian Ospald c733810fdc
Bump version to 0.1.17.8 2022-05-11 16:19:34 +02:00
Julian Ospald 5130cb013b
Fix HLS not cleaning up after failed install, fix #361 2022-05-11 16:18:35 +02:00
Julian Ospald 991e540c11
Refactor code around isolateDirs, so we have proper knowledge 2022-05-11 16:18:35 +02:00
Julian Ospald a34d9b7b89
Fix type in bootstrap-haskell.ps1 2022-05-09 12:41:54 +02:00
Julian Ospald 4e62f559fa
Update stackage resolver 2022-05-09 12:40:42 +02:00
Julian Ospald 8c3d2b6740
Merge branch 'improve-pwsh' 2022-05-04 16:05:00 +02:00
Julian Ospald b6779f4d75
Improve welcome message in powershell installer
And warn about antivirus, fixes #343
2022-05-04 14:45:05 +02:00
Julian Ospald b036c9861f
Re-enable upgrade functionality for all configurations
Adds a --fail-if-shadowed switch.
2022-05-04 14:15:17 +02:00
Julian Ospald 02cd773c2a
Update supported tools table 2022-05-03 11:40:05 +02:00
Julian Ospald 3964d06f5d
Merge remote-tracking branch 'origin/merge-requests/249' 2022-05-02 19:06:48 +02:00
Nick Suchecki e83612a06c Fix typo in `compile hls --help` subcommand. 2022-05-01 15:12:39 +00:00
Julian Ospald cf6c666b59
Add credits to first step guide 2022-04-30 12:50:34 +02:00
Julian Ospald ee0ec370c7
Add playground link 2022-04-29 18:55:45 +02:00
Julian Ospald ea0e35ddf0
Merge branch 'issue-353' 2022-04-29 16:47:37 +02:00
Julian Ospald 99c8501d47
Silence hlint 2022-04-29 16:47:11 +02:00
Julian Ospald f8a1fed1f2
Fix parsing of symlinks with multiple slashes,
Fixes #353
2022-04-29 19:22:16 +08:00
Julian Ospald 9ad1f7cb97
Update changelog 2022-04-21 23:38:58 +02:00
Julian Ospald 0856a96738
Bump ghcup in bootstrap-script 2022-04-21 23:02:30 +02:00
Julian Ospald ee9801a8c2
Add GHCUP_BASE_URL env var for bootstrap-haskell 2022-04-18 13:22:20 +02:00
Julian Ospald cfecc11b43
Bump version to 0.1.17.7 2022-04-16 06:42:01 +02:00
Julian Ospald 3d36348563
Merge branch 'issue-345' 2022-04-16 06:40:08 +02:00
Julian Ospald dcbee9c7dc
Fix tests 2022-04-15 23:01:34 +02:00
Julian Ospald 2d88b1197e
Fix EXDEV handler on windows wrt #345 2022-04-15 23:01:33 +02:00
Julian Ospald 6c12dc0d6f
Overhaul user guide 2022-04-07 20:55:45 +02:00
Julian Ospald a4b69f29dc
Update first steps guide link 2022-04-02 23:36:16 +02:00
Julian Ospald 1680c5c448
Improvements 2022-04-02 23:31:35 +02:00
Julian Ospald e74fb45680
Small mkdocs improvements 2022-04-02 20:11:09 +02:00
Julian Ospald d19ab05a11
Add First steps guide initially by soupi
https://github.com/haskell-infra/www.haskell.org/pull/88
2022-04-02 19:45:50 +02:00
Julian Ospald 433c73b23c
Update CHANGELOG 2022-03-18 23:26:15 +01:00
Julian Ospald 2aa5211886
Bump version in bootstrap-haskell 2022-03-18 23:25:49 +01:00
Julian Ospald 81e7c02807
Update docs 2022-03-18 18:45:29 +01:00
Julian Ospald a2373f2056
Improve bootstrap-haskell and fix shellcheck warnings 2022-03-18 18:24:50 +01:00
Julian Ospald ba8e4f6ac6
Update changelog 2022-03-18 17:50:36 +01:00
Julian Ospald 76acc9a5f5
Merge branch 'max_path' 2022-03-18 17:48:58 +01:00
Julian Ospald 92bd333552
Fix double appstate 2022-03-18 17:47:49 +01:00
Julian Ospald 70a451b63e
Prepare 0.1.17.6 2022-03-18 17:47:49 +01:00
Julian Ospald cfe6c47cd7
Fix max path issues on windows with 'ghcup run' 2022-03-18 17:47:49 +01:00
Julian Ospald 8eeb32c495
Overhaul metadata merging and add 'ghcup config add-release-channel URI' 2022-03-18 17:47:49 +01:00
Julian Ospald fdcd6822c4
Don't do update check on --no-verbose 2022-03-18 17:47:49 +01:00
Julian Ospald 71390c84da
Apply hlint 2022-03-18 17:47:48 +01:00
Julian Ospald 84d01b1091
Don't do padding for --raw-format 2022-03-18 17:47:40 +01:00
Julian Ospald 8f9faaa39e
Fix appending on profile file if there's no trailing newline
Fixes #333
2022-03-18 17:33:08 +01:00
Julian Ospald 0898244b2a
Preserve symlinks when sedding profile file
Fixes #332
2022-03-18 17:32:37 +01:00
Julian Ospald 0c70feb09c
Fix rather humongous bug in 'ghcup list' 2022-03-17 20:04:59 +01:00
Julian Ospald f9a38e616d
Add --raw-format to 'tool-requirements' subcommand 2022-03-17 15:05:18 +01:00
Julian Ospald e511fc3c0a
Fix predictable /tmp dirs so `ghcup gc -t` fires 2022-03-16 23:15:09 +01:00
Julian Ospald 3ff670134c
FREEZE! 2022-03-15 22:51:35 +01:00
Julian Ospald 4c0160bb28
Merge branch 'issue-330' 2022-03-14 11:49:40 +01:00
Julian Ospald c1e0baedd3
Merge branch 'issue-329' 2022-03-14 11:49:33 +01:00
Julian Ospald 8f7d937e26
Use predictable /tmp names for `ghcup run`, fixes #329 2022-03-14 00:38:57 +01:00
Julian Ospald 604a6fc92b
Fix bug with isolated installation of not previously installed versions
It would error out trying to set the version.
2022-03-14 00:36:08 +01:00
Julian Ospald 8c205fd18c
Add `--no-set` to install commands, fixes #330
This also slightly changes the default for
'ghcup install cabal/stack/hls'... instead of
only setting the installed version if it's the latest,
we always set it. So the default is `--set`.

For GHC, the default is `--no-set`.
2022-03-13 22:48:45 +01:00
Julian Ospald 41ecf897fb
Update stack.yaml 2022-03-09 20:33:45 +01:00
Julian Ospald 4c9c6e9223
Update cabal bounds 2022-03-09 19:52:16 +01:00
Julian Ospald 8be71c4c5c
Fix color 2022-03-08 22:25:34 +01:00
Julian Ospald 01d310e630
Add tool version tables 2022-03-08 22:23:29 +01:00
Julian Ospald 96cb99e1b5
Improve --repository completion 2022-03-07 22:23:39 +01:00
Julian Ospald 2e08efeed7
Adjust colors 2022-03-07 21:37:04 +01:00
Julian Ospald 04fceb3134
Update changelog 2022-03-06 12:37:17 +01:00
Julian Ospald 1f0a891bab
Fix 'ghcup install cabal/hls/stack --set' wrt #324 2022-03-05 20:50:58 +01:00
Julian Ospald 6c63a65983
Fix bad error message wrt #323 2022-03-05 20:19:54 +01:00
Julian Ospald 199d3b7aee
Fix downloader completer 2022-03-05 20:14:10 +01:00
Julian Ospald 04fc04f586
More improvements to completers 2022-03-05 20:00:32 +01:00
Julian Ospald 3f96a6460a
Merge branch 'url-completer' 2022-03-05 13:49:12 +01:00
Julian Ospald bfcaa7f6fb
Update ghcup-metadata 2022-03-05 12:56:38 +01:00
Julian Ospald e2bd4c4880
Update stack resolver 2022-03-05 12:56:29 +01:00
Julian Ospald ab702bba9b
Improve completion support 2022-03-05 12:56:19 +01:00
Julian Ospald 8afabf3ffb
Update guide wrt with_hls wrapper 2022-02-26 20:17:02 +01:00
Julian Ospald ebf6c60a10
Fix changelog link 2022-02-26 19:11:49 +01:00
Julian Ospald 9a8291d391
Fix disable-upgrade flag description 2022-02-26 19:02:37 +01:00
Julian Ospald a6426901c5
Update dev.md 2022-02-26 18:50:58 +01:00
Julian Ospald 3b7dd36aa6
Merge branch 'ghcup-0.1.17.5' 2022-02-26 18:49:26 +01:00
Julian Ospald dc635a6601
Finalize release 2022-02-26 18:47:18 +01:00
Julian Ospald 08ec1bd923
Update release scripts 2022-02-26 18:06:41 +01:00
Julian Ospald b78aab884e
Prepare 0.1.17.5 release 2022-02-26 15:57:44 +01:00
Julian Ospald 36e192ec32
Refreeze 2022-02-26 15:57:43 +01:00
Julian Ospald 510675622b
Prepare 0.1.17.5 release 2022-02-26 15:33:44 +01:00
Julian Ospald 651722b935
Fix all rtd links to stable 2022-02-25 16:06:05 +01:00
Julian Ospald 7a0d5a95c1
Update cabal rtd link 2022-02-25 13:50:10 +01:00
Julian Ospald 2c583bcae9
Fix NoAdjustCabalConfig on windows 2022-02-21 16:39:25 +01:00
Julian Ospald ab36d4418e
Update stackage to 18.25 2022-02-19 23:19:12 +01:00
Julian Ospald f146c77797
Update CHANGELOG 2022-02-18 19:58:13 +01:00
Julian Ospald d863ac570b
Merge branch 'windows-fix-whitespace' 2022-02-13 21:17:37 +01:00
Julian Ospald d05fad49a1
Fix installation with whitespaces in username, fixes #314 2022-02-13 21:11:48 +01:00
Julian Ospald fbbc4497ca
Merge remote-tracking branch 'origin/merge-requests/239' 2022-02-12 13:57:18 +01:00
Julian Ospald 4223586e62
Merge branch 'issue-137' 2022-02-12 11:46:41 +01:00
Julian Ospald c859b3ee2b
Exclude FreeBSD from 'ghcup run' test 2022-02-11 19:24:39 +01:00
Julian Ospald 8a16b0de7c
Fix tests 2022-02-11 18:51:16 +01:00
Julian Ospald 9faf17634b
Fix hlint and windows build 2022-02-10 21:49:19 +01:00
Julian Ospald 66a62c170c
Fix 'ghcup run' for legacy HLS 2022-02-10 20:35:09 +01:00
Julian Ospald 5186d959bc
Avoid metadata download when possible 2022-02-10 19:29:32 +01:00
Julian Ospald 09a8a0bda0
Fix build on windows and stack 2022-02-10 18:35:25 +01:00
Julian Ospald 191f49adfc
Add 'ghcup run' test 2022-02-10 18:31:38 +01:00
MorrowM 26b79c5763 Update site description 2022-02-09 22:25:19 +00:00
Julian Ospald c72841ca58
Implement 'ghcup run' 2022-02-09 18:57:59 +01:00
Julian Ospald 63350dab71
Fix recyclePathForcibly on windows 2022-02-06 22:56:22 +01:00
Julian Ospald d110d20879
Fix HLS removal on windows 2022-02-06 22:25:23 +01:00
Julian Ospald b4e58478c3
Fix error handling for HLS make 2022-02-06 22:24:52 +01:00
Julian Ospald 12d2acd7fd
Bump version to 0.1.17.5 2022-02-06 20:54:16 +01:00
Julian Ospald 6073ebe476
Fix HLS support and compile errors with boot and TH files 2022-02-06 00:32:18 +01:00
Julian Ospald 5c026591cb
Merge branch 'hls-dynamic-builds' 2022-02-05 21:25:21 +01:00
Julian Ospald 907365ddff
Fix FreeBSD CI 2022-02-05 19:43:24 +01:00
Julian Ospald 684953464b
Silence hlint 2022-02-05 19:39:00 +01:00
Julian Ospald 6b978b42bc
Improve rmHLSNoGHC 2022-02-05 19:12:13 +01:00
Julian Ospald 6831337289
Refactoring and fixes 2022-02-05 19:11:56 +01:00
Julian Ospald e40777a5d3
Resolve paths when using XDG dirs, fixes #311 2022-02-05 16:48:20 +01:00
Julian Ospald 51690d1df3
Support HLS dynamic builds 2022-02-05 16:33:05 +01:00
Julian Ospald 72a06e964c
Update supported platform notes 2022-02-03 15:39:11 +01:00
Julian Ospald 9ffd402481
Add kowainik Haskell course to First steps 2022-02-03 15:21:41 +01:00
Julian Ospald dee8d4bc09
Add symlink ftp script 2022-01-31 21:18:24 +01:00
Julian Ospald 6c57661797
Update docs wrt CI 2022-01-30 18:24:42 +01:00
Julian Ospald b9ff7c5af4
Merge branch 'issue-291' 2022-01-30 18:22:55 +01:00
Julian Ospald 072161ada2
Don't fail to set ghc version if already installed
Fixes #291
2022-01-30 17:59:27 +01:00
Julian Ospald a67b3e8a57
Merge branch 'improve-hls-compile-help' 2022-01-29 20:37:32 +01:00
Julian Ospald c9216fb444
Improve help output of hls compile 2022-01-29 20:02:33 +01:00
Julian Ospald 2aac17ac5f
Merge branch 'issue-305' 2022-01-28 23:47:36 +01:00
Julian Ospald 17a403b8ce
Merge branch 'issue-307' 2022-01-28 23:20:16 +01:00
Julian Ospald b245c11b1d
Allow to disable self-upgrade functionality wrt #305 2022-01-28 23:08:35 +01:00
Julian Ospald 2ed047515e
Merge remote-tracking branch 'origin/merge-requests/232' 2022-01-28 22:51:22 +01:00
Julian Ospald b16e561384
Allow unpacking legacy lzma archives, fixes #307 2022-01-28 22:48:23 +01:00
Phil Ruffwind 2ebff1e887 Fix the indentation in env files
This changes the indentation from tabs to spaces, since tabs get
stripped by the heredoc.
2022-01-26 01:15:06 -08:00
Julian Ospald 655ee432f8
Merge remote-tracking branch 'origin/merge-requests/231' 2022-01-19 17:03:29 +01:00
Julian Ospald 67b7b2f292
Don't print to stdout during logging 2022-01-19 15:40:58 +01:00
Julian Ospald 66961101c6
Add documentation about mirrors, fixes #300 2022-01-19 13:04:00 +01:00
Julian Ospald 326af49a8f
Merge remote-tracking branch 'origin/merge-requests/229' 2022-01-17 21:15:30 +01:00
Julian Ospald 3a7ed5ee2d
Fix hlint warnings 2022-01-12 22:55:00 +01:00
Julian Ospald 56fa798406
Merge remote-tracking branch 'origin/merge-requests/230' 2022-01-12 22:34:46 +01:00
James Hobson 3fd9fae66a
Changed to use IO Exceptions 2022-01-12 13:31:10 +01:00
James Hobson 5d43168370
Updated help message for ghcup compile ghc -h 2022-01-12 10:06:38 +01:00
James Hobson f8548fefb3
Added support for quilt series files when patching 2022-01-12 10:01:48 +01:00
Phil Ruffwind 3565c32d51 Avoid adding duplicates to PATH
Without this, each time the env script gets executed it will add a copy
of the paths to PATH. This can happen when shells are nested.

The "case" trick was inspired by:
184a899f45/src/cli/self_update/env.sh
2022-01-08 00:34:16 -08:00
Julian Ospald 7fab328acc
Document versions and tags better 2022-01-06 15:54:27 +08:00
Julian Ospald a043b82b27
Fix docs 2021-12-06 20:00:41 +01:00
Julian Ospald 20652fed94
Fix comments in bootstrap-haskell.ps1 2021-12-06 20:00:17 +01:00
Julian Ospald 6fc52a4ec7
Merge branch 'freebsd1333' 2021-12-02 17:49:19 +01:00
Julian Ospald 834bcfa02c
Use FreeBSD 13 in bootstrap script as well 2021-12-02 17:48:56 +01:00
Julian Ospald c99ecc0a66
Fix FreeBSD 13 build 2021-12-02 17:48:33 +01:00
Julian Ospald 061e5dd832
Fix FreeBSD 13 build 2021-12-02 15:53:06 +01:00
Julian Ospald c97ade81fa
Revert "Fix arch detection on macos"
This reverts commit dbadcf1858.
2021-12-01 20:54:44 +01:00
Julian Ospald 82a22fe993
Merge branch 'darwin-arch' 2021-12-01 20:39:05 +01:00
Julian Ospald dbadcf1858
Fix arch detection on macos 2021-12-01 20:27:03 +01:00
Julian Ospald ff8865c5c3
Fix bootstrap on FreeBSD 2021-11-30 22:40:18 +01:00
Julian Ospald 9833dee925
Fix freebsd bootstrap 2021-11-30 21:35:33 +01:00
Julian Ospald aac2874f8f
Fix boostrap-haskell on FreeBSD 13 2021-11-30 19:00:33 +01:00
Julian Ospald 17524b21b3
Merge branch 'issue-289' 2021-11-22 23:18:52 +01:00
Julian Ospald 3f0befe30d
Fix `ghcup whereis ghc` for non-standard versions, fixes #289 2021-11-22 22:53:59 +01:00
Julian Ospald 76c286f95e
Use upstream terminal-size 2021-11-22 22:51:58 +01:00
Julian Ospald 0c415314b6
Bump GHC version in bootstrap-haskell 2021-11-16 20:11:32 +01:00
Julian Ospald 717f386077
Merge branch 'issue-285' 2021-11-14 17:52:08 +01:00
Julian Ospald 7a841a480b
Run cabal update with `--ignore-project`, fixes #285 2021-11-14 17:49:59 +01:00
Julian Ospald 43ea85b495
Also fix redundant upgrade warnings for 'ghcup upgrade' 2021-11-14 16:24:13 +01:00
Julian Ospald 8a6badca1d
Update changelog 2021-11-14 14:03:06 +01:00
Julian Ospald 4064803e23
Merge branch 'issue-283' 2021-11-14 00:23:07 +01:00
Julian Ospald 2e03b075f8
Avoid redundant warnings when installing tools, fixes #283 2021-11-13 22:59:52 +01:00
Julian Ospald fe9c125bd6
Refreeze 2021-11-13 22:53:39 +01:00
Julian Ospald 503fd57d7c
Merge branch 'issue-282' 2021-11-13 20:42:13 +01:00
Julian Ospald e74e746213
Trim whitespaces wrt #282 2021-11-13 20:35:50 +01:00
Julian Ospald 065f9c4965
Fix compile HLS CI 2021-11-13 16:56:38 +01:00
Julian Ospald 32f3c36589
Set HOMEBREW_TEMP to something shorter
This fixes unix socket errors, because there's a max path length for
those.
2021-11-13 16:53:31 +01:00
Julian Ospald c2a8d39fb4
Bump to 0.1.17.4 2021-11-12 20:52:08 +01:00
Julian Ospald f08cbe70fb
Merge branch 'issue-281' 2021-11-12 20:42:43 +01:00
Julian Ospald a9630d0802
Cooler patching 2021-11-12 19:52:00 +01:00
Julian Ospald c5c6c431b5
Allow remote URIs for --cabal-project-local wrt #281 2021-11-12 19:05:13 +01:00
Julian Ospald 71d78d2d72
Update cabal.project 2021-11-12 19:04:46 +01:00
Julian Ospald ccecda2eff
Merge branch 'dynamic-hls' 2021-11-12 17:57:15 +01:00
Julian Ospald 3a5f8d6139
Fix build on windows 2021-11-12 15:01:24 +01:00
Julian Ospald 74e0f39bc2
Fix stack.yaml 2021-11-12 01:28:40 +01:00
Julian Ospald 274978a8a7
Allow to pass cabal args to 'compile hls'
This breaks the existing cli interface, but whatever.
2021-11-12 01:13:57 +01:00
Julian Ospald 8eea9bd6a5
Prefer forM_ when possible 2021-11-12 01:04:27 +01:00
Julian Ospald 626a2dd020
More debug logging 2021-11-12 01:01:21 +01:00
Julian Ospald 6b6ce221e0
Use patched haskus-utils-variant, fixing applicative instance 2021-11-12 00:57:39 +01:00
Julian Ospald d038c361c0
Revert "Fix HLS rebuilds"
This reverts commit 8e8198546f.
2021-11-11 21:40:02 +01:00
Julian Ospald c05876cc60
Fix build with ghc-8.6.5 2021-11-02 19:53:22 +01:00
Julian Ospald b9c4c9a0b7
Fix hlint 2021-11-02 10:57:27 +01:00
Julian Ospald 6697e804ee
Merge branch 'fix-ghc-version-parser' 2021-11-02 10:56:21 +01:00
Julian Ospald 2c57def8f1
Fix parsing of atypical ghc versions 2021-11-02 01:22:06 +01:00
Julian Ospald 62b16e957b
Merge branch 'issue-276' 2021-10-30 14:17:52 +02:00
Julian Ospald 18d7bdd85c
Merge branch 'issue-278' 2021-10-30 14:17:11 +02:00
Julian Ospald 190b5dedba
Allow to control the metadata cache, fixes #278 2021-10-30 14:16:45 +02:00
Julian Ospald 886e45f788
Update hie.yaml 2021-10-30 13:47:45 +02:00
Julian Ospald 360daf2a09
Make upgrading ghcup in TUI more pleasant 2021-10-30 12:54:05 +02:00
Julian Ospald 7bb67dd4c6
Merge branch 'ghcup-gen' 2021-10-27 15:55:51 +02:00
Julian Ospald 72c4ea70c4
Migrate ghcup-gen to haskell/ghcup-metadata 2021-10-27 15:33:39 +02:00
Julian Ospald 0ae42dd71e
Refreeze 2021-10-27 14:47:49 +02:00
Julian Ospald 1df1e7eb98
Add links to metadata yaml files 2021-10-27 14:43:10 +02:00
Julian Ospald 9592021c48
Bump version in bootstrap script 2021-10-27 14:28:32 +02:00
Julian Ospald 9a9c3b340e
Remove metadata from ghcup.cabal 2021-10-27 14:02:13 +02:00
Julian Ospald abd64cb3fa
Disable darwin M1 jobs by default 2021-10-27 13:58:10 +02:00
Julian Ospald b366a50af1
Force Cabal 3.6.2.0 2021-10-27 13:13:35 +02:00
Julian Ospald e4b9eeefc6
Update GHC/cabal on github CI 2021-10-27 12:18:12 +02:00
Julian Ospald 4d7a8557eb
Fix yaml format 2021-10-27 12:09:07 +02:00
Julian Ospald c23357df81
Only clone when necessary 2021-10-27 12:06:24 +02:00
Julian Ospald f728d5aa23
Revert bootstrap-haskell 2021-10-27 12:04:53 +02:00
Julian Ospald ac59563adf
Release 0.1.17.3 2021-10-27 11:56:18 +02:00
Julian Ospald b2d2996077
Merge branch 'fix-nix' 2021-10-27 11:48:28 +02:00
Julian Ospald df2337abf9
Get rid of nix and use homebrew, fixes #274 2021-10-27 11:48:06 +02:00
Julian Ospald d68ab3b657
Merge branch 'github-metadata' 2021-10-25 22:20:33 +02:00
Julian Ospald c10821c332
Use github.com/haskell/ghcup-metadata 2021-10-25 21:47:42 +02:00
Julian Ospald 219cba5fc7
Fix arm-ness 2021-10-25 21:01:19 +02:00
Julian Ospald 8e3c74958a
Update cabal constraint 2021-10-24 14:22:39 +02:00
Julian Ospald ed08e0b166
Use aeson-pretty from hackage 2021-10-24 13:51:23 +02:00
Julian Ospald 168f2e6d16
Merge branch 'improve-config' 2021-10-22 09:35:46 +02:00
Julian Ospald 4574f3aa4f
Switch to yaml-streamly 2021-10-21 23:39:07 +02:00
Julian Ospald 2a11e85a95
Allow to specify config value as JSON 2021-10-19 20:46:38 +02:00
Julian Ospald 69df100b18
Update module graphs 2021-10-17 21:17:14 +02:00
Julian Ospald 920b027a32
Merge branch 'reduce-win-cpp' 2021-10-17 21:16:59 +02:00
Julian Ospald 9f8c9c228d
Reduce IS_WINDOWS CPP 2021-10-17 20:57:22 +02:00
Julian Ospald 9d8fdfe090
Merge branch 'refactor-main' 2021-10-17 19:46:20 +02:00
Julian Ospald 01956d694d
Refactor app Main 2021-10-17 19:15:24 +02:00
Julian Ospald 09d2a1e815
Merge branch 'issue-266' 2021-10-13 22:09:18 +02:00
Julian Ospald ccfaedb7ad
Migrate to aeson-2.0.1.0 2021-10-13 19:47:14 +02:00
Julian Ospald 356a69f575
Merge branch 'issue-267' 2021-10-13 19:35:36 +02:00
Julian Ospald 752efad4bf
Fix desktop shortcut creation 2021-10-13 19:19:52 +02:00
Julian Ospald 05adb224e9
Improve "How to help" 2021-10-13 18:17:46 +02:00
Julian Ospald bf1a3fbbe8
Merge branch 'improve-page-take-2' 2021-10-13 18:11:41 +02:00
Julian Ospald 8b14b22b12
Merge branch 'improve-page-take-3' 2021-10-13 18:11:34 +02:00
Julian Ospald b8b47a45ba
Remove Prev/Next buttons 2021-10-13 16:15:43 +02:00
Julian Ospald 2b9e51cc31
Remove issue tracker button 2021-10-13 16:15:30 +02:00
Julian Ospald d9fa0cdb45
Try to match color and width of hackage navbar 2021-10-13 16:15:09 +02:00
Julian Ospald 288af4abc6
Add first-steps link to bootstrap-haskell 2021-10-13 15:09:09 +02:00
Julian Ospald e77b2c39f9
Add "how to help" section 2021-10-13 15:07:45 +02:00
Julian Ospald 87e5d526cb
Move GPG verification to the bottom 2021-10-13 15:07:45 +02:00
Julian Ospald 2b33dd4871
Add uninstallation section 2021-10-13 15:07:45 +02:00
Julian Ospald 62b68cfa3e
Add "first steps" section 2021-10-13 15:07:44 +02:00
Arjun Kathuria af14227862 move need-help section above, refactor its html. move donate down 2021-10-13 16:09:31 +05:30
Arjun Kathuria eb0e9df6ab change the website theme to a consistent purple, to match haddock's 2021-10-13 16:02:32 +05:30
Julian Ospald f1cc2ebf20
Merge branch 'fix-adjust_cabal_config' 2021-10-12 21:19:04 +02:00
Julian Ospald 74f14c68a4
Fix path to cabal bin dir in adjust_cabal_config 2021-10-12 20:09:40 +02:00
Julian Ospald 5dc5c2094e
Merge branch 'improve-page' 2021-10-12 14:29:53 +02:00
Julian Ospald 940b5842b6
Add "Get help" section 2021-10-12 12:58:21 +02:00
Julian Ospald d19602d06f
Reduce donate button size a bit 2021-10-12 12:54:55 +02:00
Julian Ospald ae85f7152e
Close the link, otherwise it spans to the bottom of the page 2021-10-12 12:54:40 +02:00
Arjun Kathuria 2cb40af62f
make donate button primary call-to-action, move it above-the-fold for
better visibility, move need-help section near footer
2021-10-12 12:48:07 +02:00
Arjun Kathuria 569b46f0c4
improves the look of central download box 2021-10-12 12:47:08 +02:00
Arjun Kathuria 6b0c915077
align the top haskell logo and "GHCUP" text correctly 2021-10-12 12:47:04 +02:00
Arjun Kathuria 237ed173ee
format extra.css with 2 spaces uniformly for readability 2021-10-12 12:46:52 +02:00
Julian Ospald c0c6cd4fb3
Fix some https links 2021-10-12 11:34:48 +02:00
Julian Ospald 1f100623a7
Link to Haskell documentation after installation 2021-10-12 11:34:48 +02:00
Julian Ospald f137d5cc21
Bring back the original install look&feel with platform detection 2021-10-12 11:34:47 +02:00
Julian Ospald aea8af513b
Merge branch 'better-cleanup' 2021-10-10 21:50:19 +02:00
Julian Ospald c846e52acb
Cleanup during unpack failures as well 2021-10-10 20:48:33 +02:00
Julian Ospald 19e7f0df34
Use static cabal bindists for linux 2021-10-10 17:53:24 +02:00
Julian Ospald cd218ce025
Merge branch 'Cabal-3.6' 2021-10-09 23:22:29 +02:00
Julian Ospald c381f47a72
Bump GHC/cabal in CI 2021-10-09 22:49:09 +02:00
Julian Ospald a68355cb7d
Raise Cabal lower bound 2021-10-09 22:49:09 +02:00
Julian Ospald f53a10825e
Merge remote-tracking branch 'origin/merge-requests/196' 2021-10-09 20:30:11 +02:00
Julian Ospald 21bbb8be1c
Merge branch 'mkdocs-ci' 2021-10-09 19:47:47 +02:00
Julian Ospald ab44e9d2ac
Add shellcheck check 2021-10-09 19:46:29 +02:00
Julian Ospald 32497f3a6f
Add mkdocs to CI 2021-10-09 19:38:07 +02:00
Julian Ospald c06c6b6f12
Fix 32bit cabal bindists 2021-10-09 19:26:39 +02:00
Julian Ospald 26335150b7
Fix alpine hashes 2021-10-09 12:47:28 +02:00
Julian Ospald 5298aacac9
Fix cabal-3.6.2.0 hashes 2021-10-09 12:25:25 +02:00
Arjun Kathuria 7832399fb3 fix unordered-list li items overflow, esp on about page 2021-10-09 13:48:45 +05:30
Arjun Kathuria 2b60830203 fix donate button margin across mobile and desktop on homepage 2021-10-09 13:27:07 +05:30
Arjun Kathuria b9bf29ba2c fix mobile site, cleanup some css from new homepage 2021-10-09 13:14:26 +05:30
Julian Ospald 00d67c270e
Set previous cabal versions as old 2021-10-09 01:38:06 +02:00
Julian Ospald 2826fec975
Bump cabal 2021-10-09 01:33:34 +02:00
Julian Ospald 29a34f5edf
Add sponsors to about 2021-10-08 21:05:14 +02:00
Julian Ospald c100daeba5
Redo landing page 2021-10-06 19:09:44 +02:00
Julian Ospald ac66f6747e
Fix description of macos versions
Fixes #261
2021-10-06 17:27:47 +02:00
Julian Ospald 014f1ff125
Improve documentation 2021-10-06 10:20:08 +02:00
Julian Ospald c4991425ab
Add modgraph script 2021-10-05 21:38:07 +02:00
Julian Ospald 1c770aad58
Add module graph 2021-10-05 21:36:50 +02:00
Julian Ospald 7c8912d48c
Set favicon 2021-10-05 20:25:47 +02:00
Julian Ospald 67d9a0bd2c
Improve about page 2021-10-05 16:57:14 +02:00
Julian Ospald 0115e2a13c
Set 3.4.0.0 as recommended, since 3.6.0.0 is broken on windows 2021-10-05 14:26:42 +02:00
Julian Ospald e2f36611a1
Tweak appearance 2021-10-04 21:40:48 +02:00
Julian Ospald 9143ac97c5
Update README 2021-10-04 18:51:11 +02:00
Julian Ospald b5b09d0ca2
Beef up Quick Install 2021-10-04 11:07:25 +02:00
Julian Ospald fa79f75072
Add missing cabal-install-3.6.0.0-i386-linux.tar.gz 2021-10-03 12:42:21 +02:00
Julian Ospald 6459af419e
Merge branch 'issue-258' 2021-10-03 12:40:27 +02:00
Julian Ospald 2ff2655db0
Fix ghcup.cabal 2021-10-03 12:15:22 +02:00
Julian Ospald c4ab59f7bf
Make sure to always ass GHC env var, fixes #258 2021-10-03 11:38:53 +02:00
Julian Ospald a62365141e
Fix nested lists, which need 4 spaces of indent 2021-10-03 00:48:22 +02:00
Julian Ospald 5ae649bccb
Fix hover 2021-10-03 00:28:53 +02:00
Julian Ospald 2095b17d06
Fix navbar 2021-10-03 00:22:00 +02:00
Julian Ospald 336514b3e2
Add logo 2021-10-03 00:20:44 +02:00
Julian Ospald 37707e1df8
More color fixes 2021-10-03 00:19:28 +02:00
Julian Ospald 57aa30c7af
Improve colors 2021-10-03 00:14:45 +02:00
Julian Ospald 78c6dd5404
Improve image 2021-10-02 23:29:40 +02:00
Julian Ospald c101c228d7
Improve docs and update www 2021-10-02 23:18:07 +02:00
Julian Ospald 0f6874bc0f
Update gif 2021-10-02 22:44:02 +02:00
Julian Ospald 399d89dae5
Fix doc links 2021-10-02 22:37:17 +02:00
Julian Ospald ba6b540869
Lower badge size 2021-10-02 22:31:44 +02:00
Julian Ospald 249c5a5c59
Fix buttons 2021-10-02 22:28:54 +02:00
Julian Ospald e2c59230b5
Fix button size 2021-10-02 22:27:49 +02:00
Julian Ospald 1d1ace096e
Update docs 2021-10-02 22:26:35 +02:00
Julian Ospald 0381ccef64
Update README 2021-10-02 22:00:07 +02:00
Julian Ospald e5a0f836a4
Fix padding 2021-10-02 21:54:34 +02:00
Julian Ospald 463915da1a
Improve css selectors due to mkdocs version mismatch 2021-10-02 21:48:24 +02:00
Julian Ospald ae7bc508e8
Add meta extension 2021-10-02 21:39:22 +02:00
Julian Ospald d21e0473bc
Hide navbar for home 2021-10-02 21:36:15 +02:00
Julian Ospald df05feb766
Merge branch 'readthedocs' 2021-10-02 21:20:58 +02:00
Julian Ospald e0dafa2093
Add readthedocs via mkdocs 2021-10-02 21:19:37 +02:00
Julian Ospald f1e01e8b18
Add golden file to extra-source-files wrt #255 2021-10-02 14:31:38 +02:00
Julian Ospald 8a770de33e
Merge branch 'issue-252' 2021-10-01 20:52:00 +02:00
Julian Ospald b3aeb3246f
Fix homepage on chrome/brave 2021-10-01 20:51:37 +02:00
Julian Ospald 1fc3e0ee5d
Refreeze 2021-10-01 20:29:24 +02:00
Julian Ospald f2dcfbdc5f
Prepare for hackage release 2021-10-01 17:15:30 +02:00
Julian Ospald 23d77ce1b4
Update metadata 2021-09-30 15:43:22 +02:00
Julian Ospald 0e6688c2bc
Bump to 0.1.17.2 2021-09-30 11:15:53 +02:00
Julian Ospald 7ef1ef688f
Merge branch 'issue-253' 2021-09-29 23:58:56 +02:00
Julian Ospald 3b8f2e8307
Apply patches before bootstrap 2021-09-29 23:08:55 +02:00
Julian Ospald 0af7aaef3c
Fix ``--overwrite-version` for `ghcup compile ghc`
Fixes #253
2021-09-29 22:33:17 +02:00
Julian Ospald b8907335ba
Merge remote-tracking branch 'origin/merge-requests/192' 2021-09-29 19:08:04 +02:00
Julian Ospald 0073ca769b
Add darwin aarch64 bindist for 9.2.0.20210821 2021-09-29 15:23:40 +02:00
Julian Ospald 8a286156f6
Improve information regarding what the scripts do 2021-09-29 11:37:16 +02:00
Julian Ospald 5a39ead523
Speed up unset command 2021-09-27 12:52:45 +02:00
Julian Ospald d2b4eccac2
Honour GHC bootstrap compiler during git clone stages
Fixes #250
2021-09-27 12:51:59 +02:00
Julian Ospald be9b3a3857
Mark some more GHC versions as old 2021-09-26 20:27:50 +02:00
Julian Ospald a8e6fca128
Set cabal-3.6.0.0 as recommended 2021-09-26 20:24:41 +02:00
Julian Ospald 0483133857
Bump metadata 2021-09-26 16:58:35 +02:00
Julian Ospald 30d9eb5634
Bump to 0.1.17.1 2021-09-26 15:02:08 +02:00
Julian Ospald 9fe7af3335
Hide nuclear command 2021-09-25 22:45:06 +02:00
Julian Ospald bedfb3d114
Merge branch 'issue-241' 2021-09-25 22:44:59 +02:00
Julian Ospald c19dd5ee8b
Implement `ghcup gc` command
Fixes #241
2021-09-25 22:29:02 +02:00
Julian Ospald 6ae3bfe395
Merge branch 'fix-hls-build' 2021-09-25 19:21:19 +02:00
Julian Ospald 4f82e80dad
Merge branch 'issue-243' 2021-09-25 18:29:10 +02:00
Julian Ospald 8e8198546f
Fix HLS rebuilds 2021-09-25 18:25:03 +02:00
Julian Ospald 9497e310ca
Improve cli interface with partial versions
Fixes #243
2021-09-25 17:13:11 +02:00
Julian Ospald 02135bdbae
Merge branch 'freebsd12' 2021-09-25 00:21:08 +02:00
Julian Ospald 041a341879
Merge branch 'issue-242' 2021-09-25 00:19:51 +02:00
Julian Ospald 15dd810d67
Get rid of concurrent-output
Also improve some NO_COLOR foo.
2021-09-24 23:49:50 +02:00
Julian Ospald 7982f3aec0
Merge branch 'issue-244' 2021-09-24 23:19:35 +02:00
Julian Ospald 2fb07201c7
Fix freebsd12 tag 2021-09-24 20:54:55 +02:00
Julian Ospald b5ca01dc4f
Merge branch 'issue-248' 2021-09-24 20:52:41 +02:00
Julian Ospald fa523d590e
Add ListAvailable to ListCriteria 2021-09-24 20:51:29 +02:00
Julian Ospald 523f2f57e1
Fix `ghcup list -t` for hls/stack, fixes #244 2021-09-24 20:51:29 +02:00
Julian Ospald d662682fb5
Honour NO_COLOR in bootstrap scrips, fixes #248 2021-09-24 20:37:55 +02:00
Julian Ospald ff2b06a5e8
Merge branch 'no-color' 2021-09-23 23:28:04 +02:00
Julian Ospald aece305003
Move logger stuff to logger module 2021-09-23 12:53:01 +02:00
Julian Ospald ef8da9bcec
Make sure NO_COLOR also applies to logging 2021-09-23 12:16:49 +02:00
Julian Ospald 3cd55beab1
Metadata bump 2021-09-21 12:24:24 +02:00
Julian Ospald 6766501858
Merge branch 'hls-compile-improve' 2021-09-20 23:27:15 +02:00
Julian Ospald d5b41683ca
Improve HLS compile 2021-09-20 22:24:20 +02:00
Julian Ospald ff8dbe111d
Fix spelling 2021-09-20 20:01:24 +02:00
Julian Ospald 28d4071fac
Bump version 2021-09-20 19:55:11 +02:00
Julian Ospald 31a523755f
Remove solus support 2021-09-20 19:42:06 +02:00
Julian Ospald 3d1d8f1af7
Improve optparse hls stuff 2021-09-20 14:43:43 +02:00
Julian Ospald 167f6d0683
Merge branch 'freebsd-ci' 2021-09-20 12:09:54 +02:00
Julian Ospald 8580487b61
Add retries 2021-09-20 11:30:58 +02:00
Julian Ospald a8b1c33280
Add FreeBSD12 CI back 2021-09-20 11:25:40 +02:00
Julian Ospald fca2a4134b
Merge branch 'hls-compile' 2021-09-19 22:38:51 +02:00
Julian Ospald f90741f4d3
Implement compiling HLS from source 2021-09-19 22:04:32 +02:00
Julian Ospald ba4b45f7fb
Merge branch 'unset' 2021-09-19 16:25:30 +02:00
Julian Ospald 4767f3db5b
Implement ghcup unset 2021-09-19 14:17:55 +02:00
Julian Ospald 709658462c
Merge branch 'gpg' 2021-09-19 12:28:46 +02:00
Julian Ospald c431c0ae00
Implement GPG verification wrt #236 2021-09-18 21:51:19 +02:00
Julian Ospald 6f61b5dbef
Make hlint shut up 2021-09-18 15:47:54 +02:00
Julian Ospald c42c4b64f9
Improve logging 2021-09-18 15:46:53 +02:00
Julian Ospald d3a36c2c9a
Merge remote-tracking branch 'origin/merge-requests/156' 2021-09-18 15:19:06 +02:00
Julian Ospald 6799e9616e
Merge remote-tracking branch 'origin/merge-requests/177' 2021-09-17 22:14:33 +02:00
Emily Pillmore e8d962ac44 Add language fixes per issue #237 2021-09-17 14:11:00 -06:00
Julian Ospald ac1e145028
Update README 2021-09-17 12:00:07 +02:00
Julian Ospald 2fdf121167
Update readme 2021-09-17 11:54:43 +02:00
Julian Ospald dcca8b0bf2
Merge branch 'issue-231' 2021-09-17 11:51:33 +02:00
Julian Ospald b1f891b005
Add supported platforms to README 2021-09-17 11:50:26 +02:00
Julian Ospald 648dcc7287
Update HLS 2021-09-16 21:41:05 +02:00
Julian Ospald 2175f7dd3d
Warn when installing 8.10.5/8.10.6 2021-09-16 16:01:51 +02:00
Julian Ospald aff90a52f1
Merge branch 'hls-1.4.0' 2021-09-15 23:08:48 +02:00
Julian Ospald 0f14dee72a
Bump HLS to 1.4.0 2021-09-15 22:41:57 +02:00
Julian Ospald ae2031174e
Improve warnAboutHlsCompatibility 2021-09-14 12:36:14 +02:00
Julian Ospald c163278c64
Merge remote-tracking branch 'origin/merge-requests/172' 2021-09-14 12:26:41 +02:00
Julian Ospald d10133f06f
Clean up toolRequirements 2021-09-13 22:33:46 +02:00
Julian Ospald 4377fc663e
Merge branch 'opencollective' 2021-09-13 08:43:10 +02:00
Julian Ospald 487e236882
Add opencollective button 2021-09-13 08:34:13 +02:00
Arjun Kathuria 8fc128e89b move some code around for better consistency 2021-09-12 09:25:09 +05:30
Chris Smith 737f72f90f Lint fix. 2021-09-11 23:35:39 -04:00
Chris Smith c3aab65521 Rewording 2021-09-11 23:24:21 -04:00
Chris Smith 972474f79a Add version numbers to error message.
Fixes after formatting changes.
2021-09-11 23:17:14 -04:00
Julian Ospald bc64d2ade0 Apply 3 suggestion(s) to 1 file(s) 2021-09-12 03:09:36 +00:00
Chris Smith eddda55fe6 Fix hlint warnings 2021-09-11 19:57:42 -04:00
Chris Smith 13aca91231 Add a warning when the installed HLS and GHC versions are not compatible.
This is triggered when:

1. The user has just set either the GHC or HLS version.
2. There is an HLS version set (so some GHC version is compatible).
3. There is a GHC version.
4. The HLS version doesn't support that GHC version.

Fixes #234
2021-09-11 19:33:27 -04:00
Arjun Kathuria 6011242eae minor cleanup 2021-09-11 23:23:58 +05:30
Arjun Kathuria cadb5086e1 Implements --force install for GHC 2021-09-11 23:20:06 +05:30
Arjun Kathuria 10a30bbf38 Implements --force install for Stack 2021-09-11 22:04:54 +05:30
Arjun Kathuria 6ac7a75bab Implements --force install for HLS 2021-09-11 22:04:40 +05:30
Julian Ospald bbd11bfa26
Merge branch 'freebsd13' 2021-09-11 09:22:44 +02:00
Julian Ospald 75548fa02d
Merge branch 'improve-ci' 2021-09-10 20:59:14 +02:00
Julian Ospald fb6956009f
Add cabal freebsd13 bindists 2021-09-10 20:58:26 +02:00
Julian Ospald e029117c3e
Fix freebsd runner getting stuck (maybe) 2021-09-10 19:48:42 +02:00
Julian Ospald bc7c01de90
Add aarch64-darwin and armv7-linux cabal-3.6.0.0 bindists 2021-09-10 19:07:07 +02:00
Julian Ospald cfcd8a4c20
Merge remote-tracking branch 'origin/merge-requests/170' 2021-09-10 18:29:37 +02:00
Julian Ospald 5e17eb7ca7
Bump FreeBSD runner 2021-09-10 15:46:19 +02:00
amesgen 756727ffe2
Add cabal 3.6.0.0 2021-09-10 15:40:42 +02:00
Julian Ospald 6bc602dead
Merge branch 'fix-boot' 2021-09-10 15:15:59 +02:00
Julian Ospald 056c79e813
Improve CI 2021-09-10 15:14:40 +02:00
Julian Ospald 68bbf31a86
Fix download for armv7 container on arm64 host 2021-09-10 14:59:26 +02:00
Julian Ospald b58f380e75
Merge branch 'bootstrap' 2021-09-10 13:55:55 +02:00
Julian Ospald 48c54bf374
Don't unconditionally adjust .bashrc on windows 2021-09-10 13:34:22 +02:00
Julian Ospald 51da1578f4
Merge remote-tracking branch 'origin/merge-requests/166' 2021-09-08 22:16:02 +02:00
jneira 488f25aed6 Include stack and minor correction 2021-09-08 14:14:05 +02:00
Arjun Kathuria d60f58cf43 simplify `checkIfToolInstalled` for Cabal 2021-09-07 14:22:21 +05:30
Arjun Kathuria 7a6a119829 Patch for MonadLogger deletion since new rebase 2021-09-07 14:21:24 +05:30
Arjun Kathuria f0fb019c70 Merge branch 'feat-force' of gitlab.haskell.org:arjun/ghcup-hs into feat-force 2021-09-07 11:29:33 +05:30
Arjun Kathuria 0f98ec6b78 factor out `checkIfCabalInstalled` to `checkIfToolInstalled` 2021-09-07 11:24:28 +05:30
Arjun Kathuria 107fed6e60 refactor nested case statements when installing cabal 2021-09-07 11:23:30 +05:30
Arjun Kathuria 59a9a770a5 implements --force option for cabal installs. 2021-09-07 11:23:26 +05:30
Arjun Kathuria 20bcb26e3d Adds the --force option in install commands 2021-09-07 11:17:10 +05:30
Julian Ospald d355c46250
Merge branch 'issue-228' 2021-09-07 00:05:30 +02:00
Julian Ospald 787c927de6
Improve logging, fixes #228 2021-09-06 23:01:49 +02:00
Julian Ospald d15ff7bc67
Improve README 2021-09-05 22:43:44 +02:00
Julian Ospald 7c5c35f1b0
Fix typo 2021-09-05 22:23:08 +02:00
Julian Ospald 001b090bc6
Merge branch 'ghc-compile-patch' 2021-09-05 22:21:42 +02:00
Julian Ospald db8207f8b9
Fixup 2021-09-04 16:06:33 +02:00
Julian Ospald e5918de7af
Update README 2021-09-04 15:59:14 +02:00
Julian Ospald d2346a543a
Fixup 2021-09-04 15:53:29 +02:00
Julian Ospald c057b4ae5c
Improve documentation about building 2021-09-04 15:14:32 +02:00
Julian Ospald b962bf4af9
Add missing qAddDependentFiles 2021-09-04 15:10:07 +02:00
Julian Ospald c54dc05d92
Read build.mk from files at build time 2021-09-04 15:09:14 +02:00
Julian Ospald 8c72bf697e
Move files into nicer subdirectories 2021-09-04 15:08:58 +02:00
Julian Ospald cc8cf3d12a
Improve --patchdir documentation wrt #226 2021-09-04 14:31:05 +02:00
Julian Ospald 9bdf6bde17
Only consider .diff/.patch for patch files wrt #226 2021-09-04 14:25:24 +02:00
Julian Ospald 8363495843
Update known users 2021-09-03 23:58:28 +02:00
Julian Ospald bc80b1048f
Fix debug logs 2021-09-03 21:00:39 +02:00
Julian Ospald d61981bc1b
Update doc on ghcupURL 2021-09-02 21:27:31 +02:00
Julian Ospald 4ccdc5dd6c
Update RELEASING.md 2021-09-02 21:23:37 +02:00
Julian Ospald 3240118226
Simplify CI section 2021-09-02 21:11:13 +02:00
Julian Ospald 254989d63d
Merge branch 'issue-221' 2021-09-02 16:22:38 +02:00
Julian Ospald 283f2a6e46
Add `ghcup whereis bindir` and friends, fixes #221 2021-09-02 15:37:03 +02:00
Julian Ospald 94637dfbab
Merge branch 'updates' 2021-09-01 01:00:20 +02:00
Julian Ospald 3e26d7057c
Update ghc file 2021-09-01 00:44:52 +02:00
Julian Ospald 3f710112f3
Rather do it in bootstrap-haskell 2021-08-31 23:23:59 +02:00
Julian Ospald 34df41b44a
Update debian image 2021-08-31 23:04:57 +02:00
Julian Ospald 3897434ef0
Create .bash_profile on windows if it doesn't exist 2021-08-31 22:59:32 +02:00
Julian Ospald 375dba9dd1
Improve hlint job 2021-08-31 22:59:32 +02:00
Julian Ospald 2edd1fb583
Merge branch 'fix-bootstrap-win' 2021-08-31 19:28:21 +02:00
Julian Ospald 11326060fb
Smaller fixes to windows bootstrap 2021-08-31 18:57:38 +02:00
Julian Ospald d343c01737
Add CI section 2021-08-31 02:17:38 +02:00
Julian Ospald 3925f78721
Merge branch 'drop-monad-logger' 2021-08-30 23:55:31 +02:00
Julian Ospald d98e54a743
Drop yaml/libyaml 2021-08-30 23:36:11 +02:00
Julian Ospald 13143b8e4d
Drop monad-logger 2021-08-30 23:36:11 +02:00
Julian Ospald 3a7895e5ea
Reorder 2021-08-30 13:59:30 +02:00
Julian Ospald 2893b2e2d2
Adjust argumentlist 2021-08-30 13:49:48 +02:00
Julian Ospald 987436fed2
Adjust switch order 2021-08-30 13:47:08 +02:00
Arjun Kathuria be82565775 factor out `checkIfCabalInstalled` to `checkIfToolInstalled` 2021-08-30 15:20:33 +05:30
Arjun Kathuria f8d0243146 refactor nested case statements when installing cabal 2021-08-30 15:18:43 +05:30
Julian Ospald 96ac66e909
Merge branch 'issue-222' 2021-08-30 11:42:28 +02:00
Julian Ospald e5947f3490
Add BOOTSTRAP_HASKELL_MINIMAL wrt #222 2021-08-30 11:19:43 +02:00
Julian Ospald b35fe15703
Merge branch 'remove-zipp' 2021-08-29 23:11:03 +02:00
Julian Ospald a269b60282
Remove extra 2021-08-29 22:37:16 +02:00
Julian Ospald fc6f7ffd73
Update stack.yaml 2021-08-29 21:21:03 +02:00
Julian Ospald 430dc2d20b
Remove zip dependency 2021-08-29 20:56:17 +02:00
Julian Ospald 77c464870f
Refreeze 2021-08-29 17:46:53 +02:00
Julian Ospald dda38ec52b
Merge remote-tracking branch 'origin/merge-requests/158' 2021-08-29 17:43:01 +02:00
Jan Hrček f6b6b36eb7 Apply hlint 3.3.2 suggestions 2021-08-29 17:08:06 +02:00
Jan Hrček 3986677b06 Fix typos and simplify code 2021-08-29 14:50:49 +02:00
Julian Ospald 1fb048777c
Merge branch 'cabal-plan' 2021-08-27 15:19:17 +02:00
Julian Ospald e9c335eecc
Add --cabal-plan 2021-08-27 14:59:09 +02:00
Julian Ospald a7c7186aa4
Add ghc-8.10.7 2021-08-27 12:41:01 +02:00
Arjun Kathuria d7f82d643c implements --force option for cabal installs. 2021-08-27 13:06:18 +05:30
Arjun Kathuria 15560a06b1 Adds the --force option in install commands 2021-08-27 13:05:54 +05:30
Julian Ospald e38bd61066
Fixup merge 2021-08-26 20:16:40 +02:00
Julian Ospald b086261c3c
Merge remote-tracking branch 'origin/merge-requests/149' 2021-08-26 20:12:19 +02:00
Julian Ospald 8c098d4e17
Add solus in getLinuxDistro 2021-08-26 20:09:48 +02:00
Julian Ospald e3a9c095c6
Merge branch 'remove-string-interpolate' 2021-08-25 21:17:19 +02:00
Julian Ospald 678bdd7915
Bump stack resolver 2021-08-25 19:02:17 +02:00
Julian Ospald 14fc6b7281
Remove string-interpolate wrt #212 2021-08-25 18:54:58 +02:00
Julian Ospald a2555cecc5
Merge branch 'solus' 2021-08-25 15:11:29 +02:00
Julian Ospald 9d6e469f79
Add solus support 2021-08-25 13:51:34 +02:00
Julian Ospald 982c0a0fcf
Merge branch 'fix-CII' 2021-08-25 12:16:18 +02:00
Julian Ospald f8cfcd4038
Get rid of tar 2021-08-25 11:48:30 +02:00
Julian Ospald 4d465efef1
Fix cabal-docspec in CI 2021-08-24 22:02:55 +02:00
Julian Ospald d667160027
Merge remote-tracking branch 'origin/pr/6' 2021-08-24 21:19:35 +02:00
Mario Lang df55d972cf brick-0.64 has been released 2021-08-24 21:16:41 +02:00
Arjun Kathuria df758d828b swap checkFileAlreadyExists with throwIfFileAlreadyExists 2021-08-24 20:39:07 +05:30
Julian Ospald 7bc00c4e68
Merge branch 'issue-211' 2021-08-24 16:14:24 +02:00
Julian Ospald bfc50e269c
Show a warning if xattr can't be executed 2021-08-24 15:34:35 +02:00
Julian Ospald cea71beb4d
Add docspec to gitlab CI 2021-08-24 10:54:25 +02:00
Julian Ospald 8247c0b00b
Add more doctests 2021-08-24 10:51:39 +02:00
Julian Ospald f624a83e87
Merge branch 'issue-213' 2021-08-24 10:51:10 +02:00
Julian Ospald 951e676bee
Fix header reading wrt #213 2021-08-23 23:16:32 +02:00
Julian Ospald 281f310394
Add some unit tests 2021-08-23 23:16:14 +02:00
Arjun Kathuria 8c486e8d46 Make GHCup isolate installs non-overwriting by default 2021-08-23 20:18:45 +05:30
Julian Ospald c029713f23
Merge branch '9.2.0.20210821' 2021-08-23 13:37:44 +02:00
Julian Ospald b86e2a1d5b
Add GHC-9.2.0.20210821 rc1 2021-08-23 13:16:18 +02:00
Julian Ospald 099a6b9dcd
Merge branch 'fixes' 2021-08-21 14:46:43 +02:00
Julian Ospald 3b13624117
Clean up CI 2021-08-21 14:34:47 +02:00
Julian Ospald fad1efcefa
Fix wrong libffi dependency version for Debian 11 (bullseye)
Fixes #209
2021-08-21 14:28:53 +02:00
Julian Ospald 1701b8a2f4
Fix bootstrap-haskell prompts when no shell is detected 2021-08-21 14:28:31 +02:00
Julian Ospald 608ee07940
Merge remote-tracking branch 'origin/merge-requests/146' 2021-08-21 09:28:56 +02:00
Arjun Kathuria a0c2a5ccec Adds isolated installs documentation in readme 2021-08-16 22:08:44 +05:30
Julian Ospald cd41d3af97
Merge branch 'fix-CI' 2021-08-16 14:18:58 +02:00
Julian Ospald b5aafdee61
Fix CI 2021-08-16 12:57:05 +02:00
Julian Ospald 9d9e4bb44e
Add GHC-8.10.6 2021-08-14 17:01:27 +02:00
Julian Ospald c708283547
Merge branch 'issue-208' 2021-08-14 15:13:47 +02:00
Julian Ospald a4ddf95c8d
Check for chocolatey during windows bootstrap
Fixes #208
2021-08-14 14:44:00 +02:00
Julian Ospald ddbb396bf3
Add discord logo
Hopefully this is all legal :o
2021-08-12 18:03:33 +02:00
Julian Ospald e2a7c320ac
Fix matrix link 2021-08-12 13:33:17 +02:00
Julian Ospald 06f998fa5e
Update README badges 2021-08-12 13:31:28 +02:00
Julian Ospald c48c73d34d
Merge remote-tracking branch 'origin/pr/5' 2021-08-12 13:13:31 +02:00
Julian Ospald cfb6ab31ab
Update website 2021-08-12 13:08:52 +02:00
The Gitter Badger eac15541e8 Add Gitter badge 2021-08-12 09:28:17 +00:00
Julian Ospald 984acebff8
Fix metadata files 2021-08-12 11:12:55 +02:00
Julian Ospald 4cf2d125dd
Update metadata to 0.1.16.2 2021-08-11 20:01:37 +02:00
Julian Ospald 6701093c3b
Bump version to 0.1.16.2 2021-08-11 16:30:01 +02:00
Julian Ospald e9fdc073c6
Fix --flavor 2021-08-11 16:19:52 +02:00
Julian Ospald 57c791106b
Fixup rest of the PR 2021-08-11 16:19:31 +02:00
Julian Ospald fcba151fad
Merge remote-tracking branch 'origin/merge-requests/134' 2021-08-11 14:20:04 +02:00
Julian Ospald 3b24f503d1
Fixup rest of the PR 2021-08-11 13:54:02 +02:00
Julian Ospald bd18fd9aa1
Merge remote-tracking branch 'origin/merge-requests/127' 2021-08-11 12:28:48 +02:00
Arjun Kathuria c2c5625685 implements checking if file already exists for Cabal installs 2021-08-11 10:33:08 +05:30
Arjun Kathuria ce6fb0bb1e Adds new Error type `FileAlreadyExistsError` 2021-08-11 10:28:30 +05:30
Arjun Kathuria dcfb3afdad Revert "implements isolated install sanity-checking for Cabal installs"
This reverts commit 300cfd3ba6.
2021-08-11 09:46:42 +05:30
Julian Ospald 50c91345e8
Merge branch 'windows-autoconf' 2021-08-10 17:08:43 +02:00
Julian Ospald af3ecae792
Install autoconf in msys2 wrt #200 2021-08-10 16:58:37 +02:00
Arjun Kathuria 300cfd3ba6 implements isolated install sanity-checking for Cabal installs 2021-08-10 20:14:46 +05:30
Arjun Kathuria bb430fa0b7 Adds the sanity check function for isolated installs 2021-08-10 20:12:14 +05:30
Arjun Kathuria 80fa7965a4 Adds new Error type `IsolatedDirNotEmpty` 2021-08-10 20:11:32 +05:30
Julian Ospald 9975a2d4ba
Merge branch 'fix-install' 2021-08-10 16:39:46 +02:00
Arjun Kathuria d1735bc446 adds toolchainSanityChecks for isolated installs too in `installGHCBindist` function. 2021-08-10 19:53:41 +05:30
Julian Ospald dbf1d6f420
Fix unneeded dist files being installed along with GHC 2021-08-10 15:58:40 +02:00
Julian Ospald 0a0fbd0cb6
Merge branch 'fix-metadata-download' 2021-08-07 19:26:26 +02:00
Julian Ospald f13f53b910
Merge branch 'throwM' 2021-08-07 19:20:00 +02:00
Julian Ospald 6dfc04a9f6
Fix metadata file read in --offline mode 2021-08-07 18:31:41 +02:00
Julian Ospald 72133d0002
Rather skip copying to cache dir if scheme is file:// 2021-08-07 10:24:08 +02:00
Julian Ospald 6e07e9e56b
Skip copying metadata if source and destination match 2021-08-07 09:55:45 +02:00
Julian Ospald e903aeb555
Skip cached metadata when url starts with file:// 2021-08-07 09:54:26 +02:00
Julian Ospald 2792f6f4b6
Fix error handling when we can't find a filename 2021-08-06 19:45:59 +02:00
Arjun Kathuria 80eb72ce49 Merge branch 'smash-1' of gitlab.haskell.org:arjun/ghcup-hs into smash-1 2021-08-04 16:09:48 +05:30
Arjun Kathuria 2c6d0382cf adds isolate install feature to compiled ghc command 2021-08-04 16:08:12 +05:30
Arjun Kathuria e1bec789b0 updates Bindist functions as per https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/127#note_366702 2021-08-03 18:08:54 +05:30
Arjun Kathuria 5683493cae rename some auxiliary functions to their "unpacked" versions 2021-08-03 18:08:54 +05:30
Arjun Kathuria ae5e213b59 deletes `installStackBinIsolated` function 2021-08-03 18:08:54 +05:30
Arjun Kathuria 911089f334 updates usages of new `installStackBin` across files 2021-08-03 18:08:54 +05:30
Arjun Kathuria 6b89646c1e update `installStackBindist` to take a "Maybe FilePath" argument for isolated installs 2021-08-03 18:08:54 +05:30
Arjun Kathuria 960d5ce79f deletes `installHLSBinIsolated` function 2021-08-03 18:08:54 +05:30
Arjun Kathuria 90ed0895d6 updates usages of `installHLSBin` across files 2021-08-03 18:08:54 +05:30
Arjun Kathuria 7471f4f4dc update `installHLSBindist` to take a "Maybe FilePath" argument for isolated installs 2021-08-03 18:08:54 +05:30
Arjun Kathuria 781cf8eed5 Delete installCabalBinIsolated function. 2021-08-03 18:08:54 +05:30
Arjun Kathuria 236da31af6 updates usages of new `installCabalBindist` across files. 2021-08-03 18:08:54 +05:30
Arjun Kathuria 1f760af880 update `installCabalBindist` to take a "Maybe FilePath" argument for isolated installs 2021-08-03 18:08:54 +05:30
Arjun Kathuria 62d03b776b remove installGHCBinIsolated function. 2021-08-03 18:08:54 +05:30
Arjun Kathuria 37ea18a0d8 updates usages of new installGHCBindist and related installGHCBin 2021-08-03 18:08:54 +05:30
Arjun Kathuria 083dc59a8f update `installGhcBindist` to take a "Maybe FilePath" to work with isolated installs 2021-08-03 18:08:54 +05:30
Arjun Kathuria a45d069cad Adds a log to notify where the isolated ghc is being installed by the tool 2021-08-03 18:08:54 +05:30
Arjun Kathuria fdbcd4fafd Adds isolated installs to Stack install 2021-08-03 18:08:54 +05:30
Arjun Kathuria f3c1c925ed updates installStack' usage in `installStackBindist` function 2021-08-03 18:08:54 +05:30
Arjun Kathuria 8f6a7ba39c factor out installStack' function 2021-08-03 18:08:54 +05:30
Arjun Kathuria f212eb4570 Adds isolated install to HLS installs 2021-08-03 18:08:54 +05:30
Arjun Kathuria 0d118e2fe1 update installHLS' usage in `installHLSBindist` 2021-08-03 18:08:54 +05:30
Arjun Kathuria c0f46ef81f Factor out installHLS' 2021-08-03 18:08:54 +05:30
Arjun Kathuria 476513b0a7 Adds isolate install functionality to 'Cabal' tool installs 2021-08-03 18:08:54 +05:30
Arjun Kathuria 9a511669a8 use the new factored out installCabal' in `installCabalBindist` function 2021-08-03 18:08:54 +05:30
Arjun Kathuria a16a25a3cd factor out installCabal' from `installCabalBindist`, to be shared with `installCabalBinIsolated` function 2021-08-03 18:08:54 +05:30
Arjun Kathuria 8666fcd120 adds rudimentary isolate capability to ghcup install ghc command 2021-08-03 18:08:54 +05:30
Arjun Kathuria 521ab0aedb adds basic --isolate option structure for install commands 2021-08-03 18:08:54 +05:30
vglfr 1cfff674b7
Implement config CLI MVP 2021-08-03 09:09:47 +03:00
Julian Ospald 88d1d19f55
Merge branch 'bump-bs-ver' 2021-07-31 16:38:12 +02:00
Julian Ospald 0fb1da5c3a
Bump ghc version in bootstrap-haskell 2021-07-31 16:23:01 +02:00
Julian Ospald b32f88e9a6
Merge branch 'update-hls-1.3.0' 2021-07-31 14:44:16 +02:00
Julian Ospald 9d2421fac5
Update to HLS 1.3.0 2021-07-31 13:30:29 +02:00
Julian Ospald 043e288fbf
Add tipps and tricks section 2021-07-30 20:06:19 +02:00
Julian Ospald 32e34876e2
Update 2021-07-29 22:45:48 +02:00
Julian Ospald f12a2b3821
Update README 2021-07-29 22:40:35 +02:00
Julian Ospald 844b4decab
Update FAQ 2021-07-29 22:35:52 +02:00
Julian Ospald 53ca60596d
Fix nuclear order 2021-07-29 11:51:47 +02:00
Julian Ospald 2d2894b0f4
Bump metadata 2021-07-29 10:50:07 +02:00
Julian Ospald 21d30cd8ce
Fix GHCup showing up twice in list 2021-07-28 22:48:28 +02:00
Julian Ospald b38a569124
Bump to 0.1.16.1 2021-07-28 22:36:59 +02:00
Julian Ospald 810607e84f
Update yamls 2021-07-28 22:31:56 +02:00
Julian Ospald 442ddfd4e4
Bump ghcup metadata, because new GHC versions may have different bin/ layout 2021-07-28 20:08:20 +02:00
Julian Ospald 096103e65a
Refreeze 2021-07-28 18:42:57 +02:00
Julian Ospald 60a56c337c
Merge branch 'travis' 2021-07-28 18:42:35 +02:00
Julian Ospald 11c1b2cc6c
Re-add travis 2021-07-28 18:02:34 +02:00
Julian Ospald 45db3bd913
Update README 2021-07-28 11:07:53 +02:00
Julian Ospald 6d76561340
Update CHANGELOG for 0.1.16 2021-07-27 23:34:32 +02:00
Julian Ospald 00caeba067
Merge branch 'fix-list-tools' 2021-07-27 23:16:18 +02:00
Julian Ospald 5a34191b88
Fix listTools to always show currently installed GHCup 2021-07-27 22:33:35 +02:00
Julian Ospald 85003900d7
Improve HLS post-install formatting 2021-07-27 20:58:39 +02:00
Julian Ospald 0c666a6bbe
Fix upgrade subcommand running appstate twice 2021-07-27 20:57:51 +02:00
Julian Ospald e4e52ebf6b
Bump to 0.1.16 2021-07-27 20:39:12 +02:00
Julian Ospald 4512468108
Also upload dist-newstyle/cache on failure 2021-07-27 10:39:55 +02:00
Julian Ospald d3e3ebd63f
Merge branch 'fix-ghcToolFiles' 2021-07-26 21:25:00 +02:00
Julian Ospald ce616d3eb3
Improve bootstrap-haskell.ps1 2021-07-26 18:14:07 +02:00
Julian Ospald 5837e04e6e
Cleanup 2021-07-26 18:13:57 +02:00
Julian Ospald 95ca79f3f8
Turn leftover files into logError 2021-07-26 18:13:41 +02:00
Julian Ospald 706fe1ffcc
Don't do update checks for all commands 2021-07-26 18:13:20 +02:00
Julian Ospald 2774f026e8
Merge branch 'issue-150' 2021-07-26 17:44:37 +02:00
Julian Ospald 07604a2eb5
Merge branch 'issue-193' 2021-07-26 17:39:13 +02:00
Arjun Kathuria 03d77f5006 updates Bindist functions as per https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/127#note_366702 2021-07-26 11:49:52 +05:30
Julian Ospald fdf45e0fe6
Do etags hashing wrt #193 2021-07-25 23:15:59 +02:00
Julian Ospald 1dc9ad7a57
Merge branch 'www-false' 2021-07-25 19:56:56 +02:00
Julian Ospald cc51d7b454
Merge branch 'add-binutils-gold-for-alpine-pkgs' 2021-07-25 19:56:24 +02:00
Julian Ospald c439693a8f
Fix "display all supported installers" page 2021-07-25 19:10:02 +02:00
Julian Ospald af8c097092
Add binutils gold for alpine pkgs 2021-07-25 19:06:22 +02:00
Arjun Kathuria 71e6dbfdca rename some auxiliary functions to their "unpacked" versions 2021-07-25 22:34:53 +05:30
Arjun Kathuria 692cd1616b deletes `installStackBinIsolated` function 2021-07-25 22:25:25 +05:30
Arjun Kathuria 4e3dbea5d0 updates usages of new `installStackBin` across files 2021-07-25 22:24:38 +05:30
Arjun Kathuria fd2add78bd update `installStackBindist` to take a "Maybe FilePath" argument for isolated installs 2021-07-25 22:23:58 +05:30
Arjun Kathuria e9da8ab439 deletes `installHLSBinIsolated` function 2021-07-25 22:10:43 +05:30
Arjun Kathuria 9c22ba9d45 updates usages of `installHLSBin` across files 2021-07-25 22:10:10 +05:30
Arjun Kathuria e5d3080b54 update `installHLSBindist` to take a "Maybe FilePath" argument for isolated installs 2021-07-25 22:09:54 +05:30
Arjun Kathuria 5995a8b592 Delete installCabalBinIsolated function. 2021-07-25 22:09:54 +05:30
Arjun Kathuria bc6d006c57 updates usages of new `installCabalBindist` across files. 2021-07-25 22:09:54 +05:30
Arjun Kathuria b148d8e2e7 update `installCabalBindist` to take a "Maybe FilePath" argument for isolated installs 2021-07-25 21:20:42 +05:30
Arjun Kathuria 4f7d41a8cc remove installGHCBinIsolated function. 2021-07-25 13:39:44 +05:30
Arjun Kathuria 5efe2e5f7a updates usages of new installGHCBindist and related installGHCBin 2021-07-25 13:38:32 +05:30
Arjun Kathuria 338f5f309d update `installGhcBindist` to take a "Maybe FilePath" to work with isolated installs 2021-07-25 13:35:41 +05:30
Julian Ospald 9639e695e2
Unhide stack 2021-07-23 16:13:07 +02:00
Julian Ospald d2a2bde321
Merge branch 'mlang-cursor' 2021-07-23 14:46:06 +02:00
Julian Ospald c85ff686b6
Fix cabal.project 2021-07-23 14:45:50 +02:00
Julian Ospald 48d3b3bc3e
Merge branch 'cursor' of https://github.com/mlang/ghcup-hs into mlang-cursor 2021-07-23 14:38:49 +02:00
Julian Ospald 94bd01aaca
Merge branch 'issue-165' 2021-07-23 14:35:07 +02:00
Arjun Kathuria ba51cbad6f Adds a log to notify where the isolated ghc is being installed by the tool 2021-07-23 16:51:50 +05:30
Arjun Kathuria 511272e86d Adds isolated installs to Stack install 2021-07-23 16:46:11 +05:30
Arjun Kathuria 873f75da9f updates installStack' usage in `installStackBindist` function 2021-07-23 16:44:40 +05:30
Arjun Kathuria 42d4a66493 factor out installStack' function 2021-07-23 16:43:43 +05:30
Arjun Kathuria 9a79af6fd2 Adds isolated install to HLS installs 2021-07-23 16:25:01 +05:30
Arjun Kathuria 63f10a1871 update installHLS' usage in `installHLSBindist` 2021-07-23 16:23:52 +05:30
Arjun Kathuria 9686ee9826 Factor out installHLS' 2021-07-23 16:23:03 +05:30
Arjun Kathuria 4729364e99 Adds isolate install functionality to 'Cabal' tool installs 2021-07-23 15:57:42 +05:30
Arjun Kathuria 91d982c7b2 use the new factored out installCabal' in `installCabalBindist` function 2021-07-23 15:56:03 +05:30
Arjun Kathuria 8b7c22440e factor out installCabal' from `installCabalBindist`, to be shared with `installCabalBinIsolated` function 2021-07-23 15:52:28 +05:30
Mario Lang 761b8cc750 Place an (invisible) cursor at the beginning of the active list item
This change is to support screen readers which use the cursor location
to indicate the focus to the user.

Brick.putCursor is unreleased, so grab the latest version from git via extra-deps.
2021-07-23 11:53:28 +02:00
Julian Ospald 3bdc82c99b
Redo file handling wrt #165 and #187 2021-07-22 17:44:03 +02:00
Arjun Kathuria 9b3d55a095 adds rudimentary isolate capability to ghcup install ghc command 2021-07-22 19:32:56 +05:30
Julian Ospald db4e9fa432
Merge branch 'issue-192' 2021-07-22 11:39:31 +02:00
Julian Ospald 530c25c6a1
Fix bootstrap haskell bashrc stuff 2021-07-22 11:21:45 +02:00
Julian Ospald 1c2cf98850
Fix file/dir removal on windows, fixes #165 2021-07-21 20:50:58 +02:00
Julian Ospald b35dbca22e
Merge branch 'issue-183' 2021-07-20 23:54:37 +02:00
Julian Ospald a4a7f73fb7
Allow to use Hadrian as build system, fixes #35 2021-07-20 23:51:31 +02:00
Julian Ospald fd0ea3d858
Merge branch 'stack-2.7.3' 2021-07-20 23:11:21 +02:00
Julian Ospald bbbe52f453
Bump stack to 2.7.3 2021-07-20 22:30:50 +02:00
Arjun Kathuria e2daf5381c adds basic --isolate option structure for install commands 2021-07-20 22:05:01 +05:30
Julian Ospald 9e181b8820
Allow passing "flavor" to 'ghcup compile ghc'
Fixes #183
2021-07-20 13:39:39 +02:00
Julian Ospald a6108f8319
Fix listVersion wrt #183 2021-07-20 11:54:14 +02:00
Julian Ospald 7a2570019a
Return the version during 'ghcup compile ghc -g <commit>'
Fixes #181
2021-07-20 11:42:36 +02:00
Julian Ospald c5b4e82b48
Merge branch 'issue-187' 2021-07-20 00:57:08 +02:00
Julian Ospald 4ed72fb517
Preserve mtimes on unpacked GHC tarballs on windows wrt #187 2021-07-19 23:33:01 +02:00
Julian Ospald 5217aa0a1d
Merge branch 'issue-180' 2021-07-19 20:55:17 +02:00
Julian Ospald 3caf91c640
Fix ensureGlobalTools 2021-07-19 19:08:43 +02:00
Julian Ospald eb26a5133f
Merge branch 'www-fix-true' 2021-07-19 17:01:03 +02:00
Julian Ospald 9e9402a3a2
Fix www 2021-07-19 16:58:42 +02:00
Julian Ospald bc13a4555d
Fix runLeanWhereIs on windows 2021-07-19 16:56:28 +02:00
Julian Ospald eaad2caf25
Add prefetch command 2021-07-19 16:51:40 +02:00
Julian Ospald 6143cdf2e0
Add --offline switch wrt #186 2021-07-19 13:49:24 +02:00
Julian Ospald 2c7176d998
Use LabelOptic and add LeanAppState
Wrt #186
2021-07-18 14:39:49 +02:00
Julian Ospald 327b80cf56
Add cross compilation to CI test 2021-07-15 23:26:48 +02:00
Julian Ospald 005c9fbb83
Modernize CI scripts 2021-07-15 22:44:54 +02:00
Julian Ospald 42134fd2a5
Fix whereIsTool for cross 2021-07-15 22:38:42 +02:00
Julian Ospald bc85a7d9c3
Fix cross installation
See https://gitlab.haskell.org/ghc/ghc/-/issues/14297
2021-07-15 20:32:09 +02:00
Julian Ospald 7e14fd4a08
Only run unsafeInterleaveIO when necessary 2021-07-15 20:30:14 +02:00
Julian Ospald bf74d1e828
Merge branch 'issue-179' 2021-07-15 20:01:25 +02:00
Julian Ospald f04708e8ae
Speed up 'whereis' subcommand wrt #179 2021-07-15 20:01:00 +02:00
Julian Ospald 80e1924e5f
Merge branch 'scoop' 2021-07-13 20:27:15 +02:00
Julian Ospald c7393bd7c5
Fork shimgen into main repo, fixes #161 2021-07-13 20:25:29 +02:00
Julian Ospald 664713bb13
Fix darwin:aarch64 release 2021-07-13 19:41:12 +02:00
Julian Ospald 01715fdefc
Merge branch 'github-actions' 2021-07-13 17:26:03 +02:00
Julian Ospald ab9b24e109
Switch to github actions wrt #178 and #159 2021-07-13 17:25:42 +02:00
Julian Ospald 34ecb1a56e
Add build-tool-depends: hspec-discover:hspec-discover 2021-07-13 17:25:13 +02:00
Julian Ospald e3aef38f75
Merge branch 'update-stack-yaml' 2021-07-13 15:51:54 +02:00
Julian Ospald ead2b76050
Switch to github actions wrt #178 and #159 2021-07-13 15:42:20 +02:00
Julian Ospald 2f35513f6e
Update stack.yaml 2021-07-13 15:26:43 +02:00
Julian Ospald 8573c99088
Update freeze stuff 2021-07-13 15:18:34 +02:00
Julian Ospald dfe63332b2
Improve messages in bootstrap-haskell.ps1 2021-07-13 14:50:22 +02:00
Julian Ospald 767ae48c7b
Merge branch 'fix-install-stack' 2021-07-12 23:17:32 +02:00
Julian Ospald f4160464c0
Merge branch 'www-update-win' 2021-07-12 23:15:46 +02:00
Julian Ospald a572b1d5f0
Merge branch 'issue-177' 2021-07-12 23:15:06 +02:00
Julian Ospald 82587d26b5
Interactive should be the default! 2021-07-12 22:21:55 +02:00
Julian Ospald ec98826e6d
Fix installStackBindist 2021-07-12 22:15:45 +02:00
Julian Ospald b4fcd05e8f
Ask all questions at the beginning wrt #177 2021-07-12 22:14:56 +02:00
Julian Ospald 1345ec938b
Merge branch 'issue-173' 2021-07-12 17:09:46 +02:00
Julian Ospald 227f3acaa5
Implement 'whereis' subcommand, fixes #173 2021-07-12 17:09:18 +02:00
Julian Ospald c20636f597
Fix adjust_bashrc on windows 2021-07-11 23:29:03 +02:00
Julian Ospald c2d437150a
Merge branch 'issue-118' 2021-07-11 22:22:03 +02:00
Julian Ospald 9ff1467612
Add user choice for prepend/append of PATH
Fixes #118
2021-07-11 22:08:19 +02:00
Julian Ospald 9218efd71a
Update linux aarch64 and armv7 ghcup binaries, fixing #160 2021-07-11 19:35:46 +02:00
Julian Ospald bcd244a92a
Merge branch 'improve-logging' 2021-07-11 17:41:32 +02:00
Julian Ospald 7de552ed82
Merge branch 'issue-160-CI' 2021-07-11 16:12:01 +02:00
Julian Ospald 5cf297a4d2
Clarify stack postinstall message wrt #153 2021-07-11 15:09:16 +02:00
Julian Ospald d86f84eef4
Improve logging with newlines 2021-07-11 14:34:05 +02:00
Julian Ospald 83458c6c1e
Merge branch 'issue-163' 2021-07-11 13:51:27 +02:00
Julian Ospald b862ca52a9
Update arm/aarch CI 2021-07-11 13:43:53 +02:00
Julian Ospald 928f4a97de
Fix ghcToolFiles for upcoming GHC build system changes
Also see: https://gitlab.haskell.org/ghc/ghc/-/issues/20074#note_363720
2021-07-10 21:43:37 +02:00
Julian Ospald e8d79c9d38
Warn when powershell script is run as admin
Fixes #163
2021-07-09 22:29:10 +02:00
Julian Ospald 59e1eee8ce
Update linux aarch64 ghcup binary
Partly addresses #160
2021-07-09 22:06:37 +02:00
Julian Ospald 57c8ffda35
Update hacking docs 2021-07-09 19:51:21 +02:00
Julian Ospald abbe51614d
Improve uninstallation on windows wrt #150 2021-07-07 23:19:50 +02:00
Julian Ospald 171ebd213d
Merge branch 'issue-175' 2021-07-07 20:47:44 +02:00
Julian Ospald 2a240cbd09
Make sure HLS and stack installation failures don't exit the entire script
Fixes #175
2021-07-07 20:08:12 +02:00
Julian Ospald 068fa3454c
Update website 2021-07-04 22:15:56 +02:00
Julian Ospald 6b2bcbf2ce
Merge branch 'issue-151' 2021-07-04 20:27:45 +02:00
Julian Ospald 19e46dac18
Avoid too many questions 2021-07-04 19:45:43 +02:00
Julian Ospald e96c863120
Speed up installation wrt #151 2021-07-03 21:16:46 +02:00
Julian Ospald a30b3c84d7
Loosen bound on versions wrt #164 2021-07-03 17:48:39 +02:00
Julian Ospald 0ad5dc4583
Fix CI 2021-07-03 16:51:58 +02:00
Julian Ospald 7189998f3b
Cleanup rmGhcupDirs a bit 2021-07-03 11:25:49 +02:00
Julian Ospald b6b24b8e0b
Update CHANGELOG 2021-07-03 11:15:45 +02:00
Julian Ospald 8e820c6e89
Clean up and fix nuke command 2021-07-03 11:15:37 +02:00
Julian Ospald c74784a37c
Merge remote-tracking branch 'origin/merge-requests/101' 2021-07-03 11:15:09 +02:00
Julian Ospald 3d940cffcf
Merge remote-tracking branch 'origin/merge-requests/102' 2021-07-02 14:37:19 +02:00
Julian Ospald 0df044b284
Merge remote-tracking branch 'origin/merge-requests/103' 2021-07-02 14:02:43 +02:00
Julian Ospald f576b9fb20
Merge remote-tracking branch 'origin/merge-requests/104' 2021-07-02 14:01:58 +02:00
Julian Ospald 5e00264119
Update hashes 2021-07-02 13:56:03 +02:00
Tom Ellis 05eeba32fa Make it clear that Windows is supported 2021-07-01 13:43:24 +00:00
Arjun Kathuria 61019ecd49 Adds reporting remaining leftover files sorted by Depth. 2021-06-29 14:31:13 +05:30
Arjun Kathuria bed06d1334 make reported leftover file paths absolute 2021-06-29 08:56:57 +05:30
Arjun Kathuria f09f4bd1b7 Update the running of "Nuke" command in Main.hs 2021-06-29 08:47:44 +05:30
Arjun Kathuria a3b11f21bb change logWarn to logDebug in "rmghcup / handlePathNotPresent" function 2021-06-28 19:35:48 +05:30
Arjun Kathuria 69a461d9c3 Fix a couple of typos in Main.hs 2021-06-28 19:32:09 +05:30
Arjun Kathuria 1dfe5cfecf updates path equating (which may fail) in "rmGhcup" function. 2021-06-28 13:56:20 +05:30
Arjun Kathuria 8e4550657e couple of windows indentation fixes in source files 2021-06-27 00:25:55 +05:30
Arjun Kathuria aee7fa52c3 warn user if current running ghcup exec is in non-standard location 2021-06-26 23:58:38 +05:30
Arjun Kathuria d166cc84a1 change type of rmGhcup fn from "Excepts '[NotInstalled] m ()" to m () 2021-06-26 23:26:31 +05:30
Arjun Kathuria bb7229d224 Adds descriptive comments in rmGhcupDir explaing silent deletions and
leftover reporting.
2021-06-26 22:09:32 +05:30
Arjun Kathuria 708cd5ead9 Fix a minor typo in some conditional windows code. 2021-06-26 21:59:15 +05:30
Arjun Kathuria f7986cb4da integrate new rmGhcupDirs fn into Main.hs 2021-06-26 21:56:52 +05:30
Arjun Kathuria 395aeb415d change return type of rmGhcupDirs to m [Filepath] from m () 2021-06-26 21:56:07 +05:30
Arjun Kathuria 830fb70492 adds returning left-over files back to Main.hs from rmGhcupDirs 2021-06-26 21:54:42 +05:30
Arjun Kathuria 6379a26afb factor out `getDirectoryContentsRecursive` function in GHCup.Utils.Prelude 2021-06-26 21:53:14 +05:30
Arjun Kathuria 2277013c76 hide unsupportedOperation error in windows ghcup bin removal in case
of different drives.
2021-06-26 20:05:21 +05:30
Arjun Kathuria 8934e0e6bd Merge branch 'feat-nuke' of gitlab.haskell.org:arjun/ghcup-hs into feat-nuke 2021-06-26 20:00:37 +05:30
Arjun Kathuria 59519febbc handle symlink case when deleting directories in rmGhcupDirs 2021-06-26 19:52:32 +05:30
Arjun Kathuria 46fcdd356c Use rmFile instead of removeFile. 2021-06-26 19:32:53 +05:30
Tom Ellis 9f343c45e8 Fix typo 2021-06-25 20:06:18 +00:00
Arjun Kathuria 931904f388 fix minor typo in conditional windows code 2021-06-25 17:00:39 +05:30
Arjun Kathuria a40d0cbb5c swap out system.Directory.rename for Win32.File.moveFileEx for windows 2021-06-25 16:09:26 +05:30
Arjun Kathuria 9f5df9db10 Adds conditional windows ghcup bin removal code. Todo: test it, add
more exception handling if required.
2021-06-25 15:06:02 +05:30
Arjun Kathuria d26ddf7015 adds rudimentary ghcup bin removal code. TODO: handle windows. 2021-06-25 13:54:38 +05:30
Arjun Kathuria 9515065407 adds conditional export of useXDG in non-windows OS-es. fix in rmGhcupDirs code that used useXDG 2021-06-24 22:48:38 +05:30
Arjun Kathuria 82a8c61cf6 adds bin dir removal code, checking for XDG 2021-06-24 10:54:38 +05:30
Arjun Kathuria 3fae516ce4 Adds using 'rmFile' fn in rmGhcupDirs, it has better windows handling logic 2021-06-24 10:08:21 +05:30
Arjun Kathuria 33eaa765d7 adds better error handling when removing files and dirs in rmGhcupDirs function 2021-06-23 23:23:54 +05:30
Arjun Kathuria 3b3dde8413 updates deleting dirs in rmGhcupDirs according to feedback on merge request 2021-06-23 10:36:17 +05:30
Arjun Kathuria 118a2744fe adds new getGhcupConfFilePath fn to GHCup.hs, also refactors to use for error handling in missing file cases 2021-06-23 10:10:28 +05:30
Arjun Kathuria 2e3dceecf8 abstracts out getting ghcup conf file path 2021-06-23 10:08:06 +05:30
Arjun Kathuria 07fb04bb74 Adds the new rmGhcupDirs function in Main.hs under Nuke command 2021-06-22 23:15:13 +05:30
Arjun Kathuria 8a1dbe9dbb basic implementation of rmGhcupDirs function that removes relevant dirs in NUKE command 2021-06-22 23:14:25 +05:30
Arjun Kathuria 4ef3622616 Adds argument de-structuring to 'rmTool' function & remove the one in its body 2021-06-22 20:09:35 +05:30
Arjun Kathuria 82a704ab44 Adds 10s Thread-Delay and relevant Logger messages to Main.hs 2021-06-22 18:53:18 +05:30
Arjun Kathuria 0cb22945fe Adds some logger messages. 2021-06-22 18:52:24 +05:30
Arjun Kathuria d09adf9159 Updates Main.hs to work with new rmTool. 2021-06-22 18:51:03 +05:30
Arjun Kathuria 0b959c56fb change rmTool type to ` Excepts '[NotInstalled ] m () ` 2021-06-22 18:44:30 +05:30
Arjun Kathuria ec29332657 Adds basic implementation of rmTool function 2021-06-22 14:29:26 +05:30
Arjun Kathuria 0f6381e67b Move Nuke Command a little down in the file 2021-06-18 15:09:01 +05:30
Arjun Kathuria 877b55e21d Adds basic "nuke" command structure so that it reflects in ghcup cli 2021-06-18 15:01:32 +05:30
Colin Barrett fa11ca665f Use GetFolderPath to get the Desktop location
On my system, for example, Desktop is backed up with OneDrive
2021-06-15 22:25:24 -04:00
Julian Ospald d9d196439f
Add windows HLS 1.2.0 2021-06-15 11:57:52 +02:00
Julian Ospald a34fc4ad4f
Update HLS to 1.2.0 2021-06-14 00:35:21 +02:00
Julian Ospald b4d52b88c1
Merge branch 'fix-ci' 2021-06-14 00:24:12 +02:00
Julian Ospald 3fc3d27361
Update metadata for 0.1.15.2 2021-06-14 00:21:13 +02:00
Julian Ospald 56b86add38
Fix CI 2021-06-13 22:52:26 +02:00
Julian Ospald a608a105e3
Release 0.1.15.2 2021-06-13 22:07:33 +02:00
Julian Ospald 2e3e413f6c
Merge branch 'update-lol' 2021-06-13 21:29:22 +02:00
Julian Ospald dfb6c09133
Enable libarchive wrt #147 2021-06-13 21:29:00 +02:00
Julian Ospald 9636276c17
Fix nancy 2021-06-13 19:29:25 +02:00
Julian Ospald 41783ff027
Fix ghcup upgrade if binary is in non-standard location 2021-06-13 15:08:31 +02:00
Julian Ospald 08b0ecd057
Allow to skip update checks 2021-06-13 15:05:39 +02:00
Julian Ospald 7e31798446
Fix ghcup_version.sh 2021-06-13 14:43:00 +02:00
Julian Ospald 534afa6e8d
Update windows CI 2021-06-13 14:15:48 +02:00
Julian Ospald b56c44a210
Ensure directories 2021-06-13 13:41:06 +02:00
Julian Ospald ef0c94fddd
Fix windows upgrade for good 2021-06-13 10:15:34 +02:00
Julian Ospald f14c281841
Fix for real 2021-06-13 08:36:20 +02:00
Julian Ospald b40cefee35
Fix 'ghcup upgrade' on windows 2021-06-13 07:51:54 +02:00
Julian Ospald ff32ccfb50
Add warning about XDG dirs 2021-06-12 22:35:03 +02:00
Julian Ospald 581108ab65
Fix compliation from git 2021-06-12 22:27:56 +02:00
Julian Ospald 54e8e3efb0
Gracefully handle stack binary not installed by ghcup 2021-06-12 22:27:31 +02:00
Julian Ospald 4dcc63606e
Remove legacy handling of cabal binary 2021-06-12 22:26:50 +02:00
Julian Ospald a396b6044d
Allow more failures 2021-06-12 16:08:30 +02:00
Julian Ospald 94e5d2e19f
Don't error on stack/hls failed install 2021-06-12 16:05:35 +02:00
Julian Ospald a0976eee70
Mark stack 2.5.1 as old 2021-06-12 16:02:37 +02:00
Julian Ospald 61494d8c4b
Improve stack post install message 2021-06-12 16:01:15 +02:00
Julian Ospald 2b34c2dd69
Fix copy button under windows 2021-06-12 12:18:13 +02:00
Julian Ospald afc30b87dd
Merge remote-tracking branch 'origin/merge-requests/97' 2021-06-12 02:42:06 +02:00
amesgen ed0a63eb0c
fix ghcup-0.0.4.yaml
Windows is an unknown platform in < 0.1.15
2021-06-12 02:11:20 +02:00
Julian Ospald 9ba590dd90
Update www 2021-06-12 01:23:49 +02:00
Julian Ospald d4bffd2c4a
Merge branch 'prepare-0.1.15.1' 2021-06-12 00:20:03 +02:00
Julian Ospald 650f0a3e4e
Fix up 0.1.15.1 2021-06-11 23:57:16 +02:00
Julian Ospald fd6ccf8f0a
Add FreeBSD to 0.1.14.1 2021-06-11 22:51:40 +02:00
Julian Ospald d9fe4b8723
Use homebrew llvm 2021-06-11 22:17:18 +02:00
Julian Ospald da2e7e0411
Fix aarch64 darwin thanks to bgamari 2021-06-11 22:17:02 +02:00
Julian Ospald 79d6a50e44
Drop some mingw64 packages we don't need 2021-06-11 22:12:23 +02:00
Julian Ospald a13a5e5d20
Update darwin aarch64 install deps 2021-06-11 20:29:24 +02:00
Julian Ospald 82743dda2b
Merge remote-tracking branch 'origin/merge-requests/96' 2021-06-11 20:27:47 +02:00
jneira 6f80dd1fcc Registry api win7 compat 2021-06-11 14:36:52 +02:00
Julian Ospald 1325dce493
Update darwin aarch64 install deps 2021-06-11 11:52:20 +02:00
Julian Ospald ac21c19b7e
Remove unnecessary micro version stripping
Since we can specify version bounds now, this is unnecessary.
2021-06-11 11:26:44 +02:00
Julian Ospald 2b4088d068
Add FreeBSD 8.10.5 tarballs 2021-06-10 18:24:42 +02:00
Julian Ospald d86dc9b1d7
Fix release script 2021-06-10 15:39:50 +02:00
Julian Ospald 9982311c87
Update lzma-static 2021-06-10 15:10:53 +02:00
Julian Ospald 40c88d0b66
Add Darwin Big Sur AARCH64 binaries 2021-06-10 15:07:25 +02:00
Julian Ospald e0ee1c2f94
Bump to 0.1.15.1 2021-06-10 14:00:26 +02:00
Julian Ospald b4fa2780eb
Cleanup 2021-06-10 13:57:59 +02:00
Julian Ospald df86183e97
Merge branch 'update-CI' 2021-06-10 13:57:36 +02:00
Julian Ospald f7868dc646
Update install_deps 2021-06-10 13:57:02 +02:00
Julian Ospald e742be7693
Allow to specify cabal directory 2021-06-10 10:58:24 +02:00
Julian Ospald 924bc8698d
Make Silent a switch 2021-06-10 10:58:07 +02:00
Julian Ospald 5214c35b20
Fix CI 2021-06-09 21:30:26 +02:00
Julian Ospald 700e04535a
Enable Mac AARCH64 2021-06-09 19:03:48 +02:00
Julian Ospald fedc0bbef6
Debug 2021-06-09 18:38:24 +02:00
Julian Ospald 468fc5ade9
Use absolute ghcup binary path 2021-06-09 15:02:11 +02:00
Julian Ospald 2c077db36b
Improve portability 2021-06-09 14:43:48 +02:00
Julian Ospald f80638bba4
Improve error handling 2021-06-09 14:43:36 +02:00
Julian Ospald 860aa0dafd
Improvements to bootstrap scripts 2021-06-08 23:46:20 +02:00
Julian Ospald 27510b3b51
Allow setting GHCUP_INSTALL_BASE_PREFIX on windows 2021-06-08 18:08:06 +02:00
Julian Ospald 96bcbbeeec
Update CI 2021-06-07 20:40:59 +02:00
Julian Ospald 8a632eb3b4
Merge branch 'windows-bootstrap-fixes' 2021-06-07 20:29:39 +02:00
Julian Ospald aa992c0e5d
PrettyShow 2021-06-07 20:09:18 +02:00
Julian Ospald 810870e3a5
Fix Validate 2021-06-07 20:04:55 +02:00
Julian Ospald d584e7b21b
Update shimgen URL 2021-06-07 20:04:45 +02:00
Julian Ospald e93ac62c81
Add alpine 32 bit GHC-8.10.5 2021-06-07 20:04:27 +02:00
Julian Ospald 0d7d6c8382
Fix CI 2021-06-07 19:35:06 +02:00
Julian Ospald 5cd9ce8835
Fix build with zip 2021-06-07 19:33:12 +02:00
Julian Ospald 443522d526
Improve windows bootstrapping and make msys2 configurable 2021-06-07 19:33:12 +02:00
Julian Ospald 9061e60518
Allow to run powershell script straight 2021-06-07 14:48:06 +02:00
Julian Ospald d65ab434b2
Fix windows link 2021-06-06 15:33:57 +02:00
Julian Ospald cff592db82
Update bootstrap-haskell 2021-06-06 15:32:38 +02:00
Julian Ospald 97029e8102
Merge remote-tracking branch 'origin/merge-requests/92' 2021-06-06 12:10:35 +02:00
Fendor 828fd9eb10 Mention HLS in Help Message 2021-06-06 11:59:51 +02:00
Julian Ospald 03800d3b74
Hardcode C:\ in windows bootstrap script 2021-06-06 11:59:05 +02:00
Julian Ospald a47304e599
Add ghcup-0.0.5.yaml to cabal extra docs 2021-06-06 11:58:51 +02:00
Julian Ospald 7b050e9fe2
Fix ghcup-gen validation for global tools 2021-06-06 11:57:37 +02:00
Julian Ospald 687a1d0c88
Merge branch 'fix-freebsd-build' 2021-06-06 11:28:36 +02:00
Julian Ospald e09e3c264d
Fix build on FreeBSD
Related: https://gitlab.haskell.org/ghc/ghc/-/issues/19948
2021-06-06 11:08:40 +02:00
Julian Ospald b56431b4e3
Update ghcup-0.0.x.yaml 2021-06-06 08:55:41 +02:00
Julian Ospald 70ad50010d
Merge remote-tracking branch 'origin/merge-requests/90' 2021-06-06 08:12:24 +02:00
amesgen ca3a249bea
make ghcup-0.0.4.yaml compatible with ghcup-0.1.14.1 2021-06-06 04:30:23 +02:00
amesgen 4337cdc38d
add GHC 8.10.5 2021-06-06 04:18:03 +02:00
Julian Ospald 9f92e0bc86
Fix #136 2021-06-05 22:26:35 +02:00
Julian Ospald 98751cf8fb
Merge branch 'windows-support' 2021-06-05 22:25:16 +02:00
Julian Ospald 2f62067d96
Windows support 2021-06-05 21:01:01 +02:00
Julian Ospald 2cb1554244
Fix stray br 2021-06-02 23:25:44 +02:00
Julian Ospald 6f3c143228
Update www to indicate WSL2 is needed 2021-06-02 23:17:08 +02:00
Julian Ospald 9793fc6888
Update stack things 2021-05-30 15:17:04 +02:00
Julian Ospald 043cab08ae
Update www 2021-05-20 19:21:57 +02:00
Julian Ospald b7c83780da
Update remaining links 2021-05-19 19:22:51 +02:00
Julian Ospald cff11135ff
Update IRC link 2021-05-19 19:19:12 +02:00
Julian Ospald b94a4123eb
Update README 2021-05-15 22:17:51 +02:00
Julian Ospald 8ef1c8b5d4
Merge branch 'stack-support' 2021-05-15 22:13:39 +02:00
Julian Ospald 132d331e7c
Fix CI 2021-05-15 14:01:00 +02:00
Julian Ospald 734916728c
Add stack support 2021-05-15 14:01:00 +02:00
Julian Ospald 5f6ed1292d
Remove dead dependency on ascii-string
This hopefull fixes nix packaging.
2021-05-12 13:42:27 +02:00
Julian Ospald a7dc03af50
Merge branch 'PR/issue-126' 2021-05-11 14:42:22 +02:00
Julian Ospald 5a86a28d67
Smarter logging 2021-04-29 14:47:30 +02:00
Julian Ospald a905c6322c
Fix spelling 2021-04-29 14:47:22 +02:00
Julian Ospald 49ccadd470
Warn when overwriting current GHC due to compile 2021-04-29 14:46:45 +02:00
Julian Ospald 9f0ac0ee19
Allow to compile from git repo 2021-04-28 21:17:57 +02:00
Julian Ospald 7e0f839ff8
Fix cabal bindist on 32bit
See https://github.com/haskell/cabal/issues/7313
2021-04-25 22:44:41 +02:00
Julian Ospald 1e9ee260e7
Raise minSpace to 5GB 2021-04-25 21:32:58 +02:00
Julian Ospald 0b7d447aaf
Satisfy hlint 2021-04-25 18:00:32 +02:00
Julian Ospald 16a9336d31
Fix missing pretty instance 2021-04-25 17:59:15 +02:00
Julian Ospald 7d13836fea
Warn when /tmp doesn't have 2500 or more of disk space 2021-04-25 17:25:40 +02:00
Julian Ospald b645c4d57e
Add date to GHC bindist names created by ghcup 2021-04-24 21:51:43 +02:00
Julian Ospald 5db43cd908
Improve error printing in ghcup-gen 2021-04-24 21:51:06 +02:00
Julian Ospald 93cd421ca3
Add 9.1.1 alpha2 2021-04-23 09:43:45 +02:00
Julian Ospald ec7130dac6
Add post-install msg to ghc-7.10.3 wrt no-pie, fixes #123 2021-04-17 19:53:18 +02:00
Julian Ospald f2b8cc530c
Fix download URL 2021-04-13 23:58:49 +02:00
Julian Ospald de765088d1
Merge remote-tracking branch 'origin/merge-requests/83' 2021-04-13 23:47:16 +02:00
jneira e11188aa99 Update haskell-language-server to 1.1.0 2021-04-13 23:38:27 +02:00
Julian Ospald 0c6699c3c6
Allow to check ghcup binaries in validate-tarballs 2021-04-11 22:15:43 +02:00
Julian Ospald c5858be6b8
Update ghcup binaries 2021-04-11 22:10:44 +02:00
Julian Ospald ffe00c7b1f
Fix travis 2021-04-11 19:16:45 +02:00
Julian Ospald 43114959fd
Fix release job 2021-04-11 19:12:55 +02:00
Julian Ospald b1c3ffd729
Update ghcup.cabal 2021-04-11 18:14:52 +02:00
Julian Ospald 4f1a9e95a2
Add stuff to extra-doc-files 2021-04-11 18:08:31 +02:00
Julian Ospald f6a4f55384
Release 0.1.14.1 2021-04-11 18:01:31 +02:00
Julian Ospald 672b179446
Merge branch 'lzma-static' 2021-04-11 17:58:03 +02:00
Julian Ospald 3111387e5a
Bump lzma-static 2021-04-11 16:31:44 +02:00
Julian Ospald f8fda269f1
Install lbzip2 on fedora image 2021-04-11 16:24:13 +02:00
Julian Ospald fbac593739
Fix build on FreeBSD 2021-04-10 13:29:36 +02:00
Julian Ospald c80e54dff5
Fix up stack 2021-04-09 19:45:47 +02:00
Julian Ospald 4a86b2479e
Fix up .cabal file 2021-04-09 19:39:14 +02:00
Julian Ospald 7bb2552d0f
Tighten bounds for hackage 2021-04-09 19:18:44 +02:00
Julian Ospald ad21640cd9
Please 'cabal check' 2021-04-09 19:13:36 +02:00
Julian Ospald e4aad4e645
Use lzma-static 2021-04-09 19:01:31 +02:00
Julian Ospald adf44ba141
Validate subdirs too, fixes #52 2021-04-02 16:54:27 +02:00
Julian Ospald 8707b194fd
Add GHC-9.2.1-alpha1 2021-04-02 16:34:14 +02:00
Julian Ospald 77bb7c4aba
Merge branch 'PR/issue-119' 2021-04-01 21:03:14 +02:00
Julian Ospald 7383fdd0c0
Make parser more lax, fixes #119
Also make sure we don't print the warning message
20 times, so avoid some repeated IO.
2021-04-01 17:21:00 +02:00
Julian Ospald f4201d946a
Merge branch 'chores' 2021-03-24 18:50:26 +01:00
Julian Ospald d5b5f1fddd
Chores 2021-03-24 17:56:57 +01:00
Julian Ospald 910d660732
Update README 2021-03-08 17:59:56 +01:00
Julian Ospald ab4ad3a1bb
Merge branch 'PR/issue-106' 2021-03-08 17:36:00 +01:00
Julian Ospald 13b27101f1
Create fish config dir if it doesn't exist
Fixes #106
2021-03-08 16:18:26 +01:00
Julian Ospald 44b5d0dcff
Merge branch 'PR/cabal-updates' 2021-03-08 10:35:06 +01:00
Julian Ospald df54b3711f
Update cabal.project etc 2021-03-07 20:54:53 +01:00
Julian Ospald 197288453f
Update cabal.project etc 2021-03-07 19:46:44 +01:00
Julian Ospald 00d5691a13
Post release tasks 2021-03-07 14:50:08 +01:00
Julian Ospald 561b6684ce
Update travis 2021-03-07 12:33:21 +01:00
Julian Ospald a13bb3154d
Update CHANGELOG 2021-03-07 12:27:04 +01:00
Julian Ospald fd9d3faf9f
Merge branch 'PR/issue-116' 2021-03-07 12:24:05 +01:00
Julian Ospald f6cc467e95
Fix handling of stray versions wrt #116 2021-03-07 12:02:13 +01:00
Julian Ospald ef978c1230
Add test case for issue #116 2021-03-07 11:59:45 +01:00
Julian Ospald 52af598473
Update ghcup in old yamls 2021-03-06 16:02:09 +01:00
Julian Ospald 2acacd46c2
Bump stack.yaml 2021-03-02 19:37:09 +01:00
Julian Ospald 4b2f9ddb40
Update project files 2021-03-02 19:22:14 +01:00
Julian Ospald 0d3dc4eba2
Bump ghcup version 2021-03-02 12:39:24 +01:00
Julian Ospald 824faa8091
Update CHANGELOG 2021-03-02 12:38:11 +01:00
Julian Ospald d10cdfdf57
Merge branch 'PR/issue-115' 2021-03-02 12:34:52 +01:00
Julian Ospald 5e911793ce
Document env variables wrt #95 2021-03-02 10:51:23 +01:00
Julian Ospald 8c87c9aeb7
Fix error messages and overhaul pretty printing
Fixes #115
2021-03-02 10:35:31 +01:00
Julian Ospald 9da5998a5c
Add some fancy messages 2021-02-26 19:55:33 +01:00
Julian Ospald 08943dadca
Fix validation 2021-02-26 16:06:08 +01:00
Julian Ospald 7fac7226c5
Update ghcup 2021-02-26 15:38:35 +01:00
Julian Ospald 9686c8ebf9
Update changelog 2021-02-26 11:53:57 +01:00
Julian Ospald 4bf96d0ec9
Revert version bump in bootstrap script 2021-02-25 19:19:53 +01:00
Julian Ospald 34add82bee
Merge branch 'PR/issue-114' 2021-02-25 19:18:13 +01:00
Julian Ospald f46e7e8c4b
Add "ghcup set ghc next" tag wrt #114 2021-02-25 19:10:55 +01:00
Julian Ospald 3baf254251
Improve tag completer 2021-02-25 16:13:00 +01:00
Julian Ospald 10ca9ea827
Reformat versionCompleter 2021-02-25 15:52:28 +01:00
Julian Ospald 4a50c8ecb7
Remove network call on shell completion 2021-02-25 15:46:08 +01:00
Julian Ospald 47d9766c78
Make sure forFold can properly inline 2021-02-25 15:40:52 +01:00
Julian Ospald 45ab69960f
Merge remote-tracking branch 'origin/merge-requests/70' 2021-02-25 15:36:37 +01:00
Julian Ospald d3505d4ee6
Bump version to 0.1.13 2021-02-25 15:33:52 +01:00
Julian Ospald 9297d1a2f8
Merge branch 'arm' 2021-02-25 14:22:59 +01:00
Julian Ospald 56feb7c09e
Use stages in CI 2021-02-25 14:14:01 +01:00
Julian Ospald bede4b8712
Merge branch 'www-fix-silicon-copy' 2021-02-25 13:33:11 +01:00
Julian Ospald 95c1c55f22
Fix copy button for apple silicon 2021-02-25 13:32:46 +01:00
Julian Ospald f547a6eb68
Support ARM/AARCH 2021-02-25 11:53:36 +01:00
Huw campbell 453a29fdf7 Respect the user's configuration settings
Only lookup user configuration before doing a search; implement version completion for Cabal and HLS removal
2021-02-25 16:31:40 +11:00
Huw campbell 1a5f0259f4 Just use the cache for commands which refer to locally stored objects.
Setting a version of GHC will fail if provided with a version not installed,
and we don't neede to check the most recent list of GHCs available to know
that.
2021-02-25 10:19:16 +11:00
Huw campbell d6fa61e223 Add command line completions for installed and available versions.
When running `ghcup set ghc` and pressing tab, one should be able to
autocomplete the currently installed GHCs we have available.

Add an optparse applicative completer for install, rm, and set commands
which shows tags and versions. For installation, all are shown; while
for remove and set, only those installed are.
2021-02-25 00:42:16 +11:00
Julian Ospald eab82b5d63
Update HLS to 1.0.0 2021-02-24 12:43:04 +01:00
Julian Ospald c455b521a9
Fix ghcup-tui 2021-02-24 12:42:36 +01:00
Julian Ospald b4f9e12293
Merge remote-tracking branch 'origin/merge-requests/54' 2021-02-24 10:13:46 +01:00
Julian Ospald bbd353ea3a
Merge branch 'PR/issue-107' 2021-02-23 18:40:04 +01:00
Julian Ospald 4189c5de69
Update CHANGELOG 2021-02-23 17:11:45 +01:00
Julian Ospald dee3218723
Fix item selection with unavailable versions
Fixes #107
2021-02-23 17:10:48 +01:00
Julian Ospald 3c803a9f58
Merge branch 'PR/issue-104' 2021-02-23 12:52:19 +01:00
Julian Ospald a9b0c0fbc9
Allow for dynamic post-install, post-remove and pre-compile msgs 2021-02-23 11:52:38 +01:00
Julian Ospald 38b6c918f9
Update CHANGELOG 2021-02-21 21:03:12 +01:00
Julian Ospald 6e584c96c4
Merge branch 'PR/issue-111' 2021-02-21 21:01:59 +01:00
Julian Ospald 20338f7d14
Alert user if upgraded ghcup is shadowed by old ghcup
Also alerts if the binary is not in PATH at all.

Fixes #111
2021-02-21 19:58:32 +01:00
Julian Ospald 1a995a5d63
Merge branch 'PR/cabal-3.4.0.0' 2021-02-21 16:34:18 +01:00
Julian Ospald f964382175
Tighten checks, alpine 32bit bindists is 1st class 2021-02-21 15:37:05 +01:00
Julian Ospald 0c7f60fae6
Add more alpine 32bit bindists 2021-02-21 15:35:33 +01:00
Julian Ospald 413e63d1ca
Update hasufell.de hosted bindists to webhost.haskell.org 2021-02-21 15:34:55 +01:00
Julian Ospald 8b000f4e48
Add cabal-3.4.0.0 final release 2021-02-20 23:30:28 +01:00
Julian Ospald b0522507be
Merge branch 'PR/ubunbu-20.10-update-reqs/110' 2021-02-16 16:40:03 +01:00
Julian Ospald d4bcf7021e
Merge branch 'PR/fix-109' 2021-02-16 16:26:13 +01:00
Julian Ospald 48cf0b1f67
Update libffi req for ubuntu groovy
Fixed #110
2021-02-16 14:41:49 +01:00
Julian Ospald d82e189c01
Fix failed ghcup upgrade if destination dir doesn't exist
Fixes #109
2021-02-16 14:37:17 +01:00
Julian Ospald e5a60d1b9a
Merge branch 'ghc-8.10.4' 2021-02-06 22:39:52 +01:00
Julian Ospald ff067351cb
Add GHC-8.10.4 2021-02-06 14:28:58 +01:00
Julian Ospald 345712a617
Add freeze/project file for ghc-8.10.3 2021-02-05 11:59:57 +01:00
Julian Ospald 118dac6907
Merge branch 'bump-GHC-CI' 2021-02-05 11:51:11 +01:00
Julian Ospald 5ca40caf81
Bump GHC/Cabal in CI 2021-02-05 11:02:45 +01:00
Julian Ospald d858187fd4
Merge remote-tracking branch 'origin/merge-requests/61' 2021-02-05 10:49:39 +01:00
Julian Ospald bd65517df1
Add changelog for ghc-9.0.1 2021-02-04 23:20:19 +01:00
Julian Ospald b1acad6c95
Set 8.10.3 as recommended 2021-02-04 22:59:17 +01:00
Julian Ospald a8333281ac
Bump to GHC-9.0.1 2021-02-04 22:49:49 +01:00
Julian Ospald 2fdb08ac00
Merge remote-tracking branch 'origin/merge-requests/59' 2021-01-31 11:19:22 +01:00
Javier Neira bd4e5a2314 Update haskell-language-server to 0.9.0 2021-01-30 15:36:34 -05:00
Julian Ospald 34ed317b6b
Merge remote-tracking branch 'origin/merge-requests/58' 2021-01-13 10:13:40 +08:00
Enrico Maria De Angelis 14661502ab #103: Rewording of warning message 2021-01-11 07:12:19 +00:00
Julian Ospald 097754ffdf
Merge remote-tracking branch 'origin/merge-requests/57' 2021-01-05 08:24:30 +08:00
amesgen f26ec6d295
update HLS to 0.8.0 2021-01-04 21:02:38 +01:00
Julian Ospald 858d430845
Add ghc-8.10.3 for alpine 32bit 2021-01-04 09:51:36 +08:00
Julian Ospald 5134eccbf8
Update HACKING.md 2021-01-02 16:07:41 +08:00
Julian Ospald 28b4737758
Merge remote-tracking branch 'origin/merge-requests/56' 2021-01-02 15:57:18 +08:00
amesgen 5c43ff4c9e
error if we check nothing 2021-01-02 08:51:57 +01:00
amesgen 53db68e39f
minor tarball filter format change 2021-01-02 07:58:08 +01:00
Julian Ospald 9e628e34dd
Merge remote-tracking branch 'origin/merge-requests/55' 2021-01-02 14:27:11 +08:00
amesgen 62d5d53232
filter tool and version instead of URL 2021-01-02 05:53:11 +01:00
amesgen 56569a0698
use regex instead of substring 2021-01-02 05:05:05 +01:00
amesgen ef44f818d0
add GHC 9.0.1-rc1 2021-01-01 05:50:54 +01:00
amesgen 8944ed6e36
allow to filter tarball validation by a URL substring
also, use nubOrd for linearithmic instead of quadratic complexity
2021-01-01 05:45:58 +01:00
Julian Ospald 51805b27aa
Update CHANGELOG 2020-12-30 17:01:45 +08:00
Julian Ospald 0ec64510b3
Update CHANGELOG 2020-12-30 16:52:46 +08:00
Julian Ospald 20152443da
Fix hash for 8.10.3 src dist 2020-12-30 11:47:26 +08:00
Ron Toland 7c8929fe9f add default install instructions for apple silicon 2020-12-26 06:33:32 -08:00
Julian Ospald 5617516c93
Merge remote-tracking branch 'origin/merge-requests/52' 2020-12-25 01:26:08 +08:00
Julian Ospald f6fe08367d
Fix cabal prerelease download URLs wrt #102 2020-12-24 04:46:05 +08:00
Julian Ospald a5f02133e2
Merge remote-tracking branch 'origin/merge-requests/53' 2020-12-24 01:57:58 +08:00
Ron Toland 8ed9b4432d Add install cmd for Apple Silicon wrt #101 2020-12-23 06:51:54 -08:00
amesgen db1d05e8ad
add GHC 8.10.3 2020-12-21 00:52:00 +01:00
Julian Ospald eae58137c8
Merge remote-tracking branch 'origin/merge-requests/47' 2020-12-20 01:45:49 +08:00
Julian Ospald b0f90c096f
Fix chmod on executables, wrt #97 2020-12-20 01:27:27 +08:00
Julian Ospald e8361c564a
Merge remote-tracking branch 'origin/merge-requests/51' 2020-12-19 03:30:40 +08:00
amesgen 54db9c9a92
update HLS to 0.7.1 2020-12-18 15:32:50 +01:00
amesgen 73db341dc8
update HLS to 0.7.0 2020-12-16 00:58:26 +01:00
Julian Ospald 5fd30b412b
Merge remote-tracking branch 'origin/merge-requests/49' 2020-11-28 12:46:16 +01:00
Anton-Latukha bbe2e87640
CHANGELOG.md: add note about `ghcup` directory fix` 2020-11-28 12:34:58 +02:00
Anton-Latukha 67f59f6895
bootstrap-haskell: fx XDG GHCUP_DIR value 2020-11-28 01:41:43 +02:00
Anton-Latukha 3e2df2e111
bootstrap-haskell: create GHCUP_DIR 2020-11-28 01:27:35 +02:00
Julian Ospald 824d2149c6
Merge remote-tracking branch 'origin/merge-requests/48' 2020-11-27 20:26:33 +01:00
Anton-Latukha c86dbe043b
bootstrap-haskell: mention the license
Since script is served separately from the main source code (can be opened over
https://get-ghcup.haskell.org) - mention the script license to the reciever.
2020-11-27 17:06:39 +02:00
Anton-Latukha 8043ac7f51
bootstrap-haskell: provide instructions for the main settings
Provide some basic instructive information to someone who views the script.
2020-11-27 17:04:00 +02:00
Paolo Martini ead9d31647
Apply NO_COLOR to dimAttributes as well to cover all tui colors 2020-11-26 20:22:32 +01:00
Paolo Martini a08e624309
Respect NO_COLOR environment variable in list and tui 2020-11-25 11:41:53 +01:00
Julian Ospald b20371c3ac
Add default values to all XDG_ variables documentation 2020-11-21 16:31:50 +01:00
Julian Ospald 0589a7cbcc
Document XDG_CONFIG_HOME wrt #85 2020-11-21 16:29:26 +01:00
Julian Ospald cf48961063
Bump ghcup to 0.1.12 2020-11-21 14:23:37 +01:00
Julian Ospald 6046582b9c
Improve version ranges 2020-11-21 14:05:34 +01:00
Julian Ospald 82aa6c70ea
Allow to encode version ranges for distro versions
Fixes #84
2020-11-21 01:12:15 +01:00
Julian Ospald e829bd8235
Fix brick not updating downloads correctly 2020-11-21 00:32:58 +01:00
Julian Ospald 66f989e691
Fix FromJSONKey instances
This led to silent Nothing when the parser failed.
2020-11-20 23:18:25 +01:00
Julian Ospald eebb91fbb0
Use extra-doc-files for CHANGELOG.md 2020-11-20 23:16:13 +01:00
Julian Ospald 1d3e88bdfe
Fix disappearing HLS symlinks wrt #91
When installing a new GHC version, the corresponding
HLS symlink of that version may be accidentially removed.

Ooops.
2020-11-20 23:05:37 +01:00
Julian Ospald fbb03dee7e
Merge remote-tracking branch 'origin/merge-requests/44' into master 2020-11-12 10:49:26 +01:00
amesgen 88e5afb70f
update HLS to 0.6.0 2020-11-11 23:19:05 +01:00
Julian Ospald 67eabfd3af
Update CHANGELOG 2020-10-30 22:27:41 +01:00
Julian Ospald cd1dd8c29e
Merge branch 'PR/82' into master 2020-10-30 22:26:33 +01:00
Julian Ospald 08ddb591b7
Add toolchain sanity checks wrt #82 2020-10-30 21:07:49 +01:00
Julian Ospald 3e841b3c68
Merge branch 'settings' into master 2020-10-26 18:25:20 +01:00
Julian Ospald 53f5a08924
Allow configuring URLSource as well 2020-10-25 14:47:26 +01:00
Julian Ospald d368863c3d
Improve help output 2020-10-25 11:00:00 +01:00
Julian Ospald c76cce5830
Add a --set option to install/compile, fixes #81 2020-10-25 10:54:04 +01:00
Julian Ospald 4fef93b7b1
Allow to configure ghcup with a yaml config file
Fixes #41
2020-10-25 10:22:45 +01:00
Julian Ospald 241dadbeb5
Update to versions-4.0.1 API 2020-10-25 10:22:35 +01:00
Julian Ospald 12459c2544
Add internal downloader and tui flags to stack 2020-10-25 10:22:35 +01:00
Julian Ospald e250d6013f
Redo Settings as AppState 2020-10-24 01:07:31 +02:00
Julian Ospald 0d41d180d6
Merge remote-tracking branch 'origin/merge-requests/40' into master 2020-10-14 11:59:15 +02:00
amesgen ef251ce17e
update to cabal-3.4.0.0-rc4 2020-10-13 20:53:09 +02:00
Julian Ospald 956e11c3f8
Bump version to 0.1.12 2020-10-13 00:09:35 +02:00
Julian Ospald 951b0843b2
Update hls to 0.5.1 2020-10-12 23:54:56 +02:00
Julian Ospald a4e4080a1b
Merge branch 'TUI-improvements' into master 2020-10-12 23:40:26 +02:00
Julian Ospald 2aa91c5d91
Update golden test 2020-10-12 21:48:06 +02:00
Julian Ospald 6471b3877f
Bump ghcup version in bootstrap-haskell 2020-10-12 21:05:25 +02:00
Julian Ospald 778ee142d5
Upload golden files as artifacts on failure 2020-10-12 00:10:37 +02:00
Julian Ospald 1140132a25
Update hie.yaml 2020-10-11 23:40:02 +02:00
Julian Ospald c5c299179d
Remove text-conversion workaround 2020-10-11 23:39:49 +02:00
Julian Ospald 0ce4549eb8
Ditch the viewport logic 2020-10-11 23:37:27 +02:00
Julian Ospald 97d568ddd6
Show new versions in bright white 2020-10-11 21:44:11 +02:00
Julian Ospald ea58465240
Expand the selected bar 2020-10-11 21:16:48 +02:00
Julian Ospald 7afd262b1b
Put separators between tools 2020-10-11 21:07:21 +02:00
Julian Ospald 34ceaa0823
Add brick to stack.yaml 2020-10-11 21:06:58 +02:00
Julian Ospald 57c34a07f2
Allow to hide old versions of tools in TUI 2020-10-09 23:05:11 +02:00
Julian Ospald 73d1d97f1f
Reverse order of tool list in TUI 2020-10-09 20:25:52 +02:00
Julian Ospald f7ed1a4bde
Commit ghc-8.8.4 cabal.project files
These are auto-generated from stack and meant for users.
2020-10-05 22:11:05 +02:00
Julian Ospald bdd80d0229
Bump stack lts 2020-10-05 22:10:52 +02:00
Julian Ospald 0238f70c64
Bump hls to 0.5.0 2020-10-05 00:19:35 +02:00
Julian Ospald 24ff430c45
Add stack.yaml wrt #75 2020-10-01 17:49:23 +02:00
Julian Ospald 281fb14d4c
Rename ghc-9.0.1-alpha1 to 9.0.0.20200925 wrt #73 2020-09-29 23:33:55 +02:00
Julian Ospald 03bac93929
Improve bootstrap test 2020-09-29 10:57:21 +02:00
Julian Ospald 1ae0c2a654
Move printf to the right place 2020-09-29 10:52:31 +02:00
Julian Ospald 8140936bd3
Test bootstrap-haskell wrt #72 2020-09-29 10:23:29 +02:00
Julian Ospald 8786acf476
Fix BOOTSTRAP_HASKELL_NONINTERACTIVE 2020-09-29 10:12:03 +02:00
Julian Ospald c460d4c743
Update bindists for Mint to fedora 2020-09-29 00:22:58 +02:00
Julian Ospald 5294adf0d7
Fix bootstrap-script 2020-09-28 23:52:23 +02:00
Julian Ospald 00f3fa35fd
Add hls installation to bootstrap-haskell 2020-09-28 23:48:59 +02:00
Julian Ospald 9c9aa4f9c0
Fix CI 2020-09-28 23:27:15 +02:00
Julian Ospald e23a187cc4
Add ghc-9.0.1-alpha1 2020-09-28 23:23:11 +02:00
Julian Ospald 3e429945dc
Also modify .bash_profile on mac 2020-09-28 09:59:35 +02:00
Julian Ospald 8be2a8eed7
Update CHANGELOG date for 0.1.11 2020-09-23 09:53:44 +02:00
Julian Ospald 6b65167581
Update yaml files 2020-09-23 00:27:28 +02:00
Julian Ospald 9d7914e69a
Bump ghcupURL 2020-09-22 23:41:19 +02:00
Julian Ospald 6c62884b24
Update Changelog 2020-09-22 21:31:01 +02:00
Julian Ospald 965d2a3ba8
Drop 'ghcup compile cabal'
Upstream has discontinued the old bootstrap shell script.
The new python shell script doesn't work like the old one
and is only useful for bootstrapping to a new architecture.

If you miss this feature, consider running:
  cabal install cabal-install

with the appropriate GHC version set (this might need some
experimenting).

This also fixes #64
2020-09-22 21:26:10 +02:00
Julian Ospald 40a1cc98c6
Drop use of table-layout, thanks to Simon 2020-09-22 21:05:59 +02:00
Julian Ospald 4c2d4ee6bd
Update hls tarballs 2020-09-22 19:23:24 +02:00
Julian Ospald 9276664465
Merge branch 'hls' into master 2020-09-22 15:23:10 +02:00
Julian Ospald a94bcdb92d
Remove 9.0.1-alpha1
Ben requested removal, since this wasn't an announced
release.
2020-09-21 14:13:45 +02:00
Julian Ospald 5da5fabfef
Use alpine:3.12 instead of edge 2020-09-21 12:23:14 +02:00
Julian Ospald 05cc55c52d
Improve brick UI 2020-09-21 10:40:06 +02:00
Julian Ospald 571df1349c
Update hie.yaml 2020-09-20 23:09:09 +02:00
Julian Ospald cbbb75062c
Bump version to 0.1.11 2020-09-20 23:09:09 +02:00
Julian Ospald bb7c4205db
Allow to install haskell-language-server wrt #65 2020-09-20 23:09:09 +02:00
Julian Ospald b2027f1625
Simplify installing GHC from custom bindist wrt #60 2020-09-19 11:52:12 +02:00
Julian Ospald 65945c87df
Update CHANGELOG 2020-09-19 11:51:48 +02:00
Julian Ospald 081582d3e1
Merge branch 'compile-overwrite' into master 2020-09-18 09:31:14 +02:00
Julian Ospald bf240af518
Fix build
https://github.com/cjdev/text-conversions/pull/10
2020-09-17 22:18:03 +02:00
Julian Ospald a269131e2d
Allow to compile over existing version, fixes #59 2020-09-17 21:21:16 +02:00
Julian Ospald 59ece98fdc
Fix bug in compileGHC cleanup logic 2020-09-17 21:20:38 +02:00
Julian Ospald 563924ff26
Fix gitlab CI 2020-09-15 22:22:15 +02:00
Julian Ospald 8ee3f55428
Fix test on i386 2020-09-15 21:59:56 +02:00
Julian Ospald 93c17607b5
Fix haddock build, fixes #62 2020-09-15 17:44:30 +02:00
Julian Ospald 8b4c239444
Add changelog entry for cabal-3.4.0.0-rc3 2020-09-15 15:43:07 +02:00
Julian Ospald 8bef17bf59
Add cabal-3.4.0.0-rc3 2020-09-15 15:38:10 +02:00
Julian Ospald a649146a39
Add hspec tests to gitlab CI 2020-09-13 21:13:42 +02:00
Julian Ospald 9d6a5313ab
Add JSON roundtrip specs 2020-09-13 21:10:13 +02:00
Julian Ospald de09c950d5
Improve requirements wording, fixes #56 2020-09-13 15:38:51 +02:00
Julian Ospald 47838b1bd9
Merge branch 'compile-bindist' into master 2020-09-13 13:30:28 +02:00
Julian Ospald 02b360e2a9
Create bindists when compiling GHC wrt #51 2020-09-12 23:47:12 +02:00
Julian Ospald c10ab15e0c
Update cabal pre-release ot 3.4.0.0-rc2 2020-09-04 10:16:28 +02:00
Julian Ospald 46f3da1a94
Merge branch 'fix-symlink-support' into master 2020-09-01 21:07:42 +02:00
Julian Ospald 7ec9d90aab
Fix build with libarchive-3.0.0.0 2020-09-01 19:55:48 +02:00
Julian Ospald 326bf510c9
Fix Error when ~/.ghcup is a valid symlink
Fixes #49
2020-08-31 13:03:12 +02:00
Julian Ospald ce3d1f4309
Add GHC-9.0.1-alpha1 2020-08-27 23:41:07 +02:00
Julian Ospald b31ba883e4
Add vim integration section to README 2020-08-23 14:07:49 +02:00
Julian Ospald e5d1c04616
Fix bootstrap-haskell for fish shell, fixes #48 2020-08-20 15:51:37 +02:00
Julian Ospald 34ff0ed9cf
Fix dlSubDir for GHC-8.10.2 on alpine wrt #47 2020-08-20 15:49:28 +02:00
Julian Ospald 85bd87d5f3
Clarify 2020-08-19 19:40:59 +02:00
Julian Ospald 8b274214af
Fix typo 2020-08-19 19:38:36 +02:00
Julian Ospald 069e3102f4
Fix anchor 2020-08-19 19:36:13 +02:00
Julian Ospald 8623b32721
Add "Install custom bindists" to README 2020-08-19 19:34:04 +02:00
Julian Ospald 6342e8edf0
Use 8.10.2 in gitlab CI 2020-08-15 23:54:50 +02:00
Julian Ospald bbd8f0c84c
Add GHC-8.10.2 for alpine 32big 2020-08-15 23:34:05 +02:00
Julian Ospald 873c951d6e
Refactor chmod +x 2020-08-14 22:27:05 +02:00
Julian Ospald d9c864d3c5
Make sure cabal is executable wrt #46 2020-08-14 22:07:39 +02:00
Julian Ospald 4280d7109a
Fix 3.4.0.0-rc1 urls wrt #46 2020-08-14 21:49:01 +02:00
Julian Ospald c8855c068f
Update version in bootstrap-haskell 2020-08-14 20:36:14 +02:00
Julian Ospald 90503061e9
Add ghcup-0.1.10 2020-08-14 20:22:27 +02:00
Julian Ospald 672ebf6426
Bump version 2020-08-14 16:57:15 +02:00
Julian Ospald fd76fde23a
Add cabal-3.4.0.0-rc1 2020-08-14 16:54:27 +02:00
Julian Ospald e24c9a3ffe
Show stray cabals, fixes #45 2020-08-14 16:53:32 +02:00
Julian Ospald 2641d50c21
Update ghcup binaries 2020-08-14 09:42:41 +02:00
Julian Ospald 202f3ea3ba
Fix bug where setting non-installed GHC unsets current one 2020-08-13 20:40:09 +02:00
Julian Ospald 4f09e3ff7e
Update CHANGELOG 2020-08-13 17:01:09 +02:00
Julian Ospald 1148219130
Fix README 2020-08-12 10:13:18 +02:00
Julian Ospald 4b47800dfb
CHANGELOG fix 2020-08-11 22:38:22 +02:00
Julian Ospald e2c4db9132
Rm unneeded note 2020-08-11 22:04:08 +02:00
Julian Ospald 90af68b211
Pre-release 0.1.9 2020-08-11 21:55:15 +02:00
Julian Ospald 80603662b4
Merge branch 'cabal-install-3.4.0.0-rc1' 2020-08-11 21:34:45 +02:00
Julian Ospald d2c5d4dfd9
Test that we're not missing GHCup alpine 2020-08-11 20:23:15 +02:00
Julian Ospald 6f1b8b4041
Fix build on 32bit 2020-08-11 19:47:29 +02:00
Julian Ospald f63b2bf744
Fix CI 2020-08-11 11:48:42 +02:00
Julian Ospald 71cb75c170
Update .gitignore 2020-08-10 22:28:02 +02:00
Julian Ospald dac64f5718
Make TarDir backwardscompat 2020-08-10 22:28:02 +02:00
Julian Ospald 27b2d2ac7d
Fix cabal.project for cabal-3.4 2020-08-10 22:28:01 +02:00
Julian Ospald 47142dd376
Test on 32bit 2020-08-10 22:28:01 +02:00
Julian Ospald d071a7e51b
Avoid duplicate edits to .bashrc etc 2020-08-10 22:28:01 +02:00
Julian Ospald 5c45884f5f
Allow to specify regex for subdir 2020-08-10 22:27:50 +02:00
Julian Ospald cafedd73a2
Use Settings to avoid querying dirs every time 2020-08-10 21:52:30 +02:00
Julian Ospald 7163b77837
Only query directories once 2020-08-10 21:51:31 +02:00
Julian Ospald 122c54b51e
Refactor 2020-08-10 21:51:31 +02:00
Julian Ospald b9d7d7d007
Fix licences in module haddock 2020-08-10 21:51:29 +02:00
Julian Ospald 9050c9792a
Improve bootstrap-haskell 2020-08-10 21:51:20 +02:00
Julian Ospald aac8f760ad
Add xdg support wrt #39 2020-08-10 21:51:19 +02:00
Julian Ospald 7d334c18f5
Don't stop TUI on subcommand failure 2020-08-10 21:51:19 +02:00
Julian Ospald 86b0e4b31b
Fix `cabalSet` for pre-release versions 2020-08-10 21:51:19 +02:00
Julian Ospald af811f3dbc
`nub` result in getInstalledCabals 2020-08-10 21:51:19 +02:00
Julian Ospald d30d2ac8a5
Add cabal-install-3.4.0.0-rc1 2020-08-10 21:51:00 +02:00
Julian Ospald 86a4b10de6
Merge branch 'yaml' 2020-08-10 08:58:55 +02:00
Julian Ospald cfa7049ab9
Merge branch 'CI' 2020-08-09 22:11:48 +02:00
Julian Ospald 391676e90a
Use yaml instead of pesky json 2020-08-09 21:56:11 +02:00
Julian Ospald 34e4ece8b5
Merge branch 'ghc-8.10.2' 2020-08-09 16:14:04 +02:00
Julian Ospald cf6443d83f
Add GHC-8.10.2 2020-08-09 15:53:56 +02:00
Julian Ospald 846cf92fa4
Add GHC-8.10.2 2020-08-09 15:49:08 +02:00
Julian Ospald ab568901f8
Try to build for El Capitan 2020-07-22 22:50:13 +02:00
Julian Ospald bfda95c0d6
Fix haskus-utils-types build with GHC-8.10.1 2020-07-22 02:35:22 +02:00
Julian Ospald fb1875ee5b
Doc fixes 2020-07-22 02:34:17 +02:00
Julian Ospald 185d4f869b
Remove unnecessary bundles 2020-07-22 01:37:15 +02:00
Julian Ospald 2ac8b61aa8
Fix bootstrap-haskell when ghcup is a broken script
Fixes #28
2020-07-22 01:25:12 +02:00
Julian Ospald 8739cb4656
Enable haddock building in CI 2020-07-22 01:11:37 +02:00
Julian Ospald 826900cc41
Improve documentation 2020-07-22 01:08:58 +02:00
Julian Ospald ec6bbdbf06
Update ghcup binaries 2020-07-22 00:18:31 +02:00
Julian Ospald 15a188c501
Update FreeBSD 8.10.1 2020-07-22 00:17:14 +02:00
Julian Ospald b5440fc7d2
Fix bug in installCabalBin 2020-07-21 23:10:47 +02:00
Julian Ospald 4b21adadf1
Release 0.1.8 2020-07-21 22:47:21 +02:00
Julian Ospald 78ae77780b
Fix bug in logging thread
It would die on newlines due to empty String blindness.
Also make sure takeMVar does not block.
2020-07-21 22:43:09 +02:00
Julian Ospald ccb95bcbee
f custom 2020-07-21 22:42:39 +02:00
Julian Ospald 21ac670bbe
Update FreeBSD bindist 2020-07-21 21:08:41 +02:00
Julian Ospald 8b54dee66c
Merge branch 'CI-m' 2020-07-21 20:21:53 +02:00
Julian Ospald dad926f3ba
Allow to specify custom bindist, fixes #14 2020-07-21 20:19:33 +02:00
Julian Ospald a298d949b5
Remove FreeBSD workaround in CI 2020-07-21 19:00:10 +02:00
Julian Ospald e1cf11f9d4
Add Alpine GHC 8.4.4 for 64bit 2020-07-21 01:18:03 +02:00
Julian Ospald a046f16308
Remove libtinfo compat symlinks 2020-07-21 00:36:31 +02:00
Julian Ospald 97cd43792d
Set 8.8.4 as recommended GHC version 2020-07-21 00:31:02 +02:00
Julian Ospald 08693e6d3a
Add more alpine bindists 2020-07-21 00:29:46 +02:00
Julian Ospald e2227da8d2
Update ghcup binaries 2020-07-21 00:02:14 +02:00
Julian Ospald 5f20e4c583
Bump versions in CI 2020-07-20 23:57:26 +02:00
Julian Ospald f82f1a12dd
Update version in bootstrap-script 2020-07-20 23:04:11 +02:00
Julian Ospald 53148fd1c9
Release 0.1.7 2020-07-20 22:25:28 +02:00
Julian Ospald 8985101b2a
Use 8.8.4 for test build 2020-07-20 22:25:09 +02:00
Julian Ospald d1949c8490
Use available bindists for release build 2020-07-20 22:24:21 +02:00
Julian Ospald b7faae1203
Add more alpine bindists 2020-07-20 22:20:24 +02:00
Julian Ospald b6a9d35c3e
Merge branch 'alpine-bindists' 2020-07-20 20:59:08 +02:00
Julian Ospald 6cb6c7a448
Install alpine bindists with --disable-ld-override 2020-07-20 20:48:22 +02:00
Julian Ospald 22a5ad739e
Don't try non-musl bindists for Alpine Linux 2020-07-20 20:47:45 +02:00
Julian Ospald 14c91bdd78
Merge branch 'libarchive-fix' 2020-07-20 20:34:54 +02:00
Julian Ospald 2c638cd2e2
Fix unpacking of bindists with hardinks pointing to themselves
https://github.com/vmchale/libarchive/issues/14
https://github.com/libarchive/libarchive/issues/1381
2020-07-20 20:34:36 +02:00
Julian Ospald 9e59f484e3
Fix alpine bindists 2020-07-20 20:30:47 +02:00
Julian Ospald ac8419ecb2
Fix platform detection for i386 docker images wrt #37 2020-07-20 20:30:36 +02:00
Julian Ospald 3ecdb63063
Update tarballs 2020-07-19 00:50:57 +02:00
Julian Ospald cfe24428fa
Only check for upgrades when not upgrading 2020-07-19 00:47:20 +02:00
Julian Ospald 4c4266dd8c
Add GHC-8.8.4 for FreeBSD 2020-07-16 14:38:19 +02:00
Julian Ospald e8336bbc8a
Add GHC-8.8.4 2020-07-16 10:57:44 +02:00
Julian Ospald 0f69c73e0e
Rework printing/tee
This should be faster to draw, use less syscalls
and generally use EOF and pipes correctly.
2020-07-16 00:10:27 +02:00
Julian Ospald e348de8dc4
Drop unused error variants 2020-07-14 19:16:01 +02:00
Julian Ospald 55a3ba9be2
Improve fish support in bootstrap-haskell 2020-07-14 19:08:20 +02:00
Julian Ospald 51b29b81b0
Use new-style ghcup commands in bootstrap-haskell 2020-07-14 19:07:57 +02:00
Julian Ospald 3c2e0334b7
Update ghcup binary urls 2020-07-14 19:07:19 +02:00
Julian Ospald 0679626514
Self host ghcup binaries 2020-07-14 14:29:23 +02:00
Julian Ospald 5035051135
Update 0.1.6 2020-07-13 23:50:11 +02:00
Julian Ospald 63c70ee74b
Fix changelog subcommand on darwin 2020-07-13 23:10:17 +02:00
Julian Ospald 2e0bbca2e0
Fix freebsd tui 2020-07-13 22:45:38 +02:00
Julian Ospald b52fa23ca2
Update alpine install-deps 2020-07-13 22:34:38 +02:00
Julian Ospald ba03b78f23
Update ghcup binaries 2020-07-13 22:15:39 +02:00
Julian Ospald 04ef472c15
Fix freebsd gitlab-ci 2020-07-13 21:29:13 +02:00
Julian Ospald 75cd8f2341
Fix stripping in travis 2020-07-13 21:17:01 +02:00
Julian Ospald f2e26c1800
Fix release build 2020-07-13 20:48:37 +02:00
Julian Ospald 0f7dd597d2
Update .gitignore 2020-07-13 20:37:34 +02:00
Julian Ospald fb0eba9201
Release 0.1.6 2020-07-13 20:31:14 +02:00
Julian Ospald 3c80929c38
Merge branch 'ghc-8.10.1' 2020-07-13 20:06:17 +02:00
Julian Ospald b184ee835f
Add freebsd 8.6.5 bindist 2020-07-13 20:05:02 +02:00
Julian Ospald ef8e3bd940
Reduce number of os/dl lookups 2020-07-13 18:27:21 +02:00
Julian Ospald 1a64527e14
Improve verbosity 2020-07-13 16:27:01 +02:00
Julian Ospald 30b4d399b9
Add -ftui to travis build 2020-07-13 16:26:54 +02:00
Julian Ospald 50424c2801
Allow to build with tar-bytestring on e.g. 32bit 2020-07-13 15:41:31 +02:00
Julian Ospald 7e7c357e47
Fix freebsd CI 2020-07-13 15:41:30 +02:00
Julian Ospald 531b82a406
Add ghc-8.8.3 freebsd bindist 2020-07-13 15:41:30 +02:00
Julian Ospald 146ac38549
Add 8.10.1 freebsd bindist 2020-07-12 16:48:25 +02:00
Julian Ospald c481956b07
Bump GHC versions in CI 2020-07-11 23:03:04 +02:00
Julian Ospald 8ef19f0825
Allow to build with ghc-8.10.1 and 8.6.5 2020-07-11 22:53:38 +02:00
Julian Ospald c1e29a8f16
Rm bundled os-release 2020-07-11 21:25:45 +02:00
Julian Ospald c3611eec6a
Grey out versions without bindists in tui 2020-07-11 18:53:11 +02:00
Julian Ospald 74b58db7d1
Merge branch 'tui' 2020-07-11 13:32:34 +02:00
Julian Ospald 9e4763c640
Merge branch 'www-wsl' 2020-07-11 00:00:53 +02:00
Julian Ospald abc4278fc8
Improve style 2020-07-10 23:55:01 +02:00
Julian Ospald 8c4cde3d14
Recommend the curl command for potential WSL users on website
Fixes #32
2020-07-10 23:53:55 +02:00
Julian Ospald 3824f6417a
Update libarchive 2020-07-10 22:44:16 +02:00
Ben Gamari 2be1aa2707
Simplify upgrade copying logic 2020-07-10 22:03:04 +02:00
Julian Ospald da94fa5f92
Create brick tui wrt #24 2020-07-10 21:55:12 +02:00
Julian Ospald 35bf9b5ff2
Merge branch 'libarchive' 2020-07-05 23:33:47 +02:00
Julian Ospald bed2cca8d2
Use libarchive instead of tar-bytestring 2020-07-05 23:03:24 +02:00
Julian Ospald 9717a1c00f
Use os-release package 2020-07-04 23:28:30 +02:00
Julian Ospald 3ddc719d8a
Fix quasi quotes in Main 2020-07-04 21:49:59 +02:00
Julian Ospald 4b89810892
Rm unused functions 2020-07-04 21:20:08 +02:00
Julian Ospald b82367838d
Fix memory leak 2020-07-04 21:18:51 +02:00
Julian Ospald dd7556ba21
Merge branch 'less-bash' 2020-06-27 21:38:12 +02:00
Julian Ospald f4b6bfc594
Merge branch 'better-platform' 2020-06-27 21:37:45 +02:00
Julian Ospald f9251589cd
Add some architectures 2020-06-27 19:00:13 +02:00
Julian Ospald 2de549862a
Get rid of language-bash
And clean up detection logic a bit. We also don't
read /etc/lsb-release manually more, since it's format is
not specified.
2020-06-27 18:54:20 +02:00
Julian Ospald c502f70f68
Update DOCKER_REV 2020-06-27 01:38:38 +02:00
Julian Ospald cbf076740a
Merge branch 'hadrian' 2020-06-20 18:59:01 +02:00
Julian Ospald 86c144b285
Merge remote-tracking branch 'remotes/origin/merge-requests/12' into hadrian 2020-06-20 14:40:47 +02:00
Julian Ospald 7ec6e8604c
Slight style changes 2020-06-20 14:37:38 +02:00
Julian Ospald de70f4820f
Merge remote-tracking branch 'origin/merge-requests/13' into hadrian 2020-06-20 12:39:21 +02:00
Brian McKenna febe6fcb35 Fix behaviour of non-Hadrian builds
getFileStatus will resolve symbolic links. getSymbolicLinkStatus doesn't.
2020-06-20 03:38:41 +00:00
Brian McKenna 3055529d4c Update GHCupDownloads with ghcup-0.0.2.json content 2020-06-19 23:17:34 +00:00
Brian McKenna d276bfb3ec Extract Hadrian logic to isHadrian function with comment 2020-06-19 23:06:46 +00:00
Julian Ospald 9db0664465
Add hie.yaml 2020-06-19 19:44:30 +02:00
Julian Ospald e9c727647a
Update .gitigore 2020-06-19 19:42:55 +02:00
Julian Ospald 55eef8a3d3
Merge branch 'redhat' 2020-06-19 19:22:56 +02:00
Julian Ospald d07ad3eb26
Update ghcup-0.0.2.json with redhat wrt #29 2020-06-19 10:49:31 +02:00
Sigmund Vestergaard ad53b141c7
Removed reference to specific version of RHEL in GHCupDownloads.hs 2020-06-19 10:49:31 +02:00
Sigmund Vestergaard 23c13a07a9
Added support for RedHat in lib/GHCup/Data/GHCupDownloads.hs 2020-06-19 10:49:31 +02:00
Brian McKenna a186b07763 Support Hadrian provided bindists
Fixes #31
2020-06-18 14:03:51 +00:00
puffnfresh 1ca628aba1 Fix dlSubdir of ghc-8.10.1-x86_64-unknown-linux for Linux_Alpine 2020-06-18 07:52:34 -04:00
Julian Ospald 8f4ef48891
Merge remote-tracking branch 'origin/merge-requests/10' 2020-06-14 11:50:02 +02:00
Artur Gajowy d852ab3415 Use `BOOTSTAP_HASKELL_{GHC,CABAL}_VERSION` env vars as overrides 2020-06-14 00:15:50 +02:00
Julian Ospald a1bcc4b51f
Strip release binaries 2020-05-30 22:15:48 +02:00
Julian Ospald be93a98bd4
Update ToolRequirements for Ubuntu, add Debian
Fixes #26
2020-05-17 18:43:58 +02:00
Julian Ospald 85054d9c76
Show note for versions that don't have a bindist 2020-05-15 21:53:45 +02:00
Julian Ospald 6c95218daf
Support multiple installed versions of cabal
Fixes #23
2020-05-13 21:33:45 +02:00
Julian Ospald ede6299681
Update darwin binary 2020-05-10 13:47:06 +02:00
Julian Ospald bf6e94cfb2
Allow to build zlib and lzma statically
This should fix issues on Darwin.
2020-05-10 13:12:39 +02:00
Julian Ospald 378942cbce
Update darwin ghcup-0.1.5 binary
Seems to be broken on some systems due to
gitlab CI using homebrew. Switched back
to building it on travis.

Fixes #21
2020-05-07 21:35:40 +02:00
Julian Ospald 1207c7b3dd
Revert "Remove travis"
This reverts commit 5e35a91ef0.
2020-05-07 18:32:55 +02:00
Julian Ospald 788883df7b
Fix CI 2020-05-07 00:42:52 +02:00
Julian Ospald 5ab1f6c203
Small improvements to bootstrap-haskell 2020-05-06 22:33:52 +02:00
Julian Ospald 175066780b
Forget about .bash_profile
Previously we would prefer .bash_profile
if no .bashrc exists, but that seems a bit
far-fetched.

.bash_profile is for login shells, .bashrc
is sourced for interactive non-login shells,
but most .bash_profiles also explicitly source
.bashrc, so it's hard to go wrong with it.
2020-05-02 23:50:09 +02:00
Julian Ospald a629cf7b9f
Update gitignore 2020-05-01 16:28:51 +02:00
Julian Ospald 684130bfa3
Update bootstrap-haskell 2020-05-01 16:27:41 +02:00
Julian Ospald ee34d85dbc
Set TMPDIR during CI 2020-05-01 16:27:27 +02:00
Julian Ospald d2b280da2d
Update tarballs 2020-04-30 20:46:45 +02:00
Julian Ospald a5593a725f
Cleanup 2020-04-30 00:59:19 +02:00
Julian Ospald 5e35a91ef0
Remove travis 2020-04-30 00:43:44 +02:00
Julian Ospald 4abd10d9c9
Update RELEASING.md 2020-04-30 00:31:33 +02:00
Julian Ospald 0bbac877bd
Update ghcup tarballs 2020-04-30 00:12:30 +02:00
Julian Ospald f558bd9932
Fix CI failing on git-describe 2020-04-29 23:01:51 +02:00
Julian Ospald 781c28b03c
Update RELEASING.md 2020-04-29 22:37:12 +02:00
Julian Ospald a8be2efd85
Bump to version 0.1.5 2020-04-29 22:34:20 +02:00
Julian Ospald f46700e1cc
First cross try 2020-04-29 20:19:01 +02:00
Julian Ospald d7a6935a1a
Fix CI on FreeBSD 2020-04-29 20:14:38 +02:00
Julian Ospald a1282b2854
Fix missing import 2020-04-29 19:36:16 +02:00
Julian Ospald 34b9ea7d20
Fix CI 2020-04-29 19:17:59 +02:00
Julian Ospald 0ff7ebb1fd
Allow to set downloader 2020-04-29 19:12:58 +02:00
Julian Ospald f83dcbc430
Run 'git describe' in CI to make sure --version reports it 2020-04-29 12:38:57 +02:00
Julian Ospald 56e4a6b15f
Invert curl flag to internal-downloader 2020-04-29 09:56:26 +02:00
Julian Ospald ee9b2ec30d
Update docs 2020-04-28 17:41:08 +02:00
Julian Ospald 640cf1e2c1
Add zsh and fish completion wrt #19 2020-04-27 23:36:13 +02:00
Julian Ospald 56c439d716
Fall back to cached ghcup-<..>.json 2020-04-27 23:23:34 +02:00
Julian Ospald 1ed6e49a81
Install git in CI 2020-04-27 21:55:35 +02:00
Julian Ospald fad9f83e6a
Add CentoOS tool requirements 2020-04-27 21:52:44 +02:00
Julian Ospald 2e28b0d00f
Fix release builds 2020-04-27 21:23:46 +02:00
Julian Ospald ed4ff15f96
Update bash-completion 2020-04-27 07:47:46 +02:00
Julian Ospald 1d623723a2
Fix bug with missing ~/.ghcup/ghc/ dir 2020-04-26 22:06:00 +02:00
Julian Ospald 931080244f
Fix bug in logging 2020-04-26 20:17:59 +02:00
Julian Ospald 27e2e7f848
Fix building of documentation 2020-04-26 11:55:47 +02:00
Julian Ospald 8b638c7ecb
Rm stray ghc version 2020-04-25 13:22:12 +02:00
Julian Ospald acd370611f
Fix gitlab CI 2020-04-25 13:02:34 +02:00
Julian Ospald e1b5a89cee
Add bash-completion 2020-04-22 21:45:33 +02:00
Julian Ospald 5edebd57d9
Move download info into library 2020-04-22 19:32:48 +02:00
Julian Ospald bcaccaaf31
Implement --keep 2020-04-22 19:32:14 +02:00
Julian Ospald 818a5d2d85
Document environment variables 2020-04-22 16:14:10 +02:00
Julian Ospald 13acce07d4
Allow to install X.Y versions 2020-04-22 16:13:58 +02:00
Julian Ospald 4ed5e21b7f
Validate that all GHC versions have a base tag 2020-04-22 16:13:23 +02:00
Julian Ospald 86aab6bb59
Improve output formatting 2020-04-22 16:12:56 +02:00
Julian Ospald 7f5cb64b18
Re-add --format-raw to list subcommand 2020-04-22 13:03:46 +02:00
Julian Ospald 6c12eb16eb
Add base tag 2020-04-22 11:59:40 +02:00
Julian Ospald e637f90fae
List stray tools 2020-04-21 23:37:48 +02:00
Julian Ospald 5b33c3f491
Update TODO 2020-04-19 22:49:19 +02:00
Julian Ospald 1842ed464f
Also build 32bit release artifact 2020-04-19 22:31:53 +02:00
Julian Ospald 296bbdd561
Fix digest of ghc-8.8.3-i386-unknown-linux-musl.tar.xz 2020-04-19 22:05:18 +02:00
Julian Ospald 27ead1be7c
Build releases 2020-04-19 18:55:07 +02:00
Julian Ospald 5184609dba
Enable FreeBSD testing
Also use the new ghcup for bootstrapping GHC in install_deps.
2020-04-19 16:33:45 +02:00
Julian Ospald 5d94d0bf75
Also check for GHC and Cabal updates on start 2020-04-18 20:20:18 +02:00
Julian Ospald 72bcfa9270
Fix CI 2020-04-18 17:29:44 +02:00
Julian Ospald fafff9dadd
Update FAQ 2020-04-18 16:57:51 +02:00
Julian Ospald e3c20d53a8
Add changelog command
This should be backwardscompatible with 0.0.1 json format.

Also slightly change 'getTagged' to list the latest version
with a tag, not the oldest.
2020-04-18 15:06:22 +02:00
Julian Ospald 8b7dc68491
Fix ChangeLog date 2020-04-18 15:04:39 +02:00
Julian Ospald 7742fe08b5
Improve help messages 2020-04-17 22:58:15 +02:00
Julian Ospald a773da037c
On second thought... 2020-04-17 20:50:23 +02:00
Julian Ospald dfeb814dcc
Formatting 2020-04-17 18:57:58 +02:00
Julian Ospald 0623c7b1b1
Improve error reporting 2020-04-17 18:57:58 +02:00
Julian Ospald 62005f83a4
Improve debug info 2020-04-17 18:57:58 +02:00
Julian Ospald eaafd77a7e
Add --version and --numeric-version 2020-04-17 18:57:58 +02:00
Julian Ospald 9d9e415a09
Remove use of unsafe decodeUtf8 2020-04-17 09:30:45 +02:00
Julian Ospald 6c1ae585b7
Indicate removal of tmpdir after failed build 2020-04-17 09:29:31 +02:00
Julian Ospald 793aad7b6c
Fix ghc-make when files are in PATH
Fixes #11
2020-04-16 23:15:21 +02:00
Julian Ospald fd7807a66e
Add 0.1.4 downloads 2020-04-16 23:14:27 +02:00
Julian Ospald 879bd061dd
Bump to 0.1.4 2020-04-16 09:04:19 +02:00
Julian Ospald 75632b2cf1
Fix ghc being unlinked after installing a new one
Fixes #7
2020-04-16 08:39:36 +02:00
Julian Ospald b65b9dc5e1
Test that setting ghc versions isn't broken
Wrt #7
2020-04-16 08:39:29 +02:00
Julian Ospald 31d70e34e9
Fix bootstrap-haskell 2020-04-15 19:53:26 +02:00
Julian Ospald 84de282655
Add www 2020-04-15 17:08:59 +02:00
Julian Ospald 997dcadf89
Show the version when doing 'ghcup set' 2020-04-15 17:06:48 +02:00
Julian Ospald b2312629ce
Update download info 2020-04-15 16:49:46 +02:00
Julian Ospald 3d10f964c6
Bump version to 0.1.3 2020-04-15 15:42:09 +02:00
Julian Ospald 404038edcb
Fix boolean check in upgradeGHCup :) 2020-04-15 15:37:29 +02:00
Julian Ospald ea4f9ceab1
Update download info 2020-04-15 15:37:01 +02:00
Julian Ospald 5c481ea94e
Small travis adjustment 2020-04-15 15:36:03 +02:00
Julian Ospald 1ccaf4ba91
Update ghcup downloads 2020-04-15 15:12:21 +02:00
Julian Ospald b532511cd5
Use local ghcup-*.json in travis 2020-04-15 15:07:37 +02:00
Julian Ospald b3105b439c
Bump version to 0.1.2 2020-04-15 13:58:53 +02:00
Julian Ospald 2b6cb5f1a8
Enable gitlab travis 2020-04-15 13:58:53 +02:00
Julian Ospald f4242b10e7
Don't update ghcup if already latest version
Fixes #2
2020-04-15 13:58:52 +02:00
Julian Ospald ad4d185ead
Fix GHCUP_INSTALL_BASE_PREFIX
This should be the *parent* dir of '.ghcup', not
the full destination.
2020-04-15 13:55:32 +02:00
Julian Ospald b18aafe2c4
Fix bug with removing set GHC version 2020-04-15 13:55:28 +02:00
Julian Ospald 340196bf9d
Update ghcup tarballs 2020-04-15 08:31:01 +02:00
Julian Ospald 883226aa70
Update secret 2020-04-15 01:05:18 +02:00
Julian Ospald 0d393612a7
Update git repo links 2020-04-15 01:04:58 +02:00
Julian Ospald 5635f6cc4e
Bump version 2020-04-15 00:25:34 +02:00
Julian Ospald a7fd36beeb
Release 0.1.1 and fix bugs on mac 2020-04-15 00:08:47 +02:00
Julian Ospald baee1d5b85
Update link 2020-04-13 22:20:10 +02:00
Julian Ospald 68df6b8e50
Update ghcup URIs 2020-04-13 21:11:26 +02:00
Julian Ospald ac73090784
Improve HACKING.md 2020-04-13 21:11:00 +02:00
Julian Ospald faf4f3b7ca
Rm foo 2020-04-13 17:13:47 +02:00
Julian Ospald d888d11d59
Allow to control prettiness of JSON output 2020-04-13 15:25:50 +02:00
Julian Ospald 28a1077833
Add i386 ghcup binary 2020-04-13 15:25:43 +02:00
Julian Ospald c40b9dbc0b
Fix darwin 10.14 tarball, thanks to carter 2020-04-13 15:21:47 +02:00
Julian Ospald 6bbd262818
Update TODO 2020-04-13 15:21:16 +02:00
Julian Ospald 78d36bce24
Update hacking doc 2020-04-13 15:20:56 +02:00
Julian Ospald aedfc19220
Remove homebrew trash 2020-04-12 21:50:07 +02:00
Julian Ospald 2f34fc7bef
Update downloads 2020-04-12 21:32:07 +02:00
Julian Ospald de66b92631
Fix upgradeGHCup 2020-04-12 20:22:16 +02:00
Julian Ospald fee3984bf7
Update Downloads 2020-04-12 20:12:36 +02:00
Julian Ospald b953c8fd30
Add RELEASING.md 2020-04-12 20:01:42 +02:00
Julian Ospald 24e4c3a19b
Add HACKING.md 2020-04-12 19:48:26 +02:00
Julian Ospald d2efb504b9
Fix upgradeGHCup
File needs to be unlinked first, because it might
potentially be in use.
2020-04-12 18:54:03 +02:00
Julian Ospald df9dd0e785
Update download info and bootstrap script 2020-04-12 18:31:07 +02:00
Julian Ospald 89c9699158
Clean up help texts 2020-04-12 15:38:01 +02:00
Julian Ospald 124ddcdfeb
Mimic the old ghcup cli options
So we don't break scripts.
2020-04-12 15:38:01 +02:00
Julian Ospald 5c0a0fc155
Update travis secret api key 2020-04-12 15:37:57 +02:00
Julian Ospald b11b74d2b4
Only use major version for Darwin 2020-04-11 22:15:09 +02:00
Julian Ospald 5ac8f5b651
Add new bootstrap-haskell 2020-04-11 21:40:01 +02:00
Julian Ospald 9032df97cf
Add travis support 2020-04-11 21:36:34 +02:00
Julian Ospald 14e1077ad1
Add linux and freebsd ghcup executables to download info 2020-04-11 00:50:15 +02:00
Julian Ospald b5648bdd6b
Improve error in compileGHC 2020-04-10 22:44:43 +02:00
Julian Ospald e7cd952970
Fix missing version detection for darwin and freebsd 2020-04-10 21:11:15 +02:00
Julian Ospald 1455c2c175
Add darwin notarisation 2020-04-10 19:27:17 +02:00
Julian Ospald c106dd3f65
Show curl progress bar 2020-04-10 19:08:02 +02:00
Julian Ospald f6725fbf5f
Add ghcup-0.0.1.json 2020-04-10 18:45:34 +02:00
Julian Ospald c706a047ea
Add tool-requirements subcommand 2020-04-10 18:45:33 +02:00
Julian Ospald 9602db31ab
Bump version to 0.1.0 2020-04-09 20:37:03 +02:00
Julian Ospald c2c47e1b7e
Enable split-sections 2020-04-09 20:35:42 +02:00
Julian Ospald 34386680cc
Remove stack.yaml 2020-04-09 20:08:29 +02:00
Julian Ospald 16a26d9881
Update Dockerfile 2020-04-09 20:08:29 +02:00
Julian Ospald 3496f24f6e
Silence compiler warnings 2020-04-09 20:08:25 +02:00
Julian Ospald 1a5876a074
Update freeze file 2020-04-09 18:28:35 +02:00
Julian Ospald c782bc44de
Avoid unnecessary OpenSSL deps 2020-04-09 18:27:07 +02:00
Julian Ospald f78e7b1cbc
Small refactor and build fixes 2020-04-09 18:26:02 +02:00
Julian Ospald adec7b2398
Allow to build with curl (cli) instead of http-io-streams
This allows to avoid linking against OpenSSL on mac.
2020-04-09 17:01:03 +02:00
Julian Ospald 958bf698b9
Fix bug in caputeOutStreams
We didn't read continuously from the pipe, potentially
blocking it when the buffer is full.
2020-04-09 17:01:03 +02:00
Julian Ospald 6a79782650
Allow to apply patches for compiling from source 2020-04-08 22:57:57 +02:00
Julian Ospald 5382fd9aca
Fix crashes due to utf8 decoding errors 2020-04-08 22:20:26 +02:00
Julian Ospald 8a0236a350
Allow to specify full path to bootstrap GHC 2020-04-08 22:17:39 +02:00
Julian Ospald 3e52def226
Update downloads and version 2020-04-05 11:02:13 +02:00
Julian Ospald 5d3c26b509 Update TODO 2020-03-25 10:23:22 +01:00
Julian Ospald 99941bc2a1 Add docker build 2020-03-24 21:55:33 +01:00
Julian Ospald 63f290107c Add TODO 2020-03-24 21:06:21 +01:00
Julian Ospald 31a8316bfa Implement proper build log scrolling 2020-03-24 21:05:10 +01:00
217 changed files with 96620 additions and 5737 deletions

11
.editorconfig Normal file
View File

@ -0,0 +1,11 @@
root = true
[*]
end_of_line = LF
trim_trailing_whitespace = true
insert_final_newline = true
[*.hs]
indent_style = space
indent_size = 2
max_line_length = 80

4946
.github/ghc-8.10.3-linux.alpine.files vendored Normal file

File diff suppressed because it is too large Load Diff

8734
.github/ghc-8.10.3-linux.files vendored Normal file

File diff suppressed because it is too large Load Diff

10321
.github/ghc-8.10.3-windows.files vendored Normal file

File diff suppressed because it is too large Load Diff

37
.github/ghcup-run.files vendored Normal file
View File

@ -0,0 +1,37 @@
.
./cabal
./ghc
./ghc-8.10.7
./ghc-pkg
./ghc-pkg-8.10.7
./ghci
./ghci-8.10.7
./haddock
./haddock-8.10.7
./haskell-language-server-8.10.6
./haskell-language-server-8.10.6~1.6.1.0
./haskell-language-server-8.10.7
./haskell-language-server-8.10.7~1.6.1.0
./haskell-language-server-8.6.5
./haskell-language-server-8.6.5~1.6.1.0
./haskell-language-server-8.8.4
./haskell-language-server-8.8.4~1.6.1.0
./haskell-language-server-9.0.1
./haskell-language-server-9.0.1~1.6.1.0
./haskell-language-server-9.0.2
./haskell-language-server-9.0.2~1.6.1.0
./haskell-language-server-9.2.1
./haskell-language-server-9.2.1~1.6.1.0
./haskell-language-server-wrapper
./haskell-language-server-wrapper-1.6.1.0
./hp2ps
./hp2ps-8.10.7
./hpc
./hpc-8.10.7
./hsc2hs
./hsc2hs-8.10.7
./runghc
./runghc-8.10.7
./runhaskell
./runhaskell-8.10.7
./stack

31
.github/ghcup-run.files.alpine vendored Normal file
View File

@ -0,0 +1,31 @@
.
./cabal
./ghc
./ghc-8.10.7
./ghc-pkg
./ghc-pkg-8.10.7
./ghci
./ghci-8.10.7
./haddock
./haddock-8.10.7
./haskell-language-server-8.10.7
./haskell-language-server-8.10.7~1.6.1.0
./haskell-language-server-8.8.4
./haskell-language-server-8.8.4~1.6.1.0
./haskell-language-server-9.0.2
./haskell-language-server-9.0.2~1.6.1.0
./haskell-language-server-9.2.1
./haskell-language-server-9.2.1~1.6.1.0
./haskell-language-server-wrapper
./haskell-language-server-wrapper-1.6.1.0
./hp2ps
./hp2ps-8.10.7
./hpc
./hpc-8.10.7
./hsc2hs
./hsc2hs-8.10.7
./runghc
./runghc-8.10.7
./runhaskell
./runhaskell-8.10.7
./stack

81
.github/ghcup-run.files.windows vendored Normal file
View File

@ -0,0 +1,81 @@
.
./cabal.exe
./cabal.shim
./ghc-8.10.7.exe
./ghc-8.10.7.shim
./ghc-pkg-8.10.7.exe
./ghc-pkg-8.10.7.shim
./ghc-pkg.exe
./ghc-pkg.shim
./ghc.exe
./ghc.shim
./ghci-8.10.7.exe
./ghci-8.10.7.shim
./ghci.exe
./ghci.shim
./ghcii-8.10.7.sh-8.10.7.exe
./ghcii-8.10.7.sh-8.10.7.shim
./ghcii-8.10.7.sh.exe
./ghcii-8.10.7.sh.shim
./ghcii.sh-8.10.7.exe
./ghcii.sh-8.10.7.shim
./ghcii.sh.exe
./ghcii.sh.shim
./haddock-8.10.7.exe
./haddock-8.10.7.shim
./haddock.exe
./haddock.shim
./haskell-language-server-8.10.6.exe
./haskell-language-server-8.10.6.shim
./haskell-language-server-8.10.6~1.6.1.0.exe
./haskell-language-server-8.10.6~1.6.1.0.shim
./haskell-language-server-8.10.7.exe
./haskell-language-server-8.10.7.shim
./haskell-language-server-8.10.7~1.6.1.0.exe
./haskell-language-server-8.10.7~1.6.1.0.shim
./haskell-language-server-8.6.5.exe
./haskell-language-server-8.6.5.shim
./haskell-language-server-8.6.5~1.6.1.0.exe
./haskell-language-server-8.6.5~1.6.1.0.shim
./haskell-language-server-8.8.4.exe
./haskell-language-server-8.8.4.shim
./haskell-language-server-8.8.4~1.6.1.0.exe
./haskell-language-server-8.8.4~1.6.1.0.shim
./haskell-language-server-9.0.1.exe
./haskell-language-server-9.0.1.shim
./haskell-language-server-9.0.1~1.6.1.0.exe
./haskell-language-server-9.0.1~1.6.1.0.shim
./haskell-language-server-9.0.2.exe
./haskell-language-server-9.0.2.shim
./haskell-language-server-9.0.2~1.6.1.0.exe
./haskell-language-server-9.0.2~1.6.1.0.shim
./haskell-language-server-9.2.1.exe
./haskell-language-server-9.2.1.shim
./haskell-language-server-9.2.1~1.6.1.0.exe
./haskell-language-server-9.2.1~1.6.1.0.shim
./haskell-language-server-wrapper-1.6.1.0.exe
./haskell-language-server-wrapper-1.6.1.0.shim
./haskell-language-server-wrapper.exe
./haskell-language-server-wrapper.shim
./hp2ps-8.10.7.exe
./hp2ps-8.10.7.shim
./hp2ps.exe
./hp2ps.shim
./hpc-8.10.7.exe
./hpc-8.10.7.shim
./hpc.exe
./hpc.shim
./hsc2hs-8.10.7.exe
./hsc2hs-8.10.7.shim
./hsc2hs.exe
./hsc2hs.shim
./runghc-8.10.7.exe
./runghc-8.10.7.shim
./runghc.exe
./runghc.shim
./runhaskell-8.10.7.exe
./runhaskell-8.10.7.shim
./runhaskell.exe
./runhaskell.shim
./stack.exe
./stack.shim

109
.github/release.yaml vendored Normal file
View File

@ -0,0 +1,109 @@
name: Create Release
on:
push:
tags:
- 'v*'
jobs:
draft_release:
name: Create Release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body: |
Changes in this Release
- First Change
- Second Change
draft: true
prerelease: false
release-mac:
name: Create Release for macOS
needs: draft_release
runs-on: ${{ matrix.os }}
env:
MACOSX_DEPLOYMENT_TARGET: 10.13
strategy:
matrix:
os:
- macOS-10.15
steps:
- name: Checkout code
uses: actions/checkout@v2
- uses: haskell/actions/setup@v1.2
with:
ghc-version: 8.10.4
cabal-version: 3.4.0.0
- name: create ~/.local/bin
run: mkdir -p "$HOME/.local/bin"
shell: bash
- name: Add ~/.local/bin to PATH
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
shell: bash
- name: Update cabal cache
run: cabal update
shell: bash
- name: Install cabal dependencies
run: cabal build --only-dependencies
shell: bash
- name: Build
run: cabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui
shell: bash
- name: Install
run: cp "$(cabal list-bin exe:ghcup)" ~/.local/bin/ghcup
shell: bash
- name: Strip
run: strip ~/.local/bin/ghcup
shell: bash
- name: Run tests
run: cabal test --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" all
shell: bash
- name: Install git
run: brew install git
- name: set HOME
run: echo "HOME=$HOME" >> $GITHUB_ENV
shell: bash
- name: Set ASSET_PATH
run: echo "ASSET_PATH=$HOME/.local/bin/ghcup" >> $GITHUB_ENV
shell: bash
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.draft_release.outputs.upload_url }}
asset_path: ${{ env.ASSET_PATH }}
asset_name: ghcup-${{ matrix.os }}
asset_content_type: application/octet-stream
- if: always()
uses: actions/upload-artifact@v2
with:
name: plan.json
path: ./dist-newstyle/cache/plan.json

18
.github/scripts/bootstrap.sh vendored Normal file
View File

@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -eux
. .github/scripts/env.sh
mkdir -p "$CI_PROJECT_DIR"/.local/bin
git describe --always
### build
./scripts/bootstrap/bootstrap-haskell
[ "$(ghc --numeric-version)" = "${BOOTSTRAP_HASKELL_GHC_VERSION}" ]
# https://github.com/actions/runner-images/issues/7061
[ "$(ghcup config | grep --color=never meta-mode)" = "meta-mode: Lax" ]

27
.github/scripts/brew.sh vendored Normal file
View File

@ -0,0 +1,27 @@
#!/bin/sh
set -eux
. .github/scripts/env.sh
if [ -e "$HOME/.brew" ] ; then
(
cd "$HOME/.brew"
git fetch --depth 1
git reset --hard origin/master
)
else
git clone --depth=1 https://github.com/Homebrew/brew "$HOME/.brew"
fi
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
mkdir -p $CI_PROJECT_DIR/.brew_cache
export HOMEBREW_CACHE=$CI_PROJECT_DIR/.brew_cache
mkdir -p $CI_PROJECT_DIR/.brew_logs
export HOMEBREW_LOGS=$CI_PROJECT_DIR/.brew_logs
mkdir -p /private/tmp/.brew_tmp
export HOMEBREW_TEMP=/private/tmp/.brew_tmp
brew update
brew install ${1+"$@"}

37
.github/scripts/build.sh vendored Normal file
View File

@ -0,0 +1,37 @@
#!/bin/sh
set -eux
. .github/scripts/common.sh
git_describe
# ensure ghcup
install_ghcup
# ensure cabal-cache
download_cabal_cache "$HOME/.local/bin/cabal-cache"
# install toolchain (if necessary)
ghcup -v install ghc --set --force "$GHC_VER"
ghcup -v install cabal --force "$CABAL_VER"
ghc --version
cabal --version
GHC="ghc-${GHC_VER}"
# build
ecabal update
build_with_cache --project-file=cabal.project.release -w "${GHC}" --enable-tests
# set up artifacts
mkdir -p out
binary=$(cabal --project-file=cabal.project.release list-bin ghcup)
binary_test=$(cabal --project-file=cabal.project.release list-bin ghcup-test)
binary_opttest=$(cabal --project-file=cabal.project.release list-bin ghcup-optparse-test)
ver=$("${binary}" --numeric-version)
strip_binary "${binary}"
cp "${binary}" "out/${ARTIFACT}-${ver}${ext}"
cp "${binary_test}" "out/test-${ARTIFACT}-${ver}${ext}"
cp "${binary_opttest}" "out/test-optparse-${ARTIFACT}-${ver}${ext}"
cp ./dist-newstyle/cache/plan.json "out/${ARTIFACT}.plan.json"

13
.github/scripts/cabal-cache.sh vendored Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
case "$(uname -s)" in
MSYS_*|MINGW*)
ext=".exe"
;;
*)
ext=""
;;
esac
echo "cabal-cache disabled (CABAL_CACHE_DISABLE set)"

174
.github/scripts/common.sh vendored Normal file
View File

@ -0,0 +1,174 @@
#!/bin/sh
. .github/scripts/env.sh
ecabal() {
cabal "$@"
}
nonfatal() {
"$@" || "$* failed"
}
sync_from() {
if [ "${RUNNER_OS}" != "Windows" ] ; then
cabal_store_path="$(dirname "$(cabal help user-config | tail -n 1 | xargs)")/store"
fi
cabal-cache.sh sync-from-archive \
--host-name-override=${S3_HOST} \
--host-port-override=443 \
--host-ssl-override=True \
--region us-west-2 \
$([ "${RUNNER_OS}" != "Windows" ] && echo --store-path="$cabal_store_path") \
--archive-uri "s3://ghcup-hs/${RUNNER_OS}-${ARCH}-${DISTRO}"
}
sync_to() {
if [ "${RUNNER_OS}" != "Windows" ] ; then
cabal_store_path="$(dirname "$(cabal help user-config | tail -n 1 | xargs)")/store"
fi
cabal-cache.sh sync-to-archive \
--host-name-override=${S3_HOST} \
--host-port-override=443 \
--host-ssl-override=True \
--region us-west-2 \
$([ "${RUNNER_OS}" != "Windows" ] && echo --store-path="$cabal_store_path") \
--archive-uri "s3://ghcup-hs/${RUNNER_OS}-${ARCH}-${DISTRO}"
}
raw_eghcup() {
"$GHCUP_BIN/ghcup${ext}" -v -c "$@"
}
eghcup() {
if [ "${OS}" = "Windows" ] ; then
"$GHCUP_BIN/ghcup${ext}" -c -s "file:${GITHUB_WORKSPACE//\\//}/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
else
"$GHCUP_BIN/ghcup${ext}" -c -s "file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
fi
}
sha_sum() {
if [ "${OS}" = "FreeBSD" ] ; then
sha256 "$@"
else
sha256sum "$@"
fi
}
git_describe() {
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
git describe --always
}
download_cabal_cache() {
(
set -e
mkdir -p "$HOME/.local/bin"
dest="$HOME/.local/bin/cabal-cache"
url=""
exe=""
cd /tmp
case "${RUNNER_OS}" in
"Linux")
case "${ARCH}" in
"32") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/i386-linux-cabal-cache
;;
"64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-linux-cabal-cache
;;
"ARM64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/aarch64-linux-cabal-cache
;;
"ARM") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/armv7-linux-cabal-cache
;;
esac
;;
"FreeBSD")
url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-portbld-freebsd-cabal-cache
;;
"Windows")
exe=".exe"
url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-mingw64-cabal-cache
;;
"macOS")
case "${ARCH}" in
"ARM64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/aarch64-apple-darwin-cabal-cache
;;
"64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-apple-darwin-cabal-cache
;;
esac
;;
esac
if [ -n "${url}" ] ; then
case "${url##*.}" in
"gz")
curl -L -o - "${url}" | gunzip > cabal-cache${exe}
;;
*)
curl -o cabal-cache${exe} -L "${url}"
;;
esac
sha_sum cabal-cache${exe}
mv "cabal-cache${exe}" "${dest}${exe}"
chmod +x "${dest}${exe}"
fi
# install shell wrapper
cp "${CI_PROJECT_DIR}"/.github/scripts/cabal-cache.sh "$HOME"/.local/bin/
chmod +x "$HOME"/.local/bin/cabal-cache.sh
)
}
build_with_cache() {
ecabal configure "$@"
ecabal build --dependencies-only "$@" --dry-run
sync_from
ecabal build --dependencies-only "$@" || sync_to
sync_to
ecabal build "$@"
sync_to
}
install_ghcup() {
case "${RUNNER_OS}" in
"Linux")
case "${ARCH}" in
"ARM"*)
if command -v ghcup ; then
mkdir -p "$GHCUP_BIN"
cp "$(command -v ghcup)" "$GHCUP_BIN/ghcup${ext}"
else
install_ghcup_curl_sh
fi
;;
*) install_ghcup_curl_sh
;;
esac
;;
*) install_ghcup_curl_sh
;;
esac
}
install_ghcup_curl_sh() {
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_MINIMAL=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=yes sh
}
strip_binary() {
(
set -e
local binary=$1
case "$(uname -s)" in
"Darwin"|"darwin")
;;
MSYS_*|MINGW*)
;;
*)
strip -s "${binary}"
;;
esac
)
}

74
.github/scripts/cross.sh vendored Normal file
View File

@ -0,0 +1,74 @@
#!/usr/bin/env bash
set -ex
. .github/scripts/common.sh
run() {
"$@"
}
if [ "${OS}" = "Windows" ] ; then
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
else
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
fi
git_describe
rm -rf "${GHCUP_DIR}"
mkdir -p "${GHCUP_BIN}"
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
cp "out/test-${ARTIFACT}"-* "ghcup-test${ext}"
chmod +x "$GHCUP_BIN/ghcup${ext}"
chmod +x "ghcup-test${ext}"
"$GHCUP_BIN/ghcup${ext}" --version
eghcup --version
sha_sum "$GHCUP_BIN/ghcup${ext}"
sha_sum "$(raw_eghcup --offline whereis ghcup)"
### cross build
eghcup --numeric-version
eghcup install ghc "${GHC_VER}"
eghcup set ghc "${GHC_VER}"
eghcup install cabal "${CABAL_VER}"
cabal --version
eghcup debug-info
ecabal update
"${WRAPPER}" "$GHCUP_BIN/ghcup${ext}" -c -s "file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" -v \
compile ghc \
$(if [ -n "${HADRIAN_FLAVOUR}" ] ; then printf "%s" "--flavour=${HADRIAN_FLAVOUR}" ; else true ; fi) \
-j "$(nproc)" \
-v "${GHC_TARGET_VERSION}" \
-b "${GHC_VER}" \
-x "${CROSS}" \
-- ${BUILD_CONF_ARGS}
eghcup set ghc "${CROSS}-${GHC_TARGET_VERSION}"
[ "$($(eghcup whereis ghc "${CROSS}-${GHC_TARGET_VERSION}") --numeric-version)" = "${GHC_TARGET_VERSION}" ]
# test that doing fishy symlinks into GHCup dir doesn't cause weird stuff on 'ghcup nuke'
mkdir no_nuke/
mkdir no_nuke/bar
echo 'foo' > no_nuke/file
echo 'bar' > no_nuke/bar/file
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/cache/no_nuke
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/logs/no_nuke
# nuke
eghcup nuke
[ ! -e "${GHCUP_DIR}" ]
# make sure nuke doesn't resolve symlinks
[ -e "$CI_PROJECT_DIR"/no_nuke/file ]
[ -e "$CI_PROJECT_DIR"/no_nuke/bar/file ]

34
.github/scripts/env.sh vendored Normal file
View File

@ -0,0 +1,34 @@
#!/bin/sh
if [ "${RUNNER_OS}" = "Windows" ] ; then
ext=".exe"
else
ext=''
fi
export DEBIAN_FRONTEND=noninteractive
export TZ=Asia/Singapore
if [ "${RUNNER_OS}" = "freebsd" ] ; then
export RUNNER_OS=FreeBSD
fi
export OS="$RUNNER_OS"
export PATH="$HOME/.local/bin:$PATH"
if [ "${RUNNER_OS}" = "Windows" ] ; then
# on windows use pwd to get unix style path
CI_PROJECT_DIR="$(pwd)"
export CI_PROJECT_DIR
export GHCUP_INSTALL_BASE_PREFIX="/c"
export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin"
export PATH="$GHCUP_BIN:$PATH"
export CABAL_DIR="C:\\Users\\runneradmin\\AppData\\Roaming\\cabal"
else
export CI_PROJECT_DIR="${GITHUB_WORKSPACE}"
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/.ghcup/bin"
export PATH="$GHCUP_BIN:$PATH"
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
fi

72
.github/scripts/hls.sh vendored Normal file
View File

@ -0,0 +1,72 @@
#!/usr/bin/env bash
set -eux
. .github/scripts/common.sh
mkdir -p "$CI_PROJECT_DIR"/.local/bin
### build
if [ "${OS}" = "Windows" ] ; then
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
else
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
fi
rm -rf "${GHCUP_DIR}"
mkdir -p "${GHCUP_BIN}"
ls -lah out
find out
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
chmod +x "$GHCUP_BIN/ghcup${ext}"
echo "$PATH"
"$GHCUP_BIN/ghcup${ext}" --version
eghcup --version
sha_sum "$GHCUP_BIN/ghcup${ext}"
sha_sum "$(raw_eghcup --offline whereis ghcup)"
git_describe
eghcup install ghc "${GHC_VERSION}"
eghcup install cabal "${CABAL_VERSION}"
ecabal update
if ! command -v cabal-cache ; then
download_cabal_cache "$HOME/.local/bin/cabal-cache"
fi
if ! cabal-cache version ; then
build_cabal_cache "$HOME/.local/bin"
fi
eghcup debug-info
(
cd /tmp
git clone --depth 1 --branch "${HLS_TARGET_VERSION}" \
https://github.com/haskell/haskell-language-server.git \
"haskell-language-server-${HLS_TARGET_VERSION}"
cd "haskell-language-server-${HLS_TARGET_VERSION}/"
ecabal configure -w "ghc-${GHC_VERSION}" --disable-profiling --disable-tests --jobs="$(nproc)"
ecabal build --dependencies-only -w "ghc-${GHC_VERSION}" --disable-profiling --disable-tests --jobs="$(nproc)" --dry-run
sync_from
ecabal build --dependencies-only -w "ghc-${GHC_VERSION}" --disable-profiling --disable-tests --jobs="$(nproc)" || sync_to
sync_to
)
eghcup -v compile hls -j "$(nproc)" -g "${HLS_TARGET_VERSION}" --ghc "${GHC_VERSION}"
[ "$($(eghcup whereis hls "${HLS_TARGET_VERSION}") --numeric-version)" = "${HLS_TARGET_VERSION}" ] ||
[ "$($(eghcup whereis hls "${HLS_TARGET_VERSION}") --numeric-version | sed 's/.0$//')" = "${HLS_TARGET_VERSION}" ]
# nuke
eghcup nuke
[ ! -e "${GHCUP_DIR}" ]

272
.github/scripts/test.sh vendored Normal file
View File

@ -0,0 +1,272 @@
#!/usr/bin/env bash
set -eux
. .github/scripts/common.sh
if [ "${OS}" = "Windows" ] ; then
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
else
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
fi
env
git_describe
rm -rf "${GHCUP_DIR}"
mkdir -p "${GHCUP_BIN}"
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
cp "out/test-${ARTIFACT}"-* "ghcup-test${ext}"
cp "out/test-optparse-${ARTIFACT}"-* "ghcup-test-optparse${ext}"
chmod +x "$GHCUP_BIN/ghcup${ext}"
chmod +x "ghcup-test${ext}"
chmod +x "ghcup-test-optparse${ext}"
"$GHCUP_BIN/ghcup${ext}" --version
eghcup --version
sha_sum "$GHCUP_BIN/ghcup${ext}"
sha_sum "$(raw_eghcup --offline whereis ghcup)"
### Haskell test suite
./"ghcup-test${ext}"
./"ghcup-test-optparse${ext}"
rm "ghcup-test${ext}" "ghcup-test-optparse${ext}"
### manual cli based testing
eghcup --numeric-version
# test PATH on windows wrt msys2
# https://github.com/haskell/ghcup-hs/pull/992/checks
if [ "${OS}" = "Windows" ] ; then
eghcup run -m -- sh -c 'echo $PATH' | sed 's/:/\n/' | grep '^/mingw64/bin$'
fi
eghcup install ghc "${GHC_VER}"
eghcup unset ghc "${GHC_VER}"
ls -lah "$(eghcup whereis -d ghc "${GHC_VER}")"
[ "$($(eghcup whereis ghc "${GHC_VER}") --numeric-version)" = "${GHC_VER}" ]
[ "$(eghcup run -q --ghc "${GHC_VER}" -- ghc --numeric-version)" = "${GHC_VER}" ]
[ "$(ghcup run -q --ghc "${GHC_VER}" -- ghc -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)')" = "$($(ghcup whereis ghc "${GHC_VER}") -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)')" ]
eghcup set ghc "${GHC_VER}"
eghcup install cabal "${CABAL_VER}"
[ "$($(eghcup whereis cabal "${CABAL_VER}") --numeric-version)" = "${CABAL_VER}" ]
eghcup unset cabal
"$GHCUP_BIN"/cabal --version && exit 1 || echo yes
# make sure no cabal is set when running 'ghcup run' to check that PATH propagages properly
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/375
[ "$(eghcup run -q --cabal "${CABAL_VER}" -- cabal --numeric-version)" = "${CABAL_VER}" ]
eghcup set cabal "${CABAL_VER}"
[ "$($(eghcup whereis cabal "${CABAL_VER}") --numeric-version)" = "${CABAL_VER}" ]
if [ "${OS}" != "FreeBSD" ] ; then
if [ "${ARCH}" = "64" ] && [ "${DISTRO}" != "Alpine" ] ; then
eghcup run --ghc 8.10.7 --cabal 3.4.1.0 --hls 1.6.1.0 --stack 2.7.3 --install --bindir "$(pwd)/.bin"
if [ "${OS}" = "Windows" ] ; then
cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.windows" | sort > expected.txt
elif [ "${DISTRO}" = "Alpine" ] ; then
cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.alpine" | sort > expected.txt
else
cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files" | sort > expected.txt
fi
(cd ".bin" && find . | sort) > actual.txt
diff --strip-trailing-cr -w -u actual.txt expected.txt
rm actual.txt expected.txt
rm -rf .bin
fi
fi
cabal --version
eghcup debug-info
# also test etags
eghcup list
eghcup list -t ghc
eghcup list -t cabal
ghc_ver=$(ghc --numeric-version)
ghc --version
"ghc-${ghc_ver}" --version
if [ "${OS}" != "Windows" ] ; then
ghci --version
"ghci-${ghc_ver}" --version
fi
if [ "${OS}" = "macOS" ] && [ "${ARCH}" = "ARM64" ] ; then
# missing bindists
echo
elif [ "${OS}" = "FreeBSD" ] ; then
# not enough space
echo
else
# test installing new ghc doesn't mess with currently set GHC
# https://gitlab.haskell.org/haskell/ghcup-hs/issues/7
if [ "${OS}" = "Linux" ] ; then
eghcup --downloader=wget prefetch ghc 8.10.3
eghcup --offline install ghc 8.10.3
if [ "${ARCH}" = "64" ] ; then
if [ "${DISTRO}" = "Alpine" ] ; then
(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.alpine.files" | sort) > expected.txt
else
(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.files" | sort) > expected.txt
fi
(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort) > actual.txt
# ignore docs
sed -i '/share\/doc/d' actual.txt
sed -i '/share\/doc/d' expected.txt
diff --strip-trailing-cr -w -u actual.txt expected.txt
rm actual.txt expected.txt
fi
elif [ "${OS}" = "Windows" ] ; then
eghcup prefetch ghc 8.10.3
eghcup --offline install ghc 8.10.3
(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-windows.files" | sort) > expected.txt
(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort) > actual.txt
diff --strip-trailing-cr -w -u actual.txt expected.txt
rm actual.txt expected.txt
else
eghcup prefetch ghc 8.10.3
eghcup --offline install ghc 8.10.3
fi
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
eghcup --offline set 8.10.3
eghcup set 8.10.3
[ "$(ghc --numeric-version)" = "8.10.3" ]
eghcup set "${GHC_VER}"
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
eghcup unset ghc
"$GHCUP_BIN"/ghc --numeric-version && exit 1 || echo yes
eghcup set "${GHC_VER}"
eghcup --offline rm 8.10.3
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
ls -lah "$GHCUP_BIN"
if [ "${OS}" = "macOS" ] ; then
eghcup install hls
$(eghcup whereis hls) --version
eghcup install stack
$(eghcup whereis stack) --version
elif [ "${OS}" = "Linux" ] ; then
if [ "${ARCH}" = "64" ] && [ "${DISTRO}" != "Alpine" ] ; then
eghcup install hls
haskell-language-server-wrapper --version
eghcup unset hls
"$GHCUP_BIN"/haskell-language-server-wrapper --version && exit 1 || echo yes
eghcup install stack
stack --version
eghcup unset stack
"$GHCUP_BIN"/stack --version && exit 1 || echo yes
fi
fi
fi
# check that lazy loading works for 'whereis'
cp "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak"
echo '**' > "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
eghcup whereis ghc "$(ghc --numeric-version)"
mv -f "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
eghcup rm "$(ghc --numeric-version)"
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/116
if [ "${OS}" = "Linux" ] ; then
if [ "${ARCH}" = "64" ] ; then
eghcup install cabal -u https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.7.0.0-pre20220407/cabal-install-3.7-x86_64-linux-alpine.tar.xz 3.4.0.0-rc4
eghcup rm cabal 3.4.0.0-rc4
fi
fi
eghcup gc -c
# test etags
rm -f "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
raw_eghcup -s "https://www.haskell.org/ghcup/data/ghcup-${JSON_VERSION}.yaml" list
# snapshot yaml and etags file
etag=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
sha=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
# invalidate access time timer, which is 5minutes, so we re-download
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
# redownload same file with some newlines added
raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-${JSON_VERSION}.yaml list
# snapshot new yaml and etags file
etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
# compare
[ "${etag}" != "${etag2}" ]
[ "${sha}" != "${sha2}" ]
# invalidate access time timer, which is 5minutes, but don't expect a re-download
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
# this time, we expect the same hash and etag
raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-${JSON_VERSION}.yaml list
etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
[ "${etag2}" = "${etag3}" ]
[ "${sha2}" = "${sha3}" ]
# test isolated installs
if [ "${DISTRO}" != "Alpine" ] ; then
eghcup install ghc -i "$(pwd)/isolated" 8.10.5
[ "$(isolated/bin/ghc --numeric-version)" = "8.10.5" ]
! eghcup install ghc -i "$(pwd)/isolated" 8.10.5
if [ "${ARCH}" = "64" ] ; then
if [ "${OS}" = "Linux" ] || [ "${OS}" = "Windows" ] ; then
eghcup install cabal -i "$(pwd)/isolated" 3.4.0.0
[ "$(isolated/cabal --numeric-version)" = "3.4.0.0" ]
eghcup install stack -i "$(pwd)/isolated" 2.7.3
[ "$(isolated/stack --numeric-version)" = "2.7.3" ]
eghcup install hls -i "$(pwd)/isolated" 1.3.0
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0" ] ||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0.0" ]
# test that isolated installs don't clean up target directory
cat <<EOF > "${GHCUP_BIN}/gmake"
#!/bin/bash
exit 1
EOF
chmod +x "${GHCUP_BIN}/gmake"
mkdir isolated_tainted/
touch isolated_tainted/lol
! eghcup install ghc -i "$(pwd)/isolated_tainted" 8.10.5 --force
[ -e "$(pwd)/isolated_tainted/lol" ]
rm "${GHCUP_BIN}/gmake"
fi
fi
fi
eghcup upgrade
eghcup upgrade -f
# restore old ghcup, because we want to test nuke
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
chmod +x "$GHCUP_BIN/ghcup${ext}"
# test that doing fishy symlinks into GHCup dir doesn't cause weird stuff on 'ghcup nuke'
mkdir no_nuke/
mkdir no_nuke/bar
echo 'foo' > no_nuke/file
echo 'bar' > no_nuke/bar/file
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/cache/no_nuke
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/logs/no_nuke
# nuke
eghcup nuke
[ ! -e "${GHCUP_DIR}" ]
# make sure nuke doesn't resolve symlinks
[ -e "$CI_PROJECT_DIR"/no_nuke/file ]
[ -e "$CI_PROJECT_DIR"/no_nuke/bar/file ]

60
.github/workflows/bootstrap.yaml vendored Normal file
View File

@ -0,0 +1,60 @@
name: Bootstrap tests
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
jobs:
bootstrap:
name: bootstrap
runs-on: ${{ matrix.os }}
env:
BOOTSTRAP_HASKELL_CABAL_VERSION: 3.6.2.0
BOOTSTRAP_HASKELL_GHC_VERSION: 8.10.7
BOOTSTRAP_HASKELL_NONINTERACTIVE: yes
ARCH: 64
JSON_VERSION: "0.0.7"
strategy:
matrix:
include:
- os: ubuntu-latest
DISTRO: Ubuntu
- os: macOS-11
DISTRO: na
- os: windows-latest
DISTRO: na
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'true'
- if: runner.os == 'Linux'
name: Run bootstrap
run: |
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
sh ./.github/scripts/bootstrap.sh
env:
DISTRO: ${{ matrix.DISTRO }}
- if: runner.os == 'macOS'
name: Run bootstrap
run: sh ./.github/scripts/bootstrap.sh
env:
DISTRO: ${{ matrix.DISTRO }}
- if: runner.os == 'Windows'
name: Run bootstrap
run: |
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
$curDir = Get-Location
Write-Host "Current Working Directory: $curDir"
./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir ${GITHUB_WORKSPACE} -BootstrapUrl ("{0}/scripts/bootstrap/bootstrap-haskell" -f $curDir) -InBash -Msys2Env "MINGW64"
shell: pwsh

39
.github/workflows/cabal.project.yaml vendored Normal file
View File

@ -0,0 +1,39 @@
name: Test cabal.project files
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
schedule:
- cron: '0 2 * * *'
jobs:
build:
name: Build binary
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macOS-latest, macOS-11, windows-latest, ubuntu-latest]
ghc: ["8.10.7", "9.0.2", "9.2.8", "9.4.8"]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Run build
run: |
env
ghcup --version
ghcup run -i --cabal latest -- cabal update
ghcup run -i --cabal latest --ghc ${GHC_VER} -- cabal build --project-file=cabal.ghc${GHC_VER//./}.project
env:
GHC_VER: ${{ matrix.ghc }}
shell: bash

37
.github/workflows/cache.yaml vendored Normal file
View File

@ -0,0 +1,37 @@
name: Cache eviction
on:
workflow_dispatch:
inputs:
key:
description: Which cache to evict
required: true
default: '/'
type: choice
options:
- FreeBSD-64-na
- Linux-32-Alpine
- Linux-64-Alpine
- Linux-64-Ubuntu
- Linux-ARM-Ubuntu
- Linux-ARM64-Ubuntu
- Windows-64-na
- macOS-64-na
- macOS-ARM64-na
- /
jobs:
evict:
runs-on: ubuntu-latest
steps:
- name: Remove from S3
uses: vitorsgomes/s3-rm-action@master
with:
args: --recursive
env:
AWS_S3_ENDPOINT: https://${{ secrets.S3_HOST }}
AWS_S3_BUCKET: ghcup-hs
AWS_REGION: us-west-2
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
PATH_TO_DELETE: ${{ github.event.inputs.key }}

147
.github/workflows/cross.yaml vendored Normal file
View File

@ -0,0 +1,147 @@
name: Test cross bindists
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
schedule:
- cron: '0 2 * * *'
env:
CABAL_CACHE_DISABLE: ${{ vars.CABAL_CACHE_DISABLE }}
CABAL_CACHE_NONFATAL: yes
jobs:
build:
name: Build linux binary
runs-on: [self-hosted, Linux, X64, maerwald]
env:
CABAL_VER: 3.10.3.0
JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 8.10.7
ARCH: 64
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Run build
uses: docker://hasufell/alpine-haskell:3.12
with:
args: sh .github/scripts/build.sh
env:
ARTIFACT: ${{ env.ARTIFACT }}
ARCH: ${{ env.ARCH }}
GHC_VER: ${{ env.GHC_VER }}
DISTRO: Alpine
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
- if: always()
name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: artifacts
path: |
./out/*
test-cross-linux:
name: Test linux cross
needs: "build"
runs-on: [self-hosted, Linux, X64]
container:
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
options: --user root
env:
CABAL_VER: 3.10.3.0
BUILD_CONF_ARGS: "--enable-unregisterised"
HADRIAN_FLAVOUR: ""
JSON_VERSION: "0.0.8"
GHC_VER: 8.10.6
GHC_TARGET_VERSION: "8.10.7"
ARCH: 64
DISTRO: Debian
ARTIFACT: "x86_64-linux-ghcup"
CROSS: "arm-linux-gnueabihf"
WRAPPER: "run"
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v4
with:
name: artifacts
path: ./out
- name: Run test (64 bit linux)
run: |
sudo apt-get update -y
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip libstdc++-11-dev
sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
sudo dpkg --add-architecture armhf
sudo apt-get update -y
sudo apt-get install -y libncurses-dev:armhf libstdc++-11-dev:armhf
# ld.bfd is broken on armv7: https://sourceware.org/bugzilla/show_bug.cgi?id=16177
update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.gold" 20
update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.bfd" 10
update-alternatives --set "ld" "/usr/bin/x86_64-linux-gnu-ld.gold"
update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold" 20
update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.bfd" 10
update-alternatives --set "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold"
sh .github/scripts/cross.sh
test-cross-js:
name: Test GHC JS cross
needs: "build"
runs-on: [self-hosted, Linux, X64]
container:
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
options: --user root
env:
CABAL_VER: 3.10.3.0
BUILD_CONF_ARGS: ""
HADRIAN_FLAVOUR: "default+native_bignum"
JSON_VERSION: "0.0.8"
GHC_VER: 9.6.2
GHC_TARGET_VERSION: "9.6.2"
ARCH: 64
DISTRO: Debian
ARTIFACT: "x86_64-linux-ghcup"
CROSS: "javascript-unknown-ghcjs"
WRAPPER: "emconfigure"
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v4
with:
name: artifacts
path: ./out
- name: Run test (64 bit linux)
run: |
sudo apt-get update -y
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
. ./emsdk_env.sh
cd ..
bash .github/scripts/cross.sh

127
.github/workflows/docker.yaml vendored Normal file
View File

@ -0,0 +1,127 @@
name: Docker image builds
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
jobs:
docker-alpine32:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push (alpine 32bit)
uses: docker/build-push-action@v3
with:
context: ./docker/alpine32
push: true
tags: hasufell/i386-alpine-haskell:3.12
platforms: |
linux/i386
linux/amd64
docker-alpine:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push (alpine 64bit)
uses: docker/build-push-action@v3
with:
context: ./docker/alpine64
push: true
tags: hasufell/alpine-haskell:3.12
platforms: linux/amd64
docker-arm32:
runs-on: [self-hosted, Linux, ARM64]
steps:
- uses: docker://arm64v8/ubuntu:focal
name: Cleanup (aarch64 linux)
continue-on-error: true
with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push (debian buster)
uses: docker/build-push-action@v3
with:
context: ./docker/arm32v7/buster
push: true
tags: hasufell/arm32v7-debian-haskell:10
platforms: linux/arm
- name: Build and push (ubuntu focal)
uses: docker/build-push-action@v3
with:
context: ./docker/arm32v7/focal
push: true
tags: hasufell/arm32v7-ubuntu-haskell:focal
platforms: linux/arm
docker-aarch:
runs-on: [self-hosted, Linux, ARM64]
steps:
- uses: docker://arm64v8/ubuntu:focal
name: Cleanup (aarch64 linux)
continue-on-error: true
with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push (debian buster)
uses: docker/build-push-action@v3
with:
context: ./docker/arm64v8/buster
push: true
tags: hasufell/arm64v8-debian-haskell:10
platforms: linux/arm64
- name: Build and push (ubuntu focal)
uses: docker/build-push-action@v3
with:
context: ./docker/arm64v8/focal
push: true
tags: hasufell/arm64v8-ubuntu-haskell:focal
platforms: linux/arm64

26
.github/workflows/hlint.yaml vendored Normal file
View File

@ -0,0 +1,26 @@
name: Hlint
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
jobs:
hlint:
name: hlint
runs-on: ubuntu-latest
env:
JSON_VERSION: "0.0.7"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'true'
- name: Run hlint
run: curl -sSL https://raw.github.com/ndmitchell/hlint/master/misc/run.sh | sh -s -- -r lib/ test/

33
.github/workflows/mkdocs.yaml vendored Normal file
View File

@ -0,0 +1,33 @@
name: MkDocs
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
jobs:
mkdocs:
name: mkdocs
runs-on: ubuntu-latest
env:
JSON_VERSION: "0.0.7"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'true'
- name: Install mkdocs deps
run: |
sudo apt-get update -y
sudo apt-get install -y python3-pip
sudo pip3 install mkdocs
- name: Run mkdocs
run: |
mkdocs build

581
.github/workflows/release.yaml vendored Normal file
View File

@ -0,0 +1,581 @@
name: Build and release
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
schedule:
- cron: '0 2 * * *'
env:
CABAL_CACHE_DISABLE: ${{ vars.CABAL_CACHE_DISABLE }}
CABAL_CACHE_NONFATAL: yes
jobs:
build-linux:
name: Build linux binary
runs-on: ${{ matrix.os }}
env:
CABAL_VER: 3.10.2.0
JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-latest
ARTIFACT: "i386-linux-ghcup"
GHC_VER: 8.10.7
ARCH: 32
- os: ubuntu-latest
ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 9.4.8
ARCH: 64
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- if: matrix.ARCH == '32'
name: Run build (32 bit linux)
uses: docker://hasufell/i386-alpine-haskell:3.12
with:
args: sh .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: Alpine
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
- if: matrix.ARCH == '64'
name: Run build (64 bit linux)
uses: docker://hasufell/alpine-haskell:3.12
with:
args: sh .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: Alpine
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
- if: always()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: artifacts
path: |
./out/*
build-arm:
name: Build ARM binary
runs-on: ${{ matrix.os }}
env:
CABAL_VER: 3.6.2.0
JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
strategy:
fail-fast: true
matrix:
include:
- os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "armv7-linux-ghcup"
GHC_VER: 9.2.8
ARCH: ARM
- os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "aarch64-linux-ghcup"
GHC_VER: 9.4.8
ARCH: ARM64
steps:
- name: git config
run: |
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
shell: bash
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- if: matrix.ARCH == 'ARM'
uses: docker://hasufell/arm32v7-debian-haskell:10
name: Run build (armv7 linux)
with:
args: sh .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: Ubuntu
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
LD: ld.gold
- if: matrix.ARCH == 'ARM64'
uses: docker://hasufell/arm64v8-debian-haskell:10
name: Run build (aarch64 linux)
with:
args: sh .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: Ubuntu
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
- if: always()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: artifacts
path: |
./out/*
build-macwin:
name: Build binary (Mac/Win)
runs-on: ${{ matrix.os }}
env:
CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
strategy:
fail-fast: false
matrix:
include:
- os: [self-hosted, macOS, ARM64]
ARTIFACT: "aarch64-apple-darwin-ghcup"
GHC_VER: 9.4.8
ARCH: ARM64
- os: macOS-11
ARTIFACT: "x86_64-apple-darwin-ghcup"
GHC_VER: 9.4.8
ARCH: 64
- os: windows-latest
ARTIFACT: "x86_64-mingw64-ghcup"
GHC_VER: 9.4.8
ARCH: 64
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- if: matrix.ARCH == 'ARM64' && runner.os == 'macOS'
name: Run build
run: |
bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH"
export CC="$HOME/.brew/opt/llvm@13/bin/clang"
export CXX="$HOME/.brew/opt/llvm@13/bin/clang++"
export LD=ld
export AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar"
export RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib"
bash .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: na
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
- if: matrix.ARCH == '64' && runner.os == 'macOS'
name: Run build (windows/mac)
run: |
bash .github/scripts/brew.sh coreutils
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
bash .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: na
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
- if: runner.os == 'Windows'
name: Run build (windows/mac)
run: |
bash .github/scripts/brew.sh git coreutils autoconf automake
bash .github/scripts/build.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: na
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ env.S3_HOST }}
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
- if: always()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: artifacts
path: |
./out/*
build-freebsd:
name: Build binary (FreeBSD)
runs-on: [self-hosted, FreeBSD, X64]
env:
CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: na
RUNNER_OS: FreeBSD
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Run build
run: |
sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 libiconv
tzsetup Etc/GMT
adjkerntz -a
bash .github/scripts/build.sh
- if: always()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: artifacts
path: |
./out/*
test-linux:
name: Test linux
needs: "build-linux"
runs-on: ${{ matrix.os }}
env:
CABAL_VER: 3.10.2.0
JSON_VERSION: "0.0.8"
strategy:
matrix:
include:
- os: ubuntu-latest
ARTIFACT: "i386-linux-ghcup"
GHC_VER: 8.10.7
ARCH: 32
DISTRO: Alpine
- os: ubuntu-latest
ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: Alpine
- os: ubuntu-latest
ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: Ubuntu
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- if: matrix.ARCH == '32' && matrix.DISTRO == 'Alpine'
name: Run test (32 bit linux Alpine)
uses: docker://hasufell/i386-alpine-haskell:3.12
with:
args: sh .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: ${{ matrix.DISTRO }}
- if: matrix.ARCH == '64' && matrix.DISTRO == 'Alpine'
name: Run test (64 bit linux Alpine)
uses: docker://hasufell/alpine-haskell:3.12
with:
args: sh .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: ${{ matrix.DISTRO }}
- if: matrix.DISTRO != 'Alpine'
name: Run test (64 bit linux)
run: |
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
sh .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: ${{ matrix.DISTRO }}
- if: failure()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: testfiles
path: |
./test/ghcup-test/golden/unix/GHCupInfo*json
test-arm:
name: Test ARM
needs: "build-arm"
runs-on: ${{ matrix.os }}
env:
CABAL_VER: 3.6.2.0
JSON_VERSION: "0.0.8"
strategy:
matrix:
include:
- os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "armv7-linux-ghcup"
GHC_VER: 9.2.8
ARCH: ARM
DISTRO: Ubuntu
- os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "aarch64-linux-ghcup"
GHC_VER: 9.4.8
ARCH: ARM64
DISTRO: Ubuntu
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- if: matrix.ARCH == 'ARM'
uses: docker://hasufell/arm32v7-debian-haskell:10
name: Run test (armv7 linux)
with:
args: sh .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: Ubuntu
LD: ld.gold
- if: matrix.ARCH == 'ARM64'
uses: docker://hasufell/arm64v8-debian-haskell:10
name: Run test (aarch64 linux)
with:
args: sh .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: Ubuntu
- if: failure()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: testfiles
path: |
./test/ghcup-test/golden/unix/GHCupInfo*json
test-macwin:
name: Test Mac/Win
needs: "build-macwin"
runs-on: ${{ matrix.os }}
env:
CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.8"
strategy:
matrix:
include:
- os: [self-hosted, macOS, ARM64]
ARTIFACT: "aarch64-apple-darwin-ghcup"
GHC_VER: 9.4.8
ARCH: ARM64
DISTRO: na
- os: macOS-11
ARTIFACT: "x86_64-apple-darwin-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: na
- os: windows-latest
ARTIFACT: "x86_64-mingw64-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: na
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- if: runner.os == 'macOS'
name: Run test
run: |
bash .github/scripts/brew.sh coreutils
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
bash .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: ${{ matrix.DISTRO }}
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
- if: runner.os != 'macOS'
name: Run test
run: bash .github/scripts/test.sh
env:
ARTIFACT: ${{ matrix.ARTIFACT }}
ARCH: ${{ matrix.ARCH }}
GHC_VER: ${{ matrix.GHC_VER }}
DISTRO: ${{ matrix.DISTRO }}
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
- if: failure() && runner.os == 'Windows'
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: testfiles
path: |
./test/ghcup-test/golden/windows/GHCupInfo*json
- if: failure() && runner.os != 'Windows'
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: testfiles
path: |
./test/ghcup-test/golden/unix/GHCupInfo*json
test-freebsd:
name: Test FreeBSD
needs: "build-freebsd"
runs-on: [self-hosted, FreeBSD, X64]
env:
CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.8"
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: na
RUNNER_OS: FreeBSD
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- name: Run test
run: |
bash .github/scripts/test.sh
- if: failure()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: testfiles
path: |
./test/ghcup-test/golden/unix/GHCupInfo*json
hls:
name: hls
needs: build-linux
runs-on: ubuntu-latest
env:
GHC_VERSION: "8.10.7"
HLS_TARGET_VERSION: "1.8.0.0"
CABAL_VERSION: "3.8.1.0"
JSON_VERSION: "0.0.8"
ARTIFACT: "x86_64-linux-ghcup"
DISTRO: Ubuntu
ARCH: 64
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- name: Run hls build
run: |
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
sh .github/scripts/hls.sh
release:
name: release
needs: ["test-linux", "test-arm", "test-macwin", "test-freebsd", "hls"]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- name: Release
uses: softprops/action-gh-release@v1
with:
draft: true
files: |
./out/*

28
.github/workflows/shellcheck.yaml vendored Normal file
View File

@ -0,0 +1,28 @@
name: Shellcheck
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
jobs:
shellcheck:
name: shellcheck
runs-on: ubuntu-latest
env:
JSON_VERSION: "0.0.7"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'true'
- name: Run shellcheck
uses: docker://koalaman/shellcheck-alpine
with:
args: shellcheck scripts/bootstrap/bootstrap-haskell

29
.github/workflows/shimgen.yaml vendored Normal file
View File

@ -0,0 +1,29 @@
name: Shimgen CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build-shimgen:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
steps:
- uses: actions/checkout@v2
- uses: ilammy/msvc-dev-cmd@v1
- name: compile
run: cl /O1 scoop-better-shimexe/shim.c
- uses: actions/upload-artifact@v2
with:
name: shim.exe
path: shim.exe

35
.github/workflows/stack.yaml vendored Normal file
View File

@ -0,0 +1,35 @@
name: Test stack.yaml
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
schedule:
- cron: '0 2 * * *'
jobs:
build:
name: Build binary
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macOS-latest, macOS-11, windows-latest, ubuntu-latest]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Run build
run: |
env
ghcup --version
ghcup run -i --stack latest -- stack build
shell: bash

16
.gitignore vendored
View File

@ -1,2 +1,18 @@
.ghci
.vim
codex.tags
dist-newstyle/
cabal.project.local
.stack-work/
.hiefiles/
bin/
/*.prof
/*.ps
/*.hp
tags
TAGS
/tmp/
.entangled
release/
releases/
site/

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "data/metadata"]
path = data/metadata
url = https://github.com/haskell/ghcup-metadata.git
branch = develop

84
.hlint.yaml Normal file
View File

@ -0,0 +1,84 @@
# HLint configuration file
# https://github.com/ndmitchell/hlint
##########################
# This file contains a template configuration file, which is typically
# placed as .hlint.yaml in the root of your project
# Warnings currently triggered by your code
- ignore: {name: "Redundant bang pattern"}
- ignore: {name: "Use camelCase"}
- ignore: {name: "Use if"}
- ignore: {name: "Use newtype instead of data"}
- ignore: {name: "Use <$>"}
- ignore: {name: "Use mapMaybe"}
- ignore: {name: "Use const"}
- ignore: {name: "Use list comprehension"}
- ignore: {name: "Redundant multi-way if"}
- ignore: {name: "Redundant lambda"}
- ignore: {name: "Avoid lambda"}
- ignore: {name: "Use uncurry"}
- ignore: {name: "Use replicateM"}
- ignore: {name: "Use unless"}
- ignore: {name: "Redundant irrefutable pattern"}
# Specify additional command line arguments
#
# - arguments: [--color, --cpp-simple, -XQuasiQuotes]
# Control which extensions/flags/modules/functions can be used
#
# - extensions:
# - default: false # all extension are banned by default
# - name: [PatternGuards, ViewPatterns] # only these listed extensions can be used
# - {name: CPP, within: CrossPlatform} # CPP can only be used in a given module
#
# - flags:
# - {name: -w, within: []} # -w is allowed nowhere
#
# - modules:
# - {name: [Data.Set, Data.HashSet], as: Set} # if you import Data.Set qualified, it must be as 'Set'
# - {name: Control.Arrow, within: []} # Certain modules are banned entirely
#
# - functions:
# - {name: unsafePerformIO, within: []} # unsafePerformIO can only appear in no modules
# Add custom hints for this project
#
# Will suggest replacing "wibbleMany [myvar]" with "wibbleOne myvar"
# - error: {lhs: "wibbleMany [x]", rhs: wibbleOne x}
# The hints are named by the string they display in warning messages.
# For example, if you see a warning starting like
#
# Main.hs:116:51: Warning: Redundant ==
#
# You can refer to that hint with `{name: Redundant ==}` (see below).
# Turn on hints that are off by default
#
# Ban "module X(module X) where", to require a real export list
# - warn: {name: Use explicit module export list}
#
# Replace a $ b $ c with a . b $ c
# - group: {name: dollar, enabled: true}
#
# Generalise map to fmap, ++ to <>
# - group: {name: generalise, enabled: true}
# Ignore some builtin hints
# - ignore: {name: Use let}
# - ignore: {name: Use const, within: SpecialModule} # Only within certain modules
# Define some custom infix operators
# - fixity: infixr 3 ~^#^~
# To generate a suitable file for HLint do:
# $ hlint --default > .hlint.yaml

View File

@ -1,5 +1,402 @@
# Revision history for ghcup
## 0.1.0.0 -- YYYY-mm-dd
## 0.1.22.0 -- 2024-03-13
### New features
* A help screen/tutorial in the TUI by @lsmor (Luis Morillo)
* Beef up `--overwrite-version`, fixes [#998](https://github.com/haskell/ghcup-hs/issues/998)
* e.g. `ghcup compile hls -g master --overwrite-version='%v-%h' --ghc 9.4.8` will produce a binary called `haskell-language-server-wrapper-<version-from-cabal-file>-<short-git-commit-hash>`... refer to `ghcup compile hls --help` for more information
* Allow to set ghcup msys2 environment wrt [#982](https://github.com/haskell/ghcup-hs/issues/982)
* Add mechanism to warn on new metadata versions, fixes [#860](https://github.com/haskell/ghcup-hs/issues/860)
* Add pre-install message support via ghcup metadata, wrt [#1016](https://github.com/haskell/ghcup-hs/issues/1016)
* Allow to remove all unset versions, fixes [#1019](https://github.com/haskell/ghcup-hs/issues/1019)
* e.g.: `ghcup gc --unset`
### Improvements and bug fixes
* Fix potential [HSEC-2024-0002](https://haskell.github.io/security-advisories/advisory/HSEC-2024-0002.html)
* Fix TUI crash in windows terminal 1.19 [#1013](https://github.com/haskell/ghcup-hs/issues/1013)
* Clean up on git clone errors, fixes [#1004](https://github.com/haskell/ghcup-hs/issues/1004)
* Error out on empty UserSettings wrt [#922](https://github.com/haskell/ghcup-hs/issues/922)
* Fix failure mode when metadata is garbage, fixes [#921](https://github.com/haskell/ghcup-hs/issues/921)
* Be less confusing when user tries to 'set' ghcup in TUI, fixes [#923](https://github.com/haskell/ghcup-hs/issues/923)
* Fix prefetch for cross bindists
* Fix misinterpretation of '+' in URI paths, fixes [#408](https://github.com/haskell/ghcup-hs/issues/408)
* Stricter (and better) file uri handling
* Set LD=ld.bfd on Alpine linux during bindist configure
* Add rocky/void detection
* Logging improvements
* Remove the "show all tool" config in the TUI
* Fix opening changelog on windows
* Don't remove share dir link prematurely
* Require user to explicitly choose subcommand for 'ghcup config'
* Don't download twice when trying stack decoding
### Refactoring and maintenance
* Large TUI code cleanup by @lsmor (Luis Morillo)... more coming up soon
* Allow building with `tar` instead of `libarchive` (mainly to make contributions easier)
## 0.1.20.0 -- 2023-11-10
### New features
* support TUI on windows thanks to the work from vty and brick maintainers (Chris Hackett, Timofey Zakrevskiy, Jonathan Daugherty, ...), wrt [#912](https://github.com/haskell/ghcup-hs/pull/912)
* support JS and wasm cross compilers wrt [#838](https://github.com/haskell/ghcup-hs/issues/838), thanks to Sylvain Henry and IOG
* Support stacks installation strategy and metadata wrt [#892](https://github.com/haskell/ghcup-hs/issues/892)
- you can now enable stacks installation method via `ghcup config set url-source '["GHCupURL", "StackSetupURL"]'`... for more information, check the [documentation](https://www.haskell.org/ghcup/guide/#using-stacks-setup-info-metadata-to-install-ghc)
### Improvements and bug fixes
* fix segfault in TUI when hitting enter early wrt [#887](https://github.com/haskell/ghcup-hs/issues/887)
* Improve key handling in TUI, fixes [#875](https://github.com/haskell/ghcup-hs/issues/875)
* add explicit support for Void Linux and Rocky Linux (this requires a metadata version bump to `ghcup-0.0.8.yaml`)
* optparse cli interface now has a test suite thanks to Lei Zhu, wrt [#862](https://github.com/haskell/ghcup-hs/pull/862)
## 0.1.19.4 -- 2023-7-02
* fix missing TUI for aarch64 linux binaries
## 0.1.19.3 -- 2023-6-29
* Implement support for nightlies, wrt [#824](https://github.com/haskell/ghcup-hs/issues/824)
* Fix GC with XDG dirs, fixes [#810](https://github.com/haskell/ghcup-hs/issues/810)
## 0.1.19.2 -- 2023-2-24
* Follow-up fix for JFS/ReiserFS and other filesystem that don't support `d_type`, fixes [#787](https://github.com/haskell/ghcup-hs/issues/787)
- the previous release had a bug that invalidated that broke it
* Implement 'latest-prerelease' tag wrt [#788](https://github.com/haskell/ghcup-hs/issues/788)
* Fix 'Could not parse version of stray directory.DS_Store' warnings on macOs wrt [#797](https://github.com/haskell/ghcup-hs/issues/797)
## 0.1.19.1 -- 2023-2-19
* Fix GHCup on JFS/ReiserFS and other filesystem that don't support `d_type`, fixes [#766](https://github.com/haskell/ghcup-hs/issues/766)
* Don't fail on setModificationTime, fixes [#784](https://github.com/haskell/ghcup-hs/issues/784) and many GitHub actions issues
* Make armv7/aarch64 linux binaries more portable (built on Debian buster)
* Improve usability on 'ghcup config add-release-channel', fixes [#751](https://github.com/haskell/ghcup-hs/issues/751)
* Make version shortcuts work with 'ghcup set', fixes [#757](https://github.com/haskell/ghcup-hs/issues/757)
* Don't implicitly smuggle in config options in `ghcup config set` wrt [#775](https://github.com/haskell/ghcup-hs/issues/775)
* Fix build on unix with -ftui
## 0.1.19.0 -- 2023-1-13
* restore proper support for FreeBSD and Linux armv7
* integrate with [errors.haskell.org](https://errors.haskell.org/index.html), wrt [#434](https://github.com/haskell/ghcup-hs/issues/434)
* allow to overwrite distro detection via config wrt [#421](https://github.com/haskell/ghcup-hs/issues/421)
- this is particularly useful for e.g. Ubuntu derivates, where ghcup doesn't pick the optimal bindist, also see the [GHCup documentation on overriding distro detection](https://www.haskell.org/ghcup/guide/#overriding-distro-detection)
* Add proper support for mirrors wrt [#357](https://github.com/haskell/ghcup-hs/issues/357)
* fix a (harmless) bug in `ghcup nuke` on windows
* improvements to `ghcup add-release-channel` wrt [#708](https://github.com/haskell/ghcup-hs/issues/708)
* fix building newer GHC from source wrt [#433](https://github.com/haskell/ghcup-hs/issues/433)
* Fix `ghcup install hls -u` on windows
* Fix failure with `--isolate=dir --force`
* Add `--metadata-fetching-mode` arg, fixes [#440](https://github.com/haskell/ghcup-hs/issues/440)
* Add content-length property to downloads
* [Fix a grave bug on armv7](https://github.com/haskell/ghcup-hs/commit/78ee956df2618862f421178a565c82548ff7e578) during installation wrt [#415](https://github.com/haskell/ghcup-hs/issues/415)
* improve many warning/error messages (contributions by @taylorfausak)
* some minor optimization in `ghcup whereis ghcup`
* improve `--keep=always` to not clean up directories in certain circumstances
## 0.1.18.1 -- 2022-08-06
* fix sdist and unbreak hackage, wrt [#399](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/399)
## 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
* Add `--disable-ld-override` for darwin bindists wrt #391
* Allow passing bindist configure args wrt #377
* 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
* Improve `ghcup compile <hls|ghc>`
- short hashes now work
- print the long hash in addition to the detected version
* Improve `ghcup compile 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`
- Allow to build from arbitrary GHC source dists
## 0.1.17.10 -- 2022-05-12
* windows hotfix (hackage-only release)
## 0.1.17.9 -- 2022-05-12
* broken sdist (hackage-only release)
## 0.1.17.8 -- 2022-05-11
* Fix a serious (but hard to trigger) bug when combining `--isolate <DIR>` with `--force`, please make sure to upgrade or avoid `--force`
* Fix HLS build not cleaning up properly on failed installations, fixes [#361](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/361)
* Fix parsing of symlinks with multiple slashes, wrt [#353](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/353)
* Re-enable upgrade functionality for all configurations wrt [MR #250](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/250) and [VSCode haskell issue #601](https://github.com/haskell/vscode-haskell/issues/601)
* Fix `ghcup run --ghc 8.10` (for short versions) wrt [#360](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/360)
- this also introduces a `--quick` switch for `ghcup run`
## 0.1.17.7 -- 2022-04-21
* Fix `ghcup run` on windows wrt [#345](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/345)
## 0.1.17.6 -- 2022-03-18
* Vastly improve shell completions wrt [#242](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/242)
* Fix 'ghcup install cabal/hls/stack --set' wrt [#324](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/324)
* Fix bad error message wrt [#323](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/323)
* Use predictable /tmp names for `ghcup run`, fixes [#329](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/329)
* Fix bug with isolated installation of not previously installed versions
* Add `--no-set` to install commands, fixes [#330](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/330)
* Fix serious bug in `ghcup list --raw-format -t <tool> -c installed`
* Overhaul metadata merging and add `ghcup config add-release-channel URI` wrt [#328](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/328)
* Fix max path issues on windows with `ghcup run`
## 0.1.17.5 -- 2022-02-26
* Implement `ghcup run` subcommand wrt [#137](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/137)
* Support installation of dynamic HLS bindists wrt [HLS #2675](https://github.com/haskell/haskell-language-server/pull/2675) and [#237](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/237)
* Fix XDG support when `~/.local/bin` is a symlink wrt [#311](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/311)
* Add support for quilt-style patches wrt [#230](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/230), by James Hobson
* Fix redundant upgrade warnings in `ghcup upgrade`
* Fix `ghcup whereis ghc` for non-standard versions wrt [#289](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/289)
* Don't print logs to stdout, but stderr
* Allow unpacking legacy lzma archives wrt [#307](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/307)
* Allow to disable self-upgrade functionality wrt [#305](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/305)
* Fix `ghcup install ghc --set` when ghc is already installed wrt [#291](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/291)
## 0.1.17.4 -- 2021-11-13
* add `--metadata-caching` option, allowing to also disable yaml metadata caching wrt [#278](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/278)
* make upgrading ghcup in TUI more pleasant wrt [#276](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/276)
* fix parsing of atypical GHC versions (e.g. `8.10.5-patch1`)
* fix compiling HLS dynamically linked, also see [#245](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/245)
* redo (and break) some of the `ghcup compile <tool>` interface, improving patch options and setting custom cabal.project files
* avoid redundant update warnings wrt [#283](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/283)
## 0.1.17.3 -- 2021-10-27
* clean up during unpack failures as well
* migrate te aeson-2.0.1.0
* switch to yaml-streamly to fix performance regression wrt [#270](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/270)
* use [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata) for metadata file download (better caching)
## 0.1.17.2 -- 2021-09-30
* Honour GHC bootstrap compiler during git clone stages wrt [#250](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/250)
* Speed up `unset` command
* Fix `--overwrite-version` for `ghcup compile ghc` wrt [#253](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/253)
* Apply patches before bootstrap
## 0.1.17.1 -- 2021-09-26
* Fix `NO_COLOR`
* Fix `ghcup list -t` for hls/stack, wrt [#244](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/244)
* Get rid of concurrent-output
* Improve cli interface with partial versions (e.g. `ghcup install ghc 8`)
* Fix HLS compilation builds
* Implement `ghcup gc` (garbage collection) command
## 0.1.17 -- 2021-09-20
* Add `--force` option to install/compile wrt [#210](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/210) by Arjun Kathuria
* Implement compiling HLS from source wrt [#201](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/201)
* Implement experimental GPG verification of the metadata file (see README) wrt [#263](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/236)
* Add `ghcup unset` command wrt [#145](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/145)
* Add `ghcup whereis bindir` etc wrt [#221](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/221)
* Greatly reduce dependency footprint wrt [#212](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/212)
* Add `ghcup --plan-json`
* Improve `--patchdir` option for GHC compilation wrt [#226](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/226)
* Try to improve logging and failure modes, especially during downloads
* Add descriptive warnings when HLS and GHC versions are incompatible
* Improve curl header parsing wrt [#213](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/213)
## 0.1.16.2 -- 2021-08-12
* Add isolated installations wrt [#141](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/141) by Arjun Kathuria
* Implement config cli MVP wrt [#134](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/134) by Oleksii Dorozhkin
* Fix `ghcup compile ghc --flavor`
* Fix minor installation bug causing increased disk space wrt [#139](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/139)
* Improved error handling wrt [#136](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/136)
* Various improvements to metadata download when using `file://` and `--offline` wrt [#137](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/137)
## 0.1.16.1 -- 2021-07-29
* Add 'nuke' subcommand wrt [#135](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/135), implemented by Arjun Kathuria
* Add uninstallation powershell script on windows wrt [#150](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/150)
* Improve logging
* Fix building GHC cross compiler wrt [#180](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/180)
* Allow to use hadrian as build system (for git based versions only) wrt [#35](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/35)
* Allow passing `--flavor` to `ghcup compile ghc`
* Support new GHC `bin/` directory format wrt [ghc/ghc#20074](https://gitlab.haskell.org/ghc/ghc/-/issues/20074#note_363720)
* Implement `whereis` subcommand wrt [#173](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/173)
* Add `--offline` switch and `prefetch` subcommand wrt [#186](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/186)
* Implement ETAGs hashing for metadata downloads to speed up `ghcup list` wrt [#193](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/193)
* Avoid unnecessary fetching of ghcup metadata in some commands
* Avoid unnecessary update checks for some commands
* Preserve mtimes on unpacked GHC tarballs on windows wrt [#187](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/187), fixing issues with `ghc-pkg`
* Fix lesser bug in `ghcup list` for stray stack versions wrt [#183](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/183)
* Major redo on how file removal on windows works, avoiding partial removals etc, wrt [#165](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/165)
* Improve ghcup tui for screen readers wrt [github/#4](https://github.com/haskell/ghcup-hs/pull/4), thanks to Mario Lang
## 0.1.15.2 -- 2021-06-13
* Remove legacy handling of cabal binary and be more graceful about binaries not installed by ghcup (e.g. stack)
* Fix GHC compilation from git
* Fix 'ghcup upgrade' on windows
* Allow to skip update checks via `GHCUP_SKIP_UPDATE_CHECK`
* Use libarchive on windows as well, fixing unpack errors wrt [#147](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/147)
## 0.1.15.1 -- 2021-06-11
* Add Apple Silicon support
* Add windows support wrt [#130](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/130)
* Add stack support
* Warn when /tmp doesn't have 5GB or more of disk space
* Allow to compile GHC from git repo wrt [#126](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/126)
* Allow to set custom ghc version when running 'ghcup compile ghc' wrt [#136](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/136)
* Add date to GHC bindist names created by ghcup
## 0.1.14.2 -- 2021-05-12
* Remove dead dependency on ascii-string
## 0.1.14.1 -- 2021-04-11
* Make internal symlink target parser more lax, fixes [#119](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/119)
* Prepare for hackage release
## 0.1.14 -- 2021-03-07
* Major bugfix: fix handling of stray versions wrt [#116](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/116)
* Fix error messages and overhaul pretty printing wrt [#115](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/115)
## 0.1.13 -- 2021-02-26
* Support ARMv7/AARCH64
* Add command line completions for installed and available versions wrt [MR #70](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/70)
* Allow to cycle through set tools wrt [#114](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/114)
* Fix item selection with unavailable versions wrt [#107](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/107)
* Allow for dynamic post-install, post-remove and pre-compile msgs wrt [MR #68](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/68)
* Alert user if upgraded ghcup is shadowed by old ghcup wrt [#111](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/111)
* Fix to `ghcup` directory creation and placement for the XDG install mode ([MR #49](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/49))
* Do 755 permissions on executables, wrt #97
* Add [NO_COLOR](https://no-color.org/) support wrt [MR #47](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/47)
## 0.1.12 -- 2020-11-21
* Fix disappearing HLS symlinks wrt #91
* improve TUI:
- separators between tools sections
- reverse list order so latest is on top
- expand the blues selected bar
- show new latest versions in bright white
* allow configuration file and setting TUI hotkeys wrt #41
- see https://gitlab.haskell.org/haskell/ghcup-hs#configuration for a more in-depth explanation
* add a `--set` switch to `ghcup install ghc` to automatically set as default after install
* emit warnings when CC/LD is set wrt #82
* add support for version ranges in distro specifiers wrt #84
- e.g. `"(>= 19 && <= 20) || ==0.2.2"` is a valid version key for distro
## 0.1.11 -- 2020-09-23
* Add support for installing haskell-language-server, wrt #65
* When compiling GHC from source create a bindist first, store that bindist in `~/.ghcup/cache` and install it, wrt #51
* Allow to compile over existing version (`ghcup compile ghc -v 8.6.5 -b 8.6.5`) and replace it wrt #59
* simplify installing from custom bindist wrt #60
- `ghcup install ghc -u <url> <version>`
* fix bug when cabal isn't marked executable in bindist
* fix bug when `~/.ghcup` is a valid symlink wrt #49
* Drop support for compiling cabal from source (the old bootstrap script is discontinued)
## 0.1.10 -- 2020-08-14
* Show stray Cabals (useful for pre-releases or compiled ones)
## 0.1.9 -- 2020-08-14
* Fix bug when uninstalling all cabal versions
* Fix bug when setting a non-installed ghc version as current default
* Use yaml instead of generated json for download info for ease of adding new GHC versions #44
* Allow pre-release versions of GHC/cabal
* Add XDG dirs support (set `GHCUP_USE_XDG_DIRS`) wrt #39
* Allow to specify regex for tarball subdir (e.g. `ghc-.*`)
* Allow installing arbitrary bindists more seamlessly:
- e.g. installing GHC HEAD: `ghcup -n install ghc -u '{"dlHash": "", "dlSubdir": { "RegexDir": "ghc-.*"}, "dlUri": "https://gitlab.haskell.org/api/v4/projects/1/jobs/artifacts/master/raw/ghc-x86_64-fedora27-linux.tar.xz?job=validate-x86_64-linux-fedora27" }' head`
* Avoid duplicate edits to .bashrc/.zshrc wrt #43
## 0.1.8 -- 2020-07-21
* Fix bug in logging thread dying on newlines
* Allow to install from arbitrary bindists: `ghcup -n install ghc -u '{"dlHash": "", "dlSubdir": "ghc-8.10.1", "dlUri": "https://github.com/commercialhaskell/ghc/releases/download/ghc-8.10.1-release/ghc-8.10.1-x86_64-deb9-linux.tar.xz"}' 8.10.1`
## 0.1.7 -- 2020-07-20
* Fix a bug in libarchive not unpacking some uncleanly packed bindists
* Improved fish support in bootstrap-haskell
* Only check for upgrades when not upgrading
* Fix platform detection for i386 docker images
* Improve alpine support
- more/proper bindists
- don't fall back to glibc based bindists
- install bindists with `--disable-ld-override` to avoid ld.gold bugs
## 0.1.6 -- 2020-07-13
* Create a new curses (brick) based TUI, accessible via `ghcup tui` #24
* Support multiple installed versions of cabal #23
* Improvements to `ghcup list` (show unavailable bindists for platform)
* Fix redhat downloads #29
* Support for hadrian bindists (fixes alpine-8.10.1) #31
* Add FreeBSD bindists 8.6.5 and 8.8.3
* Fix memory leak during unpack
## 0.1.5 -- 2020-04-30
* Fix errors when PATH variable contains path components that are actually files
* Add `--version` and `--numeric-version` options
* Add `changelog` command
* Also check for available GHC and Cabal updates on start
* Add base versions as tags for every GHC version (these are "installable" tags and the latest GHC version matching the tag will be picked)
* Added `--format-raw` to list subcommand
* Allow to install X.Y versions (e.g.: ghcup install 8.8)
* Implement `--keep=<always|errors|never>` to control temporary build directories cleanup
* Add proper shell completions to the repo
* Fix building of documentation
* Allow to work in offline mode and use cached files if possible
* Allow to set the downloader via `--downloader=<curl|wget>`
* Support for compiling and installing a cross GHC (see README). This is experimental.
## 0.1.4 -- 2020-04-16
* build on all platforms with curl (as a binary), wrt https://gitlab.haskell.org/haskell/ghcup-hs/issues/6
* Fix unlinking of ghc symlinks after new installation, wrt https://gitlab.haskell.org/haskell/ghcup-hs/issues/7
## 0.1.3 -- 2020-04-15
* Fix lesser bug when skipping ghcup update
## 0.1.2 -- 2020-04-15
* Fix bug when removing the set GHC version
* Fix use of undocumented `GHCUP_INSTALL_BASE_PREFIX` variable
* skip upgrade if ghcup is already latest version
## 0.1.1 -- 2020-04-15
* fix awful fdopendir bug on mac bug by updating hpath-posix
## 0.1.0
* First version. Released on an unsuspecting world.

149
README.md
View File

@ -1,144 +1,13 @@
`ghcup` makes it easy to install specific versions of `ghc` on GNU/Linux,
macOS (aka Darwin) and FreeBSD and can also bootstrap a fresh Haskell developer environment from scratch.
It follows the unix UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well).
## The GHCup Haskell installer
Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
[![Join the chat at Libera.chat](https://img.shields.io/badge/chat-on%20libera%20IRC-brightgreen.svg)](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup)
[![Join the chat at Matrix.org](https://img.shields.io/matrix/haskell-tooling:matrix.org?label=chat%20on%20matrix.org)](https://app.element.io/#/room/#haskell-tooling:matrix.org)
[![Join the chat at Discord](https://img.shields.io/discord/280033776820813825?label=chat%20on%20discord)](https://discord.gg/pKYf3zDQU7)
[![Join the chat at https://gitter.im/haskell/ghcup](https://badges.gitter.im/haskell/ghcup.svg)](https://gitter.im/haskell/ghcup?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
<a href="https://opencollective.com/ghcup#category-CONTRIBUTE"><img src="https://opencollective.com/webpack/donate/button@2x.png?color=blue" alt="Donate" width="150"></a>
*Ubuntu users may prefer [hvr's ppa](https://launchpad.net/~hvr/+archive/ubuntu/ghc).*
GHCup is the main installer for the general purpose language [Haskell](https://www.haskell.org/).
## Table of Contents
* [Installation](#installation)
* [Usage](#usage)
* [Manpages](#manpages)
* [Design goals](#design-goals)
* [How](#how)
* [Known users](#known-users)
* [Known problems](#known-problems)
* [FAQ](#faq)
## Installation
### Simple bootstrap
Follow the instructions at [https://www.haskell.org/ghcup/](https://www.haskell.org/ghcup/)
### Manual install
Download the binary for your platform at [https://github.com/hasufell/ghcup-hs/releases](https://github.com/hasufell/ghcup-hs/releases)
and place it into your `PATH` anywhere.
Then adjust your `PATH` in `~/.bashrc` (or similar, depending on your shell) like so:
```sh
export PATH="$HOME/.cabal/bin:$HOME/.ghcup/bin:$PATH"
```
## Usage
See `ghcup --help`.
Common use cases are:
```sh
# list available ghc/cabal versions
ghcup list
# install the recommended GHC version
ghcup install ghc
# install a specific GHC version
ghcup install ghc -v 8.2.2
# set the currently "active" GHC version
ghcup set -v 8.4.4
# install cabal-install
ghcup install cabal
# update ghcup itself
ghcup upgrade
```
Generally this is meant to be used with [`cabal-install`](https://hackage.haskell.org/package/cabal-install), which
handles your haskell packages and can demand that [a specific version](https://cabal.readthedocs.io/en/latest/nix-local-build.html#cfg-flag---with-compiler) of `ghc` is available, which `ghcup` can do.
### Manpages
For man pages to work you need [man-db](http://man-db.nongnu.org/) as your `man` provider, then issue `man ghc`. Manpages only work for the currently set ghc.
`MANPATH` may be required to be unset.
## Design goals
1. simplicity
2. non-interactive
3. portable (eh)
4. do one thing and do it well (UNIX philosophy)
### Non-goals
1. invoking `sudo`, `apt-get` or *any* package manager
2. handling system packages
3. handling cabal projects
4. being a stack alternative
## How
Installs a specified GHC version into `~/.ghcup/ghc/<ver>`, and places `ghc-<ver>` symlinks in `~/.ghcup/bin/`.
Optionally, an unversioned `ghc` link can point to a default version of your choice.
This uses precompiled GHC binaries that have been compiled on fedora/debian by [upstream GHC](https://www.haskell.org/ghc/download_ghc_8_6_1.html#binaries).
Alternatively, you can also tell it to compile from source (note that this might fail due to missing requirements).
In addition this script can also install `cabal-install`.
## Known users
* [vabal](https://github.com/Franciman/vabal)
## Known problems
### Limited distributions supported
Currently only GNU/Linux distributions compatible with the [upstream GHC](https://www.haskell.org/ghc/download_ghc_8_6_1.html#binaries) binaries are supported.
### Precompiled binaries
Since this uses precompiled binaries you may run into
several problems.
#### Missing libtinfo (ncurses)
You may run into problems with *ncurses* and **missing libtinfo**, in case
your distribution doesn't use the legacy way of building
ncurses and has no compatibility symlinks in place.
Ask your distributor on how to solve this or
try to compile from source via `ghcup compile <version>`.
#### Libnuma required
This was a [bug](https://ghc.haskell.org/trac/ghc/ticket/15688) in the build system of some GHC versions that lead to
unconditionally enabled libnuma support. To mitigate this you might have to install the libnuma
package of your distribution. See [here](https://gitlab.haskell.org/haskell/ghcup/issues/58) for a discussion.
### Compilation
Although this script can compile GHC for you, it's just a very thin
wrapper around the build system. It makes no effort in trying
to figure out whether you have the correct toolchain and
the correct dependencies. Refer to [the official docs](https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Linux)
on how to prepare your environment for building GHC.
## FAQ
1. Why reimplement stack?
ghcup is not a reimplementation of stack. The only common part is automatic installation of GHC, but even that differs in scope and design.
2. Why not support windows?
Consider using [Chocolatey](https://chocolatey.org/search?q=ghc) or [ghcups](https://github.com/kakkun61/ghcups).
Visit the [documentation](https://www.haskell.org/ghcup/) for installation instructions.
If you're looking for the metadata YAML files, see here: [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata)

File diff suppressed because it is too large Load Diff

View File

@ -1,164 +0,0 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE DuplicateRecordFields #-}
module Main where
import GHCup.Types.JSON ( )
import GHCup.Utils.Logger
import GHCupDownloads
import Data.Aeson ( eitherDecode )
import Data.Aeson.Encode.Pretty
import Data.Semigroup ( (<>) )
import Options.Applicative hiding ( style )
import System.Console.Pretty
import System.Exit
import System.IO ( stdout )
import Validate
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
data Options = Options
{ optCommand :: Command
}
data Command = GenJSON GenJSONOpts
| ValidateJSON ValidateJSONOpts
| ValidateTarballs ValidateJSONOpts
data Output
= FileOutput FilePath -- optsparse-applicative doesn't handle ByteString correctly anyway
| StdOutput
fileOutput :: Parser Output
fileOutput =
FileOutput
<$> (strOption
(long "file" <> short 'f' <> metavar "FILENAME" <> help
"Output to a file"
)
)
stdOutput :: Parser Output
stdOutput = flag'
StdOutput
(short 'o' <> long "stdout" <> help "Print to stdout (default)")
outputP :: Parser Output
outputP = fileOutput <|> stdOutput
data GenJSONOpts = GenJSONOpts
{ output :: Maybe Output
}
genJSONOpts :: Parser GenJSONOpts
genJSONOpts = GenJSONOpts <$> optional outputP
data Input
= FileInput FilePath -- optsparse-applicative doesn't handle ByteString correctly anyway
| StdInput
fileInput :: Parser Input
fileInput =
FileInput
<$> (strOption
(long "file" <> short 'f' <> metavar "FILENAME" <> help
"Input file to validate"
)
)
stdInput :: Parser Input
stdInput = flag'
StdInput
(short 'i' <> long "stdin" <> help "Validate from stdin (default)")
inputP :: Parser Input
inputP = fileInput <|> stdInput
data ValidateJSONOpts = ValidateJSONOpts
{ input :: Maybe Input
}
validateJSONOpts :: Parser ValidateJSONOpts
validateJSONOpts = ValidateJSONOpts <$> optional inputP
opts :: Parser Options
opts = Options <$> com
com :: Parser Command
com = subparser
( (command
"gen"
( GenJSON
<$> (info (genJSONOpts <**> helper)
(progDesc "Generate the json downloads file")
)
)
)
<> (command
"check"
( ValidateJSON
<$> (info (validateJSONOpts <**> helper)
(progDesc "Validate the JSON")
)
)
)
<> (command
"check-tarballs"
( ValidateTarballs
<$> (info
(validateJSONOpts <**> helper)
(progDesc "Validate all tarballs (download and checksum)")
)
)
)
)
main :: IO ()
main = do
customExecParser (prefs showHelpOnError) (info (opts <**> helper) idm)
>>= \Options {..} -> case optCommand of
GenJSON gopts -> do
let
bs = encodePretty' (defConfig { confIndent = Spaces 2 })
ghcupDownloads
case gopts of
GenJSONOpts { output = Nothing } -> L.hPutStr stdout bs
GenJSONOpts { output = Just StdOutput } -> L.hPutStr stdout bs
GenJSONOpts { output = Just (FileOutput file) } ->
L.writeFile file bs
ValidateJSON vopts -> case vopts of
ValidateJSONOpts { input = Nothing } ->
L.getContents >>= valAndExit validate
ValidateJSONOpts { input = Just StdInput } ->
L.getContents >>= valAndExit validate
ValidateJSONOpts { input = Just (FileInput file) } ->
L.readFile file >>= valAndExit validate
ValidateTarballs vopts -> case vopts of
ValidateJSONOpts { input = Nothing } ->
L.getContents >>= valAndExit validateTarballs
ValidateJSONOpts { input = Just StdInput } ->
L.getContents >>= valAndExit validateTarballs
ValidateJSONOpts { input = Just (FileInput file) } ->
L.readFile file >>= valAndExit validateTarballs
pure ()
where
valAndExit f contents = do
av <- case eitherDecode contents of
Right r -> pure r
Left e -> die (color Red $ show e)
myLoggerT (LoggerConfig True (B.hPut stdout) (\_ -> pure ())) (f av)
>>= exitWith

View File

@ -1,181 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE QuasiQuotes #-}
module Validate where
import GHCup
import GHCup.Download
import GHCup.Types
import GHCup.Utils.Logger
import Control.Exception.Safe
import Control.Monad
import Control.Monad.IO.Class
import Control.Monad.Logger
import Control.Monad.Reader.Class
import Control.Monad.Trans.Class ( lift )
import Control.Monad.Trans.Reader ( runReaderT )
import Control.Monad.Trans.Resource ( runResourceT
, MonadUnliftIO
)
import Data.IORef
import Data.List
import Data.String.Interpolate
import Data.Versions
import Haskus.Utils.Variant.Excepts
import Optics
import System.Exit
import System.IO
import qualified Data.ByteString as B
import qualified Data.Map.Strict as M
data ValidationError = InternalError String
deriving Show
instance Exception ValidationError
addError :: (MonadReader (IORef Int) m, MonadIO m, Monad m) => m ()
addError = do
ref <- ask
liftIO $ modifyIORef ref (+ 1)
validate :: (Monad m, MonadLogger m, MonadThrow m, MonadIO m, MonadUnliftIO m)
=> GHCupDownloads
-> m ExitCode
validate dls = do
ref <- liftIO $ newIORef 0
-- * verify binary downloads * --
flip runReaderT ref $ do
-- unique tags
forM_ (M.toList dls) $ \(t, _) -> checkUniqueTags t
-- required platforms
forM_ (M.toList dls) $ \(t, versions) ->
forM_ (M.toList versions) $ \(v, vi) ->
forM_ (M.toList $ _viArch vi) $ \(arch, pspecs) -> do
checkHasRequiredPlatforms t v arch (M.keys pspecs)
checkGHCisSemver
forM_ (M.toList dls) $ \(t, _) -> checkMandatoryTags t
-- exit
e <- liftIO $ readIORef ref
if e > 0
then pure $ ExitFailure e
else do
lift $ $(logInfo) [i|All good|]
pure ExitSuccess
where
checkHasRequiredPlatforms t v arch pspecs = do
let v' = prettyVer v
when (not $ any (== Linux UnknownLinux) pspecs) $ do
lift $ $(logError)
[i|Linux UnknownLinux missing for for #{t} #{v'} #{arch}|]
addError
when ((not $ any (== Darwin) pspecs) && arch == A_64) $ do
lift $ $(logError) [i|Darwin missing for #{t} #{v'} #{arch}|]
addError
when ((not $ any (== FreeBSD) pspecs) && arch == A_64) $ lift $ $(logWarn)
[i|FreeBSD missing for #{t} #{v'} #{arch}|]
checkUniqueTags tool = do
let allTags = join $ fmap snd $ availableToolVersions dls tool
let nonUnique =
fmap fst
. filter (\(_, b) -> not b)
<$> ( mapM
(\case
[] -> throwM $ InternalError "empty inner list"
(t : ts) ->
pure $ (t, ) $ if isUniqueTag t then ts == [] else True
)
. group
. sort
$ allTags
)
case join nonUnique of
[] -> pure ()
xs -> do
lift $ $(logError) [i|Tags not unique for #{tool}: #{xs}|]
addError
where
isUniqueTag Latest = True
isUniqueTag Recommended = True
checkGHCisSemver = do
let ghcVers = toListOf (ix GHC % to M.keys % folded) dls
forM_ ghcVers $ \v -> case semver (prettyVer v) of
Left _ -> do
lift $ $(logError) [i|GHC version #{v} is not valid semver|]
addError
Right _ -> pure ()
-- a tool must have at least one of each mandatory tags
checkMandatoryTags tool = do
let allTags = join $ fmap snd $ availableToolVersions dls tool
forM_ [Latest, Recommended] $ \t -> case elem t allTags of
False -> do
lift $ $(logError) [i|Tag #{t} missing from #{tool}|]
addError
True -> pure ()
validateTarballs :: ( Monad m
, MonadLogger m
, MonadThrow m
, MonadIO m
, MonadUnliftIO m
, MonadMask m
)
=> GHCupDownloads
-> m ExitCode
validateTarballs dls = do
ref <- liftIO $ newIORef 0
flip runReaderT ref $ do
-- download/verify all binary tarballs
let
dlbis = nub $ join $ (M.elems dls) <&> \versions ->
join $ (M.elems versions) <&> \vi ->
join $ (M.elems $ _viArch vi) <&> \pspecs ->
join $ (M.elems pspecs) <&> \pverspecs -> (M.elems pverspecs)
forM_ dlbis $ downloadAll
let dlsrc = nub $ join $ (M.elems dls) <&> \versions ->
join $ (M.elems versions) <&> maybe [] (: []) . _viSourceDL
forM_ dlsrc $ downloadAll
-- exit
e <- liftIO $ readIORef ref
if e > 0
then pure $ ExitFailure e
else do
lift $ $(logInfo) [i|All good|]
pure ExitSuccess
where
downloadAll dli = do
let settings = Settings True False
let runLogger = myLoggerT LoggerConfig { lcPrintDebug = True
, colorOutter = B.hPut stderr
, rawOutter = (\_ -> pure ())
}
r <-
runLogger
. flip runReaderT settings
. runResourceT
. runE
$ downloadCached dli Nothing
case r of
VRight _ -> pure ()
VLeft e -> do
lift $ $(logError)
[i|Could not download (or verify hash) of #{dli}, Error was: #{e}|]
addError

1046
app/ghcup/BrickMain.hs Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,60 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,260 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.HsOpenSSL ==0.11.7.6,
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.14.3.0,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.base64-bytestring ==1.2.1.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.1,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.5.3,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.chs-cabal ==0.1.1.1,
any.chs-deps ==0.1.0.0,
chs-deps -cross,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.composition-prelude ==3.0.0.2,
composition-prelude -development,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.5.1,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cpphs ==1.20.9.1,
cpphs -old-locale,
any.cryptohash-sha1 ==0.11.101.0,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-array-byte ==0.1.0.1,
any.data-clist ==0.2,
any.data-fix ==0.3.2,
any.deepseq ==1.4.4.0,
any.directory ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-boot-th ==8.10.7,
any.ghc-byteorder ==4.11.0.0.10,
any.ghc-prim ==0.6.1,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.http-io-streams ==0.1.7.0,
http-io-streams -brotli +fast-xor,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-gmp ==1.0.3.0,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.io-streams ==1.5.2.2,
io-streams +network -nointeractivetests +zlib,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libarchive ==3.0.4.2,
libarchive -cross -low-memory +no-exe -system-libarchive,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode +system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.1,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.openssl-streams ==1.2.3.0,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.17.0,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.polyparse ==1.13,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.1,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.0.1,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.16.0.0,
any.temporary ==1.3,
any.terminal-progress-bar ==0.4.2,
any.terminal-size ==0.3.4,
any.terminfo ==0.4.1.4,
any.text ==2.0.2,
text -developer +simdutf,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.9.3,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix ==2.8.5.0,
unix -os-string,
any.unix-bytestring ==0.3.7.8,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-unix ==0.2.0.0,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.xor ==0.0.1.2,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zlib ==0.6.3.0,
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zlib-bindings ==0.1.1.5
index-state: hackage.haskell.org 2024-03-13T09:43:35Z

View File

@ -0,0 +1,60 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,245 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.0 || ==3.10.2.1,
any.Cabal-syntax ==3.10.1.0 || ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.Win32 ==2.6.2.1 || ==2.13.4.0,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.14.3.0,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.8.0 || ==0.8.9.1,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.10.12.0 || ==0.11.5.3,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.chs-cabal ==0.1.1.1,
any.chs-deps ==0.1.0.0,
chs-deps -cross,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.composition-prelude ==3.0.0.2,
composition-prelude -development,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.5.1,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cpphs ==1.20.9.1,
cpphs -old-locale,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-array-byte ==0.1.0.1,
any.data-clist ==0.2,
any.data-fix ==0.3.2,
any.deepseq ==1.4.4.0,
any.directory ==1.3.6.0 || ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.1 || ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-boot-th ==8.10.7,
any.ghc-prim ==0.6.1,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-gmp ==1.0.3.0,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libarchive ==3.0.4.2,
libarchive -cross -low-memory +no-exe -system-libarchive,
any.libyaml-clib ==0.2.5,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode -system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.1,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.14.0 || ==3.1.17.0,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.polyparse ==1.13,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.13.2 || ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.regex-posix-clib ==2.7,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.1,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.0.1,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.16.0.0,
any.temporary ==1.3,
any.text ==1.2.4.1 || ==2.0.2,
text -developer -simdutf,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.9.3 || ==1.11.1.2,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-windows ==0.2.0.2,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zlib ==0.6.3.0,
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config
index-state: hackage.haskell.org 2024-03-15T23:51:46Z

8
cabal.ghc8107.project Normal file
View File

@ -0,0 +1,8 @@
if os(mingw32)
import: cabal.ghc8107.Win32.project
import: cabal.ghc8107.Win32.project.freeze
else
import: cabal.ghc8107.Unix.project
import: cabal.ghc8107.Unix.project.freeze
with-compiler: ghc-8.10.7

60
cabal.ghc902.Unix.project Normal file
View File

@ -0,0 +1,60 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,273 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.HsOpenSSL ==0.11.7.6,
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.15.1.0,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.base64-bytestring ==1.2.1.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.1,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.bindings-DSL ==1.0.25,
any.bitvec ==1.1.5.0,
bitvec +simd,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.5.3,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.bzlib-conduit ==0.3.0.3,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.cereal ==0.5.8.3,
cereal -bytestring-builder,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.conduit ==1.3.5,
any.conduit-extra ==1.3.6,
any.conduit-zstd ==0.0.2.0,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.4.1,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cryptohash-sha1 ==0.11.101.0,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-array-byte ==0.1.0.1,
any.data-clist ==0.2,
any.data-default-class ==0.1.2.0,
any.data-fix ==0.3.2,
any.deepseq ==1.4.5.0,
any.digest ==0.0.2.1,
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
any.directory ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-bignum ==1.1,
any.ghc-boot-th ==9.0.2,
any.ghc-byteorder ==4.11.0.0.10,
any.ghc-prim ==0.7.0,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.http-io-streams ==0.1.7.0,
http-io-streams -brotli +fast-xor,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.io-streams ==1.5.2.2,
io-streams +network -nointeractivetests +zlib,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode +system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.2,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.monad-control ==1.0.3.1,
any.mono-traversable ==1.0.17.0,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.openssl-streams ==1.2.3.0,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.17.0,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.2,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.0.0,
any.streaming-commons ==0.2.2.6,
streaming-commons -use-bytestring-builder,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.17.0.0,
any.temporary ==1.3,
any.terminal-progress-bar ==0.4.2,
any.terminal-size ==0.3.4,
any.terminfo ==0.4.1.5,
any.text ==2.0.2,
text -developer +simdutf,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.9.3,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.11.1,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix ==2.8.5.0,
unix -os-string,
any.unix-bytestring ==0.3.7.8,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.9.0.1,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-unix ==0.2.0.0,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.xor ==0.0.1.2,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zip ==2.0.0,
zip -dev -disable-bzip2 -disable-zstd,
any.zlib ==0.6.3.0,
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zlib-bindings ==0.1.1.5,
any.zstd ==0.1.3.0,
zstd +standalone
index-state: hackage.haskell.org 2024-03-13T09:43:35Z

View File

@ -0,0 +1,61 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,258 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.Win32 ==2.12.0.1 || ==2.13.4.0,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.15.1.0,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.1,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.bindings-DSL ==1.0.25,
any.bitvec ==1.1.5.0,
bitvec +simd,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.5.3,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.bzlib-conduit ==0.3.0.3,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.cereal ==0.5.8.3,
cereal -bytestring-builder,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.conduit ==1.3.5,
any.conduit-extra ==1.3.6,
any.conduit-zstd ==0.0.2.0,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.4.1,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-array-byte ==0.1.0.1,
any.data-clist ==0.2,
any.data-default-class ==0.1.2.0,
any.data-fix ==0.3.2,
any.deepseq ==1.4.5.0,
any.digest ==0.0.2.1,
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
any.directory ==1.3.6.2 || ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.1 || ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-bignum ==1.1,
any.ghc-boot-th ==9.0.2,
any.ghc-prim ==0.7.0,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libyaml-clib ==0.2.5,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode -system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.2,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.monad-control ==1.0.3.1,
any.mono-traversable ==1.0.17.0,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.17.0,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.13.2 || ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.regex-posix-clib ==2.7,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.2,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.0.0,
any.streaming-commons ==0.2.2.6,
streaming-commons -use-bytestring-builder,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.17.0.0,
any.temporary ==1.3,
any.text ==2.0.2,
text -developer -simdutf,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.9.3 || ==1.11.1.2,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.11.1,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.9.0.1,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-windows ==0.2.0.2,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zip ==2.0.0,
zip -dev -disable-bzip2 -disable-zstd,
any.zlib ==0.6.3.0,
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zstd ==0.1.3.0,
zstd +standalone
index-state: hackage.haskell.org 2024-03-15T23:51:46Z

8
cabal.ghc902.project Normal file
View File

@ -0,0 +1,8 @@
if os(mingw32)
import: cabal.ghc902.Win32.project
import: cabal.ghc902.Win32.project.freeze
else
import: cabal.ghc902.Unix.project
import: cabal.ghc902.Unix.project.freeze
with-compiler: ghc-9.0.2

60
cabal.ghc928.Unix.project Normal file
View File

@ -0,0 +1,60 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,273 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.HsOpenSSL ==0.11.7.6,
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.16.4.0,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.base64-bytestring ==1.2.1.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.0,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.bindings-DSL ==1.0.25,
any.bitvec ==1.1.5.0,
bitvec +simd,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.4.0,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.bzlib-conduit ==0.3.0.3,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.cereal ==0.5.8.3,
cereal -bytestring-builder,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.conduit ==1.3.5,
any.conduit-extra ==1.3.6,
any.conduit-zstd ==0.0.2.0,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.5.1,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cryptohash-sha1 ==0.11.101.0,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-array-byte ==0.1.0.1,
any.data-clist ==0.2,
any.data-default-class ==0.1.2.0,
any.data-fix ==0.3.2,
any.deepseq ==1.4.6.1,
any.digest ==0.0.2.1,
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
any.directory ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-bignum ==1.2,
any.ghc-boot-th ==9.2.8,
any.ghc-byteorder ==4.11.0.0.10,
any.ghc-prim ==0.8.0,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.http-io-streams ==0.1.7.0,
http-io-streams -brotli +fast-xor,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.io-streams ==1.5.2.2,
io-streams +network -nointeractivetests +zlib,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode +system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.2,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.monad-control ==1.0.3.1,
any.mono-traversable ==1.0.17.0,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.openssl-streams ==1.2.3.0,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.17.0,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.2,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.0.2,
any.streaming-commons ==0.2.2.6,
streaming-commons -use-bytestring-builder,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.18.0.0,
any.temporary ==1.3,
any.terminal-progress-bar ==0.4.2,
any.terminal-size ==0.3.4,
any.terminfo ==0.4.1.5,
any.text ==2.0.2,
text -developer +simdutf,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.11.1.1,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.11.1,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix ==2.8.5.0,
unix -os-string,
any.unix-bytestring ==0.3.7.8,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.9.0.1,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-unix ==0.2.0.0,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.xor ==0.0.1.2,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zip ==2.0.0,
zip -dev -disable-bzip2 -disable-zstd,
any.zlib ==0.6.3.0,
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zlib-bindings ==0.1.1.5,
any.zstd ==0.1.3.0,
zstd +standalone
index-state: hackage.haskell.org 2024-03-13T09:43:35Z

View File

@ -0,0 +1,60 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,258 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.Win32 ==2.12.0.1 || ==2.13.4.0,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.16.4.0,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.0,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.bindings-DSL ==1.0.25,
any.bitvec ==1.1.5.0,
bitvec +simd,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.4.0,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.bzlib-conduit ==0.3.0.3,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.cereal ==0.5.8.3,
cereal -bytestring-builder,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.conduit ==1.3.5,
any.conduit-extra ==1.3.6,
any.conduit-zstd ==0.0.2.0,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.5.1,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-array-byte ==0.1.0.1,
any.data-clist ==0.2,
any.data-default-class ==0.1.2.0,
any.data-fix ==0.3.2,
any.deepseq ==1.4.6.1,
any.digest ==0.0.2.1,
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
any.directory ==1.3.6.2 || ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.2 || ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-bignum ==1.2,
any.ghc-boot-th ==9.2.8,
any.ghc-prim ==0.8.0,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libyaml-clib ==0.2.5,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode -system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.2,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.monad-control ==1.0.3.1,
any.mono-traversable ==1.0.17.0,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.17.0,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.16.0 || ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.regex-posix-clib ==2.7,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.2,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.0.2,
any.streaming-commons ==0.2.2.6,
streaming-commons -use-bytestring-builder,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.18.0.0,
any.temporary ==1.3,
any.text ==2.0.2,
text -developer -simdutf,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.11.1.1 || ==1.11.1.2,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.11.1,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.9.0.1,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-windows ==0.2.0.2,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zip ==2.0.0,
zip -dev -disable-bzip2 -disable-zstd,
any.zlib ==0.6.3.0,
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zstd ==0.1.3.0,
zstd +standalone
index-state: hackage.haskell.org 2024-03-15T23:51:46Z

8
cabal.ghc928.project Normal file
View File

@ -0,0 +1,8 @@
if os(mingw32)
import: cabal.ghc928.Win32.project
import: cabal.ghc928.Win32.project.freeze
else
import: cabal.ghc928.Unix.project
import: cabal.ghc928.Unix.project.freeze
with-compiler: ghc-9.2.8

60
cabal.ghc948.Unix.project Normal file
View File

@ -0,0 +1,60 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,271 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.HsOpenSSL ==0.11.7.6,
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.17.2.1,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.base64-bytestring ==1.2.1.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.1,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.bindings-DSL ==1.0.25,
any.bitvec ==1.1.5.0,
bitvec +simd,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.5.3,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.bzlib-conduit ==0.3.0.3,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.cereal ==0.5.8.3,
cereal -bytestring-builder,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.conduit ==1.3.5,
any.conduit-extra ==1.3.6,
any.conduit-zstd ==0.0.2.0,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.7,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cryptohash-sha1 ==0.11.101.0,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-clist ==0.2,
any.data-default-class ==0.1.2.0,
any.data-fix ==0.3.2,
any.deepseq ==1.4.8.0,
any.digest ==0.0.2.1,
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
any.directory ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.5,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-bignum ==1.3,
any.ghc-boot-th ==9.4.8,
any.ghc-byteorder ==4.11.0.0.10,
any.ghc-prim ==0.9.1,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.http-io-streams ==0.1.7.0,
http-io-streams -brotli +fast-xor,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.io-streams ==1.5.2.2,
io-streams +network -nointeractivetests +zlib,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode +system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.2,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.monad-control ==1.0.3.1,
any.mono-traversable ==1.0.17.0,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.openssl-streams ==1.2.3.0,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.16.1,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.2,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.1.0,
any.streaming-commons ==0.2.2.6,
streaming-commons -use-bytestring-builder,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.19.0.0,
any.temporary ==1.3,
any.terminal-progress-bar ==0.4.2,
any.terminal-size ==0.3.4,
any.terminfo ==0.4.1.5,
any.text ==2.0.2,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.11.1.2,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.11.1,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix ==2.8.5.0,
unix -os-string,
any.unix-bytestring ==0.3.7.8,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.9.0.1,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-unix ==0.2.0.0,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.xor ==0.0.1.2,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zip ==2.0.0,
zip -dev -disable-bzip2 -disable-zstd,
any.zlib ==0.6.3.0,
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zlib-bindings ==0.1.1.5,
any.zstd ==0.1.3.0,
zstd +standalone
index-state: hackage.haskell.org 2024-03-13T09:43:35Z

View File

@ -0,0 +1,61 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
package *
test-show-details: direct
allow-newer: cabal-install-parsers:tar, streamly:Win32

View File

@ -0,0 +1,256 @@
active-repositories: hackage.haskell.org:merge
constraints: any.Cabal ==3.10.2.1,
any.Cabal-syntax ==3.10.2.0,
any.HUnit ==1.6.2.0,
any.OneTuple ==0.4.1.1,
any.QuickCheck ==2.14.3,
QuickCheck -old-random +templatehaskell,
any.StateVar ==1.2.2,
any.Win32 ==2.12.0.1 || ==2.13.4.0,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.aeson ==2.2.1.0,
aeson +ordered-keymap,
any.aeson-pretty ==0.8.10,
aeson-pretty +lib-only,
any.alex ==3.5.1.0,
any.ansi-terminal ==1.0.2,
ansi-terminal -example,
any.ansi-terminal-types ==0.11.5,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.4.0,
any.assoc ==1.1,
assoc +tagged,
any.async ==2.2.5,
async -bench,
any.atomic-primops ==0.8.5,
atomic-primops -debug,
any.attoparsec ==0.14.4,
attoparsec -developer,
any.base ==4.17.2.1,
any.base-compat ==0.13.1,
any.base-orphans ==0.9.1,
any.base16-bytestring ==1.0.2.0,
any.bifunctors ==5.6.1,
bifunctors +tagged,
any.bimap ==0.5.0,
any.binary ==0.8.9.1,
any.binary-instances ==1.0.4,
any.binary-orphans ==1.0.4.1,
any.bindings-DSL ==1.0.25,
any.bitvec ==1.1.5.0,
bitvec +simd,
any.blaze-builder ==0.4.2.3,
any.brick ==2.1.1,
brick -demos,
any.bytestring ==0.11.5.3,
any.bz2 ==1.0.1.1,
bz2 -cross +with-bzlib,
any.bzip2-clib ==1.0.8,
any.bzlib-conduit ==0.3.0.3,
any.c2hs ==0.28.8,
c2hs +base3 -regression,
any.cabal-install-parsers ==0.6.1.1,
any.cabal-plan ==0.7.3.0,
cabal-plan -_ -exe -license-report,
any.call-stack ==0.4.0,
any.case-insensitive ==1.2.1.0,
any.casing ==0.1.4.1,
any.cereal ==0.5.8.3,
cereal -bytestring-builder,
any.colour ==2.3.6,
any.comonad ==5.0.8,
comonad +containers +distributive +indexed-traversable,
any.conduit ==1.3.5,
any.conduit-extra ==1.3.6,
any.conduit-zstd ==0.0.2.0,
any.config-ini ==0.2.7.0,
config-ini -enable-doctests,
any.containers ==0.6.7,
any.contravariant ==1.5.5,
contravariant +semigroups +statevar +tagged,
any.cryptohash-sha256 ==0.11.102.1,
cryptohash-sha256 -exe +use-cbits,
any.data-clist ==0.2,
any.data-default-class ==0.1.2.0,
any.data-fix ==0.3.2,
any.deepseq ==1.4.8.0,
any.digest ==0.0.2.1,
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
any.directory ==1.3.7.1 || ==1.3.8.3,
directory -os-string,
any.disk-free-space ==0.1.0.1,
any.distributive ==0.6.2.1,
distributive +semigroups +tagged,
any.dlist ==1.0,
dlist -werror,
any.exceptions ==0.10.5,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.2 || ==1.4.101.0,
filepath -cpphs,
any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged,
any.free ==5.2,
any.fusion-plugin-types ==0.1.0,
any.generic-arbitrary ==0.2.2,
any.generically ==0.1.1,
any.ghc-bignum ==1.3,
any.ghc-boot-th ==9.4.8,
any.ghc-prim ==0.9.1,
any.happy ==1.20.1.1,
any.hashable ==1.4.3.0,
hashable +integer-gmp -random-initial-seed,
any.haskell-lexer ==1.1.1,
any.haskus-utils-data ==1.4,
any.haskus-utils-types ==1.5.1,
any.haskus-utils-variant ==3.3,
any.heaps ==0.4,
any.hsc2hs ==0.68.8,
hsc2hs -in-ghc-tree,
any.hspec ==2.10.10,
any.hspec-core ==2.10.10,
any.hspec-discover ==2.10.10,
any.hspec-expectations ==0.8.2,
any.hspec-golden-aeson ==0.9.0.0,
any.indexed-profunctors ==0.1.1.1,
any.indexed-traversable ==0.1.3,
any.indexed-traversable-instances ==0.1.1.2,
any.integer-conversion ==0.1.0.1,
any.integer-logarithms ==1.0.3.1,
integer-logarithms -check-bounds +integer-gmp,
any.language-c ==0.9.3,
language-c -allwarnings +iecfpextension +usebytestrings,
any.libyaml-clib ==0.2.5,
any.libyaml-streamly ==0.2.2.1,
libyaml-streamly -no-unicode -system-libyaml,
any.lockfree-queue ==0.2.4,
any.lukko ==0.1.1.3,
lukko +ofd-locking,
any.lzma-static ==5.2.5.5,
any.megaparsec ==9.2.2,
megaparsec -dev,
any.microlens ==0.4.13.1,
any.microlens-mtl ==0.2.0.3,
any.microlens-th ==0.4.3.14,
any.monad-control ==1.0.3.1,
any.mono-traversable ==1.0.17.0,
any.mtl ==2.2.2,
any.mtl-compat ==0.2.2,
mtl-compat -two-point-one -two-point-two,
any.network ==3.1.4.0,
network -devel,
any.network-uri ==2.6.4.2,
any.optics ==0.4.2.1,
any.optics-core ==0.4.1.1,
optics-core -explicit-generic-labels,
any.optics-extra ==0.4.2.1,
any.optics-th ==0.4.1,
any.optparse-applicative ==0.17.1.0,
optparse-applicative +process,
any.os-release ==1.0.2.1,
os-release -devel,
any.parsec ==3.1.16.1,
any.parser-combinators ==1.3.0,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.primitive ==0.8.0.0,
any.process ==1.6.18.0,
any.profunctors ==5.6.2,
any.quickcheck-arbitrary-adt ==0.3.1.0,
any.quickcheck-io ==0.2.0,
any.random ==1.2.1.2,
any.recursion-schemes ==5.2.2.5,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.2,
any.regex-posix ==0.96.0.1,
regex-posix -_regex-posix-clib,
any.regex-posix-clib ==2.7,
any.resourcet ==1.2.6,
any.retry ==0.9.3.1,
retry -lib-werror,
any.rts ==1.0.2,
any.safe ==0.3.21,
any.safe-exceptions ==0.1.7.4,
any.scientific ==0.3.7.0,
scientific -bytestring-builder -integer-simple,
any.semialign ==1.3,
semialign +semigroupoids,
any.semigroupoids ==6.0.0.1,
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
any.setenv ==0.1.1.3,
any.split ==0.2.5,
any.splitmix ==0.1.0.5,
splitmix -optimised-mixer,
any.stm ==2.5.1.0,
any.streaming-commons ==0.2.2.6,
streaming-commons -use-bytestring-builder,
any.streamly ==0.8.3,
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
any.strict ==0.5,
any.strict-base ==0.4.0.0,
any.tagged ==0.8.8,
tagged +deepseq +transformers,
any.tagsoup ==0.14.8,
any.tar ==0.6.0.0,
any.tasty ==1.5,
tasty +unix,
any.tasty-hunit ==0.10.1,
any.template-haskell ==2.19.0.0,
any.temporary ==1.3,
any.text ==2.0.2,
any.text-binary ==0.2.1.1,
any.text-iso8601 ==0.1,
any.text-short ==0.1.5,
text-short -asserts,
any.text-zipper ==0.13,
any.tf-random ==0.5,
any.th-abstraction ==0.6.0.0,
any.th-compat ==0.1.4,
any.th-lift ==0.8.4,
any.th-lift-instances ==0.1.20,
any.these ==1.2,
any.time ==1.11.1.2 || ==1.12.2,
any.time-compat ==1.9.6.1,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.6,
transformers-base +orphaninstances,
any.transformers-compat ==0.7.2,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.11.1,
any.unicode-data ==0.3.1,
unicode-data -ucd2haskell,
any.unix-compat ==0.7.1,
unix-compat -old-time,
any.unliftio-core ==0.2.1.0,
any.unordered-containers ==0.2.20,
unordered-containers -debug,
any.uri-bytestring ==0.3.3.1,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.2,
any.uuid-types ==1.0.5.1,
any.vector ==0.13.1.0,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.9.0.1,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.2,
any.vector-stream ==0.1.0.1,
any.versions ==6.0.6,
any.vty ==6.2,
any.vty-crossplatform ==0.4.0.0,
vty-crossplatform -demos,
any.vty-windows ==0.2.0.2,
any.witherable ==0.4.2,
any.word-wrap ==0.5,
any.word8 ==0.1.3,
any.yaml-streamly ==0.12.4,
yaml-streamly +no-examples +no-exe,
any.zip ==2.0.0,
zip -dev -disable-bzip2 -disable-zstd,
any.zlib ==0.6.3.0,
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
any.zstd ==0.1.3.0,
zstd +standalone
index-state: hackage.haskell.org 2024-03-15T23:51:46Z

8
cabal.ghc948.project Normal file
View File

@ -0,0 +1,8 @@
if os(mingw32)
import: cabal.ghc948.Win32.project
import: cabal.ghc948.Win32.project.freeze
else
import: cabal.ghc948.Unix.project
import: cabal.ghc948.Unix.project.freeze
with-compiler: ghc-9.4.8

View File

@ -1,18 +1,60 @@
packages: ./ghcup.cabal
with-compiler: ghc-8.6.5
optional-packages: ./vendored/*/*.cabal
optimization: 2
if impl(ghc < 9.0)
package ghcup
flags: +tui -tar
else
package ghcup
flags: +tui +tar
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
if os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
package libarchive
flags: -system-libarchive
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
ghc-options: -O2 -fspec-constr-recursive=16 -fmax-worker-args=16
flags: +use-unliftio
package ghcup
ghc-options: -O2 -fspec-constr-recursive=16 -fmax-worker-args=16
package *
test-show-details: direct
package tar-bytestring
ghc-options: -O2
allow-newer: cabal-install-parsers:tar, streamly:Win32
constraints: http-io-streams -brotli
index-state: 2020-03-09T18:53:34Z

View File

@ -1,258 +0,0 @@
constraints: any.Cabal ==2.4.0.1,
any.Glob ==0.10.0,
any.HsOpenSSL ==0.11.4.17,
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -old-locale,
any.IfElse ==0.85,
any.Only ==0.1,
any.QuickCheck ==2.13.2,
QuickCheck +templatehaskell,
any.StateVar ==1.2,
any.abstract-deque ==0.3,
abstract-deque -usecas,
any.abstract-par ==0.3.3,
any.aeson ==1.4.6.0,
aeson -bytestring-builder -cffi -developer -fast,
any.aeson-pretty ==0.8.8,
aeson-pretty -lib-only,
any.ansi-terminal ==0.10.3,
ansi-terminal -example,
any.ansi-wl-pprint ==0.6.9,
ansi-wl-pprint -example,
any.array ==0.5.3.0,
any.ascii-string ==1.0.1.4,
any.assoc ==1.0.1,
any.async ==2.2.2,
async -bench,
any.atomic-primops ==0.8.3,
atomic-primops -debug,
any.attoparsec ==0.13.2.3,
attoparsec -developer,
any.auto-update ==0.1.6,
any.base ==4.12.0.0,
any.base-compat ==0.11.1,
any.base-compat-batteries ==0.11.1,
any.base-orphans ==0.8.2,
any.base-prelude ==1.3,
any.base16-bytestring ==0.1.1.6,
any.base64-bytestring ==1.0.0.3,
any.bifunctors ==5.5.7,
bifunctors +semigroups +tagged,
any.binary ==0.8.6.0,
any.binary-orphans ==1.0.1,
any.blaze-builder ==0.4.1.0,
any.bytestring ==0.10.8.2,
any.bytestring-builder ==0.10.8.2.0,
bytestring-builder +bytestring_has_builder,
any.bytestring-handle ==0.1.0.6,
any.bzlib ==0.5.0.5,
any.cabal-doctest ==1.0.8,
any.case-insensitive ==1.2.1.0,
any.cassava ==0.5.2.0,
cassava -bytestring--lt-0_10_4,
any.cereal ==0.5.8.1,
cereal -bytestring-builder,
any.clock ==0.8,
clock -llvm,
any.cmdargs ==0.10.20,
cmdargs +quotation -testprog,
any.code-page ==0.2,
any.colour ==2.3.5,
any.comonad ==5.0.6,
comonad +containers +distributive +test-doctests,
any.conduit ==1.3.1.2,
any.conduit-extra ==1.3.4,
any.containers ==0.6.0.1,
any.contravariant ==1.5.2,
contravariant +semigroups +statevar +tagged,
any.criterion ==1.5.6.2,
criterion -embed-data-files -fast,
any.criterion-measurement ==0.1.2.0,
criterion-measurement -fast,
any.data-default-class ==0.1.2.0,
any.data-default-instances-base ==0.1.0.1,
any.deepseq ==1.4.4.0,
any.deferred-folds ==0.9.10.1,
any.dense-linear-algebra ==0.1.0.0,
any.directory ==1.3.3.0 || ==1.3.6.0,
any.distributive ==0.6.1,
distributive +semigroups +tagged,
any.dlist ==0.8.0.7,
any.easy-file ==0.2.2,
any.errors ==2.3.0,
any.exceptions ==0.10.4,
exceptions +transformers-0-4,
any.extra ==1.7,
any.fast-logger ==3.0.1,
any.filepath ==1.4.2.1,
any.focus ==1.0.1.3,
any.foldl ==1.4.6,
any.free ==5.1.3,
any.fusion-plugin-types ==0.1.0,
any.generics-sop ==0.5.0.0,
any.ghc-boot-th ==8.6.5,
any.ghc-prim ==0.5.3,
any.happy ==1.19.12,
happy +small_base,
any.hashable ==1.3.0.0,
hashable -examples +integer-gmp +sse2 -sse41,
any.haskell-src-exts ==1.23.0,
any.haskell-src-meta ==0.8.5,
any.haskus-utils-data ==1.2,
any.haskus-utils-types ==1.5,
any.haskus-utils-variant ==3.0,
any.heaps ==0.3.6.1,
any.hopenssl ==2.2.4,
hopenssl -link-libz,
any.hpath ==0.11.0,
any.hpath-directory ==0.13.2,
any.hpath-filepath ==0.10.4,
any.hpath-io ==0.13.1,
any.hpath-posix ==0.13.1,
any.hsc2hs ==0.68.6,
hsc2hs -in-ghc-tree,
any.http-io-streams ==0.1.2.0,
http-io-streams -brotli,
any.indexed-profunctors ==0.1,
any.integer-gmp ==1.0.2.0,
any.integer-logarithms ==1.0.3,
integer-logarithms -check-bounds +integer-gmp,
any.io-streams ==1.5.1.0,
io-streams -nointeractivetests,
any.js-flot ==0.8.3,
any.js-jquery ==3.3.1,
any.language-bash ==0.9.0,
any.lifted-base ==0.2.3.12,
any.list-t ==1.0.4,
any.lockfree-queue ==0.2.3.1,
any.lzma ==0.0.0.3,
any.math-functions ==0.3.3.0,
math-functions +system-erf +system-expm1,
any.megaparsec ==8.0.0,
megaparsec -dev,
any.microstache ==1.0.1.1,
any.mmorph ==1.1.3,
any.monad-control ==1.0.2.3,
any.monad-logger ==0.3.32,
monad-logger +template_haskell,
any.monad-loops ==0.4.3,
monad-loops +base4,
any.monad-par ==0.3.5,
monad-par -chaselev -newgeneric,
any.monad-par-extras ==0.3.3,
any.mono-traversable ==1.0.15.1,
any.mtl ==2.2.2,
any.mwc-random ==0.14.0.0,
any.network ==3.1.1.1,
any.network-uri ==2.6.3.0,
any.old-locale ==1.0.0.7,
any.old-time ==1.1.0.3,
any.openssl-streams ==1.2.2.0,
any.optics ==0.2,
any.optics-core ==0.2,
any.optics-extra ==0.2,
any.optics-th ==0.2,
any.optics-vl ==0.2,
any.optparse-applicative ==0.15.1.0,
any.parallel ==3.2.2.0,
any.parsec ==3.1.13.0,
any.parser-combinators ==1.2.1,
parser-combinators -dev,
any.pretty ==1.1.3.6,
any.pretty-terminal ==0.1.0.0,
any.prettyprinter ==1.6.1,
prettyprinter -buildreadme,
any.primitive ==0.7.0.1,
any.primitive-extras ==0.8,
any.primitive-unlifted ==0.1.3.0,
any.process ==1.6.5.0 || ==1.6.8.0,
any.profunctors ==5.5.2,
any.random ==1.1,
any.recursion-schemes ==5.1.3,
recursion-schemes +template-haskell,
any.regex-base ==0.94.0.0,
any.regex-posix ==0.96.0.0,
regex-posix -_regex-posix-clib,
any.resourcet ==1.2.3,
any.rts ==1.0,
any.safe ==0.3.18,
any.safe-exceptions ==0.1.7.0,
any.scientific ==0.3.6.2,
scientific -bytestring-builder -integer-simple,
any.semigroupoids ==5.3.4,
semigroupoids +comonad +containers +contravariant +distributive +doctests +tagged +unordered-containers,
any.semigroups ==0.19.1,
semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers,
any.sop-core ==0.5.0.0,
any.split ==0.2.3.4,
any.splitmix ==0.0.4,
splitmix -optimised-mixer +random,
any.statistics ==0.15.2.0,
any.stm ==2.5.0.0,
any.stm-chans ==3.0.0.4,
any.streaming-commons ==0.2.1.2,
streaming-commons -use-bytestring-builder,
any.streamly ==0.7.1,
streamly -debug -dev -examples -examples-sdl -fusion-plugin -has-llvm -inspection -no-charts -no-fusion -streamk,
any.streamly-bytestring ==0.1.2,
any.streamly-posix ==0.1.0.0,
any.strict-base ==0.4.0.0,
any.string-interpolate ==0.2.0.0,
any.syb ==0.7.1,
any.table-layout ==0.8.0.5,
any.tagged ==0.8.6,
tagged +deepseq +transformers,
any.tar-bytestring ==0.6.3.1,
any.tasty ==1.2.3,
tasty +clock,
any.tasty-quickcheck ==0.10.1.1,
any.template-haskell ==2.14.0.0,
any.terminal-progress-bar ==0.4.1,
any.terminal-size ==0.3.2.1,
any.text ==1.2.3.1,
any.text-conversions ==0.3.0,
any.text-short ==0.1.3,
text-short -asserts,
any.th-abstraction ==0.3.2.0,
any.th-expand-syns ==0.4.5.0,
any.th-lift ==0.8.1,
any.th-lift-instances ==0.1.14,
any.th-orphans ==0.13.9,
any.th-reify-many ==0.1.9,
any.these ==1.0.1,
these +aeson +assoc +quickcheck +semigroupoids,
any.time ==1.8.0.2 || ==1.9.3,
any.time-compat ==1.9.2.2,
time-compat -old-locale,
any.transformers ==0.5.6.2,
any.transformers-base ==0.4.5.2,
transformers-base +orphaninstances,
any.transformers-compat ==0.6.5,
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
any.typed-process ==0.2.6.0,
any.unbounded-delays ==0.1.1.0,
any.unix ==2.7.2.2,
any.unix-bytestring ==0.3.7.3,
any.unix-compat ==0.5.2,
unix-compat -old-time,
any.unix-time ==0.4.7,
any.unliftio-core ==0.2.0.1,
any.unordered-containers ==0.2.10.0,
unordered-containers -debug,
any.uri-bytestring ==0.3.2.2,
uri-bytestring -lib-werror,
any.utf8-string ==1.0.1.1,
any.uuid-types ==1.0.3,
any.vector ==0.12.1.2,
vector +boundschecks -internalchecks -unsafechecks -wall,
any.vector-algorithms ==0.8.0.3,
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
any.vector-binary-instances ==0.2.5.1,
any.vector-builder ==0.3.8,
any.vector-th-unbox ==0.2.1.7,
any.versions ==3.5.3,
any.wcwidth ==0.0.2,
wcwidth -cli +split-base,
any.word8 ==0.1.3,
any.zlib ==0.6.2.1,
zlib -non-blocking-ffi -pkg-config,
any.zlib-bindings ==0.1.1.5

68
cabal.project.release Normal file
View File

@ -0,0 +1,68 @@
packages: ./ghcup.cabal
optional-packages: ./vendored/*/*.cabal
optimization: 2
package ghcup
flags: +tui -tar
if os(linux)
if arch(x86_64) || arch(i386)
package *
ghc-options: -split-sections -optl-static
elif os(darwin)
constraints: zlib +bundled-c-zlib,
lzma +static
elif os(mingw32)
constraints: zlib +bundled-c-zlib,
lzma +static,
text -simdutf,
vty-windows >=0.2.0.2
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
elif os(freebsd)
constraints: zlib +bundled-c-zlib,
zip +disable-zstd
package *
ghc-options: -split-sections
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0,
any.hsc2hs ==0.68.8,
bzlib-conduit >= 0.3.0.3,
bz2 >= 1.0.1.1,
bzlib >= 0.5.2.0,
directory >= 1.3.8.3,
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
package libarchive
flags: -system-libarchive
package libyaml-streamly
flags: -system-libyaml
package aeson-pretty
flags: +lib-only
package cabal-plan
flags: -exe
package aeson
flags: +ordered-keymap
package streamly
flags: +use-unliftio
source-repository-package
type: git
location: https://github.com/haskell/tar.git
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
source-repository-package
type: git
location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
allow-newer: cabal-install-parsers:tar, streamly:Win32

7
cbits/dirutils.c Normal file
View File

@ -0,0 +1,7 @@
#include "dirutils.h"
unsigned int
__posixdir_d_type(struct dirent* d)
{
return(d -> d_type);
}

16
cbits/dirutils.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef POSIXPATHS_CBITS_DIRUTILS_H
#define POSIXPATHS_CBITS_DIRUTILS_H
#include <HsFFI.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
extern unsigned int
__posixdir_d_type(struct dirent* d)
;
#endif

9
data/build_mk/cross Normal file
View File

@ -0,0 +1,9 @@
V=0
BUILD_MAN = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
HADDOCK_DOCS = NO
ifneq "$(BuildFlavour)" ""
include mk/flavours/$(BuildFlavour).mk
endif
Stage1Only = YES

8
data/build_mk/default Normal file
View File

@ -0,0 +1,8 @@
V=0
BUILD_MAN = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO
HADDOCK_DOCS = YES
ifneq "$(BuildFlavour)" ""
include mk/flavours/$(BuildFlavour).mk
endif

139
data/config.yaml Normal file
View File

@ -0,0 +1,139 @@
# Cache downloads in ~/.ghcup/cache
cache: False
# Skip tarball checksum verification
no-verify: False
# enable verbosity
verbose: False
# When to keep build directories
keep-dirs: Errors # Always | Never | Errors
# Which downloader to use
downloader: Curl # Curl | Wget | Internal
# whether to run in offline mode
no-network: False
# whether/how to do gpg verification
gpg-setting: GPGNone # GPGStrict | GPGLax | GPGNone
# TUI key bindings,
# see https://hackage.haskell.org/package/vty-5.31/docs/Graphics-Vty-Input-Events.html#t:Key
# for possible values.
# It's also possible to define key+modifier, e.g.:
# quit:
# Key:
# KChar: c
# Mods: [MCtrl]
key-bindings:
up:
KUp: []
down:
KDown: []
quit:
KChar: 'q'
install:
KChar: 'i'
uninstall:
KChar: 'u'
set:
KChar: 's'
changelog:
KChar: 'c'
show-all:
KChar: 'a'
show-all-tools:
KChar: 't'
# The caching for the metadata files containing download info, depending on last access time
# of the file. These usually are in '~/.ghcup/cache/ghcup-<ver>.yaml'.
meta-cache: 300 # in seconds
# When trying to download ghcup metadata, this option decides what to do
# when the download fails:
# 1. Lax: use existing ~/.ghcup/cache/ghcup-<ver>.yaml as fallback (default)
# 2. Strict: fail hard
meta-mode: Lax # Strict | Lax
# Where to get GHC/cabal/hls download info/versions from. This is a list that performs
# union over tool versions, preferring the later entries.
url-source:
## Use the internal download uri, this is the default
- GHCupURL
## Prefer stack supplied metadata (will still use GHCup metadata for versions not existing in stack metadata)
# - StackSetupURL
## Add pre-release channel
# - https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
## Add nightly channel
# - https://ghc.gitlab.haskell.org/ghcup-metadata/ghcup-nightlies-0.0.7.yaml
## Add cross compiler channel
# - https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
## Use dwarf bindist for 9.4.7 for ghcup metadata
# - ghcup-info:
# ghcupDownloads:
# GHC:
# 9.4.7:
# viTags: []
# viArch:
# A_64:
# Linux_UnknownLinux:
# unknown_versioning:
# dlUri: https://downloads.haskell.org/ghc/9.4.7/ghc-9.4.7-x86_64-deb10-linux-dwarf.tar.xz
# dlSubdir:
# RegexDir: "ghc-.*"
# dlHash: b261b3438ba455e3cf757f9c8dc3a06fdc061ea8ec287a65b7809e25fe18bad4
## for stack metadata and the linux64-tinfo6 bindists, use static alpine for 9.8.1
# - setup-info:
# ghc:
# linux64-tinfo6:
# 9.8.1:
# url: "https://downloads.haskell.org/~ghc/9.8.1/ghc-9.8.1-x86_64-alpine3_12-linux-static.tar.xz"
# content-length: 229037440
# sha256: b48f3d3a508d0c140d1c801e04afc65e80c0d25e7e939a8a41edb387b26b81b3
# This is a way to override platform detection, e.g. when you're running
# a Ubuntu derivative based on 18.04, you could do:
#
# platform-override:
# arch: A_64
# platform:
# contents: Ubuntu
# tag: Linux
# version: '18.04'
platform-override: null
# Support for mirrors. Currently there are 3 hosts you can mirror:
# - github.com (for stack and some older HLS versions)
# - raw.githubusercontent.com (for the yaml metadata)
# - downloads.haskell.org (for everything else)
#
# E.g. when we have 'https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml'
# and the following mirror config
#
# "raw.githubusercontent.com":
# authority:
# host: "mirror.sjtu.edu.cn"
# pathPrefix: "ghcup/yaml"
#
# Then the resulting url will be 'https://mirror.sjtu.edu.cn/ghcup/yaml/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml'
mirrors:
"github.com":
authority:
host: "mirror.sjtu.edu.cn"
"raw.githubusercontent.com":
authority:
host: "mirror.sjtu.edu.cn"
pathPrefix: "ghcup/yaml"
"downloads.haskell.org":
authority:
host: "mirror.sjtu.edu.cn"
# Arguments to pass to the configure script of the prebuilt bindist.
#
# Do not pass '--prefix' here.
#
# GHCup by default passes '--disable-ld-override', so if you want to enable
# the vanilla way, which aggressively favors 'ld.gold' linker, add the following:
def-ghc-conf-options:
- "--enable-ld-override"

1
data/metadata Submodule

@ -0,0 +1 @@
Subproject commit c9dae0c58799854823e8c41858ca4cc172ef4c8b

View File

@ -0,0 +1,71 @@
FROM --platform=linux/i386 i386/alpine:3.16
ENV LANG C.UTF-8
RUN apk add --no-cache \
curl \
gcc \
g++ \
binutils \
binutils-gold \
coreutils \
bsd-compat-headers \
gmp-dev \
ncurses-dev \
libffi-dev \
make \
xz \
tar \
perl \
bash \
diffutils \
git \
gzip \
gnupg && \
apk add --no-cache \
zlib \
zlib-dev \
zlib-static \
bzip2 \
bzip2-dev \
bzip2-static \
gmp \
gmp-dev \
openssl-dev \
openssl-libs-static \
xz \
xz-dev \
ncurses-static
ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/i386-linux-ghcup-$GHCUP_VERSION && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
gpg --verify SHA256SUMS.sig SHA256SUMS && \
sha256sum -c --ignore-missing SHA256SUMS && \
mv i386-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=9.4.8
ARG CABAL_INSTALL=3.10.2.0
ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1
# install haskell toolchain
RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
rm -rf "/usr/share/doc/ghc-${GHC}" && \
rm -rf /tmp/ghcup* && \
ghcup gc -p -s -c -t
ENV PATH /root/.cabal/bin:/root/.ghcup:/root/.local/bin:$PATH

View File

@ -0,0 +1,72 @@
FROM alpine:3.12
ENV LANG C.UTF-8
RUN apk add --no-cache \
curl \
gcc \
g++ \
binutils \
binutils-gold \
coreutils \
bsd-compat-headers \
gmp-dev \
ncurses-dev \
libffi-dev \
make \
xz \
tar \
perl \
bash \
diffutils \
git \
gzip \
gnupg && \
apk add --no-cache \
zlib \
zlib-dev \
zlib-static \
bzip2 \
bzip2-dev \
bzip2-static \
gmp \
gmp-dev \
openssl-dev \
openssl-libs-static \
xz \
xz-dev \
ncurses-static
ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
gpg --verify SHA256SUMS.sig SHA256SUMS && \
sha256sum -c --ignore-missing SHA256SUMS && \
mv x86_64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=9.4.8
ARG CABAL_INSTALL=3.10.2.0
ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1
# install haskell toolchain
RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
rm -rf "/usr/share/doc/ghc-${GHC}" && \
rm -rf /tmp/ghcup* && \
ghcup gc -p -s -c -t
ENV PATH /root/.cabal/bin:/root/.ghcup:/root/.local/bin:$PATH

View File

@ -0,0 +1,61 @@
FROM arm32v7/debian:10
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Singapore
COPY update_opt.sh /usr/bin/update_opt.sh
RUN chmod +x /usr/bin/update_opt.sh
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
dirmngr \
g++ \
git \
gnupg \
libsqlite3-dev \
libtinfo-dev \
libgmp-dev \
make \
netbase \
openssh-client \
xz-utils \
zlib1g-dev \
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
llvm-11 clang-11 && \
rm -rf /var/lib/apt/lists/*
RUN update_opt.sh 11 1
ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/armv7-linux-ghcup-$GHCUP_VERSION && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
gpg --verify SHA256SUMS.sig SHA256SUMS && \
sha256sum -c --ignore-missing SHA256SUMS && \
mv armv7-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=9.2.8
ARG CABAL_INSTALL=3.6.2.0
ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1
# install haskell toolchain
RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
ghcup gc -s -c -t
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
CMD ["ghci"]

View File

@ -0,0 +1,36 @@
#!/bin/bash
# update_alternatives.sh
update_alternatives() {
local version=${1}
local priority=${2}
local master=${3}
local slaves=${4}
local path=${5}
local cmdln
cmdln="--verbose --install ${path}${master} ${master} ${path}${master}-${version} ${priority}"
for slave in ${slaves}; do
cmdln="${cmdln} --slave ${path}${slave} ${slave} ${path}${slave}-${version}"
done
update-alternatives ${cmdln}
}
if [[ ${#} -ne 2 ]]; then
echo usage: "${0}" clang_version priority
exit 1
fi
version=${1}
priority=${2}
path="/usr/bin/"
master="llvm-config"
slaves="llvm-addr2line llvm-ar llvm-as llvm-bcanalyzer llvm-bitcode-strip llvm-cat llvm-cfi-verify llvm-cov llvm-c-test llvm-cvtres llvm-cxxdump llvm-cxxfilt llvm-cxxmap llvm-debuginfod llvm-debuginfod-find llvm-diff llvm-dis llvm-dlltool llvm-dwarfdump llvm-dwarfutil llvm-dwp llvm-exegesis llvm-extract llvm-gsymutil llvm-ifs llvm-install-name-tool llvm-jitlink llvm-jitlink-executor llvm-lib llvm-libtool-darwin llvm-link llvm-lipo llvm-lto llvm-lto2 llvm-mc llvm-mca llvm-ml llvm-modextract llvm-mt llvm-nm llvm-objcopy llvm-objdump llvm-omp-device-info llvm-opt-report llvm-otool llvm-pdbutil llvm-PerfectShuffle llvm-profdata llvm-profgen llvm-ranlib llvm-rc llvm-readelf llvm-readobj llvm-reduce llvm-remark-size-diff llvm-rtdyld llvm-sim llvm-size llvm-split llvm-stress llvm-strings llvm-strip llvm-symbolizer llvm-tapi-diff llvm-tblgen llvm-tli-checker llvm-undname llvm-windres llvm-xray"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
master="clang"
slaves="analyze-build asan_symbolize bugpoint c-index-test clang++ clang-apply-replacements clang-change-namespace clang-check clang-cl clang-cpp clangd clang-doc clang-extdef-mapping clang-format clang-format-diff clang-include-fixer clang-linker-wrapper clang-move clang-nvlink-wrapper clang-offload-bundler clang-offload-packager clang-offload-wrapper clang-pseudo clang-query clang-refactor clang-rename clang-reorder-fields clang-repl clang-scan-deps clang-tidy count diagtool dsymutil FileCheck find-all-symbols git-clang-format hmaptool hwasan_symbolize intercept-build ld64.lld ld.lld llc lld lldb lldb-argdumper lldb-instr lldb-server lldb-vscode lld-link lli lli-child-target modularize not obj2yaml opt pp-trace run-clang-tidy sancov sanstats scan-build scan-build-py scan-view split-file UnicodeNameMappingGenerator verify-uselistorder wasm-ld yaml2obj yaml-bench"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"

View File

@ -0,0 +1,61 @@
FROM arm32v7/ubuntu:focal
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Singapore
COPY update_opt.sh /usr/bin/update_opt.sh
RUN chmod +x /usr/bin/update_opt.sh
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
dirmngr \
g++ \
git \
gnupg \
libsqlite3-dev \
libtinfo-dev \
libgmp-dev \
make \
netbase \
openssh-client \
xz-utils \
zlib1g-dev \
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
llvm-9 clang-9 && \
rm -rf /var/lib/apt/lists/*
RUN update_opt.sh 9 1
ARG GHCUP_VERSION=0.1.19.4
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C
# install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/armv7-linux-ghcup-$GHCUP_VERSION && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
gpg --verify SHA256SUMS.sig SHA256SUMS && \
sha256sum -c --ignore-missing SHA256SUMS && \
mv armv7-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=8.10.7
ARG CABAL_INSTALL=3.6.2.0
ARG STACK=2.9.1
ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1
# install haskell toolchain
RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
ghcup gc -s -c -t
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
CMD ["ghci"]

View File

@ -0,0 +1,36 @@
#!/bin/bash
# update_alternatives.sh
update_alternatives() {
local version=${1}
local priority=${2}
local master=${3}
local slaves=${4}
local path=${5}
local cmdln
cmdln="--verbose --install ${path}${master} ${master} ${path}${master}-${version} ${priority}"
for slave in ${slaves}; do
cmdln="${cmdln} --slave ${path}${slave} ${slave} ${path}${slave}-${version}"
done
update-alternatives ${cmdln}
}
if [[ ${#} -ne 2 ]]; then
echo usage: "${0}" clang_version priority
exit 1
fi
version=${1}
priority=${2}
path="/usr/bin/"
master="llvm-config"
slaves="llvm-addr2line llvm-ar llvm-as llvm-bcanalyzer llvm-bitcode-strip llvm-cat llvm-cfi-verify llvm-cov llvm-c-test llvm-cvtres llvm-cxxdump llvm-cxxfilt llvm-cxxmap llvm-debuginfod llvm-debuginfod-find llvm-diff llvm-dis llvm-dlltool llvm-dwarfdump llvm-dwarfutil llvm-dwp llvm-exegesis llvm-extract llvm-gsymutil llvm-ifs llvm-install-name-tool llvm-jitlink llvm-jitlink-executor llvm-lib llvm-libtool-darwin llvm-link llvm-lipo llvm-lto llvm-lto2 llvm-mc llvm-mca llvm-ml llvm-modextract llvm-mt llvm-nm llvm-objcopy llvm-objdump llvm-omp-device-info llvm-opt-report llvm-otool llvm-pdbutil llvm-PerfectShuffle llvm-profdata llvm-profgen llvm-ranlib llvm-rc llvm-readelf llvm-readobj llvm-reduce llvm-remark-size-diff llvm-rtdyld llvm-sim llvm-size llvm-split llvm-stress llvm-strings llvm-strip llvm-symbolizer llvm-tapi-diff llvm-tblgen llvm-tli-checker llvm-undname llvm-windres llvm-xray"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
master="clang"
slaves="analyze-build asan_symbolize bugpoint c-index-test clang++ clang-apply-replacements clang-change-namespace clang-check clang-cl clang-cpp clangd clang-doc clang-extdef-mapping clang-format clang-format-diff clang-include-fixer clang-linker-wrapper clang-move clang-nvlink-wrapper clang-offload-bundler clang-offload-packager clang-offload-wrapper clang-pseudo clang-query clang-refactor clang-rename clang-reorder-fields clang-repl clang-scan-deps clang-tidy count diagtool dsymutil FileCheck find-all-symbols git-clang-format hmaptool hwasan_symbolize intercept-build ld64.lld ld.lld llc lld lldb lldb-argdumper lldb-instr lldb-server lldb-vscode lld-link lli lli-child-target modularize not obj2yaml opt pp-trace run-clang-tidy sancov sanstats scan-build scan-build-py scan-view split-file UnicodeNameMappingGenerator verify-uselistorder wasm-ld yaml2obj yaml-bench"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"

View File

@ -0,0 +1,61 @@
FROM arm64v8/debian:10
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Singapore
COPY update_opt.sh /usr/bin/update_opt.sh
RUN chmod +x /usr/bin/update_opt.sh
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
dirmngr \
g++ \
git \
gnupg \
libsqlite3-dev \
libtinfo-dev \
libgmp-dev \
make \
netbase \
openssh-client \
xz-utils \
zlib1g-dev \
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
llvm-11 clang-11 && \
rm -rf /var/lib/apt/lists/*
RUN update_opt.sh 11 1
ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/aarch64-linux-ghcup-$GHCUP_VERSION && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
gpg --verify SHA256SUMS.sig SHA256SUMS && \
sha256sum -c --ignore-missing SHA256SUMS && \
mv aarch64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=9.4.8
ARG CABAL_INSTALL=3.10.2.0
ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1
# install haskell toolchain
RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
ghcup gc -s -c -t
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
CMD ["ghci"]

View File

@ -0,0 +1,36 @@
#!/bin/bash
# update_alternatives.sh
update_alternatives() {
local version=${1}
local priority=${2}
local master=${3}
local slaves=${4}
local path=${5}
local cmdln
cmdln="--verbose --install ${path}${master} ${master} ${path}${master}-${version} ${priority}"
for slave in ${slaves}; do
cmdln="${cmdln} --slave ${path}${slave} ${slave} ${path}${slave}-${version}"
done
update-alternatives ${cmdln}
}
if [[ ${#} -ne 2 ]]; then
echo usage: "${0}" clang_version priority
exit 1
fi
version=${1}
priority=${2}
path="/usr/bin/"
master="llvm-config"
slaves="llvm-addr2line llvm-ar llvm-as llvm-bcanalyzer llvm-bitcode-strip llvm-cat llvm-cfi-verify llvm-cov llvm-c-test llvm-cvtres llvm-cxxdump llvm-cxxfilt llvm-cxxmap llvm-debuginfod llvm-debuginfod-find llvm-diff llvm-dis llvm-dlltool llvm-dwarfdump llvm-dwarfutil llvm-dwp llvm-exegesis llvm-extract llvm-gsymutil llvm-ifs llvm-install-name-tool llvm-jitlink llvm-jitlink-executor llvm-lib llvm-libtool-darwin llvm-link llvm-lipo llvm-lto llvm-lto2 llvm-mc llvm-mca llvm-ml llvm-modextract llvm-mt llvm-nm llvm-objcopy llvm-objdump llvm-omp-device-info llvm-opt-report llvm-otool llvm-pdbutil llvm-PerfectShuffle llvm-profdata llvm-profgen llvm-ranlib llvm-rc llvm-readelf llvm-readobj llvm-reduce llvm-remark-size-diff llvm-rtdyld llvm-sim llvm-size llvm-split llvm-stress llvm-strings llvm-strip llvm-symbolizer llvm-tapi-diff llvm-tblgen llvm-tli-checker llvm-undname llvm-windres llvm-xray"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
master="clang"
slaves="analyze-build asan_symbolize bugpoint c-index-test clang++ clang-apply-replacements clang-change-namespace clang-check clang-cl clang-cpp clangd clang-doc clang-extdef-mapping clang-format clang-format-diff clang-include-fixer clang-linker-wrapper clang-move clang-nvlink-wrapper clang-offload-bundler clang-offload-packager clang-offload-wrapper clang-pseudo clang-query clang-refactor clang-rename clang-reorder-fields clang-repl clang-scan-deps clang-tidy count diagtool dsymutil FileCheck find-all-symbols git-clang-format hmaptool hwasan_symbolize intercept-build ld64.lld ld.lld llc lld lldb lldb-argdumper lldb-instr lldb-server lldb-vscode lld-link lli lli-child-target modularize not obj2yaml opt pp-trace run-clang-tidy sancov sanstats scan-build scan-build-py scan-view split-file UnicodeNameMappingGenerator verify-uselistorder wasm-ld yaml2obj yaml-bench"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"

View File

@ -0,0 +1,61 @@
FROM arm64v8/ubuntu:focal
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Singapore
COPY update_opt.sh /usr/bin/update_opt.sh
RUN chmod +x /usr/bin/update_opt.sh
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
dirmngr \
g++ \
git \
gnupg \
libsqlite3-dev \
libtinfo-dev \
libgmp-dev \
make \
netbase \
openssh-client \
xz-utils \
zlib1g-dev \
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
llvm-9 clang-9 && \
rm -rf /var/lib/apt/lists/*
RUN update_opt.sh 9 1
ARG GHCUP_VERSION=0.1.19.4
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C
# install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/aarch64-linux-ghcup-$GHCUP_VERSION && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
gpg --verify SHA256SUMS.sig SHA256SUMS && \
sha256sum -c --ignore-missing SHA256SUMS && \
mv aarch64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=8.10.7
ARG CABAL_INSTALL=3.6.2.0
ARG STACK=2.9.1
ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1
# install haskell toolchain
RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
ghcup gc -s -c -t
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
CMD ["ghci"]

View File

@ -0,0 +1,36 @@
#!/bin/bash
# update_alternatives.sh
update_alternatives() {
local version=${1}
local priority=${2}
local master=${3}
local slaves=${4}
local path=${5}
local cmdln
cmdln="--verbose --install ${path}${master} ${master} ${path}${master}-${version} ${priority}"
for slave in ${slaves}; do
cmdln="${cmdln} --slave ${path}${slave} ${slave} ${path}${slave}-${version}"
done
update-alternatives ${cmdln}
}
if [[ ${#} -ne 2 ]]; then
echo usage: "${0}" clang_version priority
exit 1
fi
version=${1}
priority=${2}
path="/usr/bin/"
master="llvm-config"
slaves="llvm-addr2line llvm-ar llvm-as llvm-bcanalyzer llvm-bitcode-strip llvm-cat llvm-cfi-verify llvm-cov llvm-c-test llvm-cvtres llvm-cxxdump llvm-cxxfilt llvm-cxxmap llvm-debuginfod llvm-debuginfod-find llvm-diff llvm-dis llvm-dlltool llvm-dwarfdump llvm-dwarfutil llvm-dwp llvm-exegesis llvm-extract llvm-gsymutil llvm-ifs llvm-install-name-tool llvm-jitlink llvm-jitlink-executor llvm-lib llvm-libtool-darwin llvm-link llvm-lipo llvm-lto llvm-lto2 llvm-mc llvm-mca llvm-ml llvm-modextract llvm-mt llvm-nm llvm-objcopy llvm-objdump llvm-omp-device-info llvm-opt-report llvm-otool llvm-pdbutil llvm-PerfectShuffle llvm-profdata llvm-profgen llvm-ranlib llvm-rc llvm-readelf llvm-readobj llvm-reduce llvm-remark-size-diff llvm-rtdyld llvm-sim llvm-size llvm-split llvm-stress llvm-strings llvm-strip llvm-symbolizer llvm-tapi-diff llvm-tblgen llvm-tli-checker llvm-undname llvm-windres llvm-xray"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
master="clang"
slaves="analyze-build asan_symbolize bugpoint c-index-test clang++ clang-apply-replacements clang-change-namespace clang-check clang-cl clang-cpp clangd clang-doc clang-extdef-mapping clang-format clang-format-diff clang-include-fixer clang-linker-wrapper clang-move clang-nvlink-wrapper clang-offload-bundler clang-offload-packager clang-offload-wrapper clang-pseudo clang-query clang-refactor clang-rename clang-reorder-fields clang-repl clang-scan-deps clang-tidy count diagtool dsymutil FileCheck find-all-symbols git-clang-format hmaptool hwasan_symbolize intercept-build ld64.lld ld.lld llc lld lldb lldb-argdumper lldb-instr lldb-server lldb-vscode lld-link lli lli-child-target modularize not obj2yaml opt pp-trace run-clang-tidy sancov sanstats scan-build scan-build-py scan-view split-file UnicodeNameMappingGenerator verify-uselistorder wasm-ld yaml2obj yaml-bench"
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"

View File

@ -0,0 +1,10 @@
<svg width="71" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#23272A"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="71" height="55" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

7
docs/Matrix_logo.svg Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 75 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<title>Matrix (protocol) logo</title>
<g fill="#040404">
<path d="m0.936 0.732v30.52h2.194v0.732h-3.035v-31.98h3.034v0.732zm8.45 9.675v1.544h0.044a4.461 4.461 0 0 1 1.487-1.368c0.58-0.323 1.245-0.485 1.993-0.485 0.72 0 1.377 0.14 1.972 0.42 0.595 0.279 1.047 0.771 1.355 1.477 0.338-0.5 0.796-0.941 1.377-1.323 0.58-0.383 1.266-0.574 2.06-0.574 0.602 0 1.16 0.074 1.674 0.22 0.514 0.148 0.954 0.383 1.322 0.707 0.366 0.323 0.653 0.746 0.859 1.268 0.205 0.522 0.308 1.15 0.308 1.887v7.633h-3.127v-6.464c0-0.383-0.015-0.743-0.044-1.082a2.305 2.305 0 0 0-0.242-0.882 1.473 1.473 0 0 0-0.584-0.596c-0.257-0.146-0.606-0.22-1.047-0.22-0.44 0-0.796 0.085-1.068 0.253-0.272 0.17-0.485 0.39-0.639 0.662a2.654 2.654 0 0 0-0.308 0.927 7.074 7.074 0 0 0-0.078 1.048v6.354h-3.128v-6.398c0-0.338-7e-3 -0.673-0.021-1.004a2.825 2.825 0 0 0-0.188-0.916 1.411 1.411 0 0 0-0.55-0.673c-0.258-0.168-0.636-0.253-1.135-0.253a2.33 2.33 0 0 0-0.584 0.1 1.94 1.94 0 0 0-0.705 0.374c-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.357v6.619h-3.129v-11.41zm16.46 1.677a3.751 3.751 0 0 1 1.233-1.17 5.37 5.37 0 0 1 1.685-0.629 9.579 9.579 0 0 1 1.884-0.187c0.573 0 1.153 0.04 1.74 0.121 0.588 0.081 1.124 0.24 1.609 0.475 0.484 0.235 0.88 0.562 1.19 0.981 0.308 0.42 0.462 0.975 0.462 1.666v5.934c0 0.516 0.03 1.008 0.088 1.478 0.058 0.471 0.161 0.824 0.308 1.06h-3.171a4.435 4.435 0 0 1-0.22-1.104c-0.5 0.515-1.087 0.876-1.762 1.081a7.084 7.084 0 0 1-2.071 0.31c-0.544 0-1.05-0.067-1.52-0.2a3.472 3.472 0 0 1-1.234-0.617 2.87 2.87 0 0 1-0.826-1.059c-0.199-0.426-0.298-0.934-0.298-1.522 0-0.647 0.114-1.18 0.342-1.6 0.227-0.419 0.52-0.753 0.881-1.004 0.36-0.25 0.771-0.437 1.234-0.562 0.462-0.125 0.929-0.224 1.399-0.298 0.47-0.073 0.932-0.132 1.387-0.176 0.456-0.044 0.86-0.11 1.212-0.199 0.353-0.088 0.631-0.217 0.837-0.386s0.301-0.415 0.287-0.74c0-0.337-0.055-0.606-0.166-0.804a1.217 1.217 0 0 0-0.44-0.464 1.737 1.737 0 0 0-0.639-0.22 5.292 5.292 0 0 0-0.782-0.055c-0.617 0-1.101 0.132-1.454 0.397-0.352 0.264-0.558 0.706-0.617 1.323h-3.128c0.044-0.735 0.227-1.345 0.55-1.83zm6.179 4.423a5.095 5.095 0 0 1-0.639 0.165 9.68 9.68 0 0 1-0.716 0.11c-0.25 0.03-0.5 0.067-0.749 0.11a5.616 5.616 0 0 0-0.694 0.177 2.057 2.057 0 0 0-0.594 0.298c-0.17 0.125-0.305 0.284-0.408 0.474-0.103 0.192-0.154 0.434-0.154 0.728 0 0.28 0.051 0.515 0.154 0.706 0.103 0.192 0.242 0.342 0.419 0.453 0.176 0.11 0.381 0.187 0.617 0.231 0.234 0.044 0.477 0.066 0.726 0.066 0.617 0 1.094-0.102 1.432-0.309 0.338-0.205 0.587-0.452 0.75-0.739 0.16-0.286 0.26-0.576 0.297-0.87 0.036-0.295 0.055-0.53 0.055-0.707v-1.17a1.4 1.4 0 0 1-0.496 0.277zm11.86-6.1v2.096h-2.291v5.647c0 0.53 0.088 0.883 0.264 1.059 0.176 0.177 0.529 0.265 1.057 0.265 0.177 0 0.345-7e-3 0.507-0.022 0.161-0.015 0.316-0.037 0.463-0.066v2.426a7.49 7.49 0 0 1-0.882 0.089 21.67 21.67 0 0 1-0.947 0.022c-0.484 0-0.944-0.034-1.377-0.1a3.233 3.233 0 0 1-1.145-0.386 2.04 2.04 0 0 1-0.782-0.816c-0.191-0.353-0.287-0.816-0.287-1.39v-6.728h-1.894v-2.096h1.894v-3.42h3.129v3.42h2.29zm4.471 0v2.118h0.044a3.907 3.907 0 0 1 1.454-1.754 4.213 4.213 0 0 1 1.036-0.497 3.734 3.734 0 0 1 1.145-0.176c0.206 0 0.433 0.037 0.683 0.11v2.912a5.862 5.862 0 0 0-0.528-0.077 5.566 5.566 0 0 0-0.595-0.033c-0.573 0-1.058 0.096-1.454 0.287a2.52 2.52 0 0 0-0.958 0.783 3.143 3.143 0 0 0-0.518 1.158 6.32 6.32 0 0 0-0.154 1.434v5.14h-3.128v-11.4zm5.684-1.765v-2.582h3.128v2.582h-3.127zm3.128 1.765v11.4h-3.127v-11.4h3.128zm1.63 0h3.569l2.005 2.978 1.982-2.978h3.459l-3.745 5.339 4.208 6.067h-3.57l-2.378-3.596-2.38 3.596h-3.502l4.097-6.001zm15.3 20.84v-30.52h-2.194v-0.732h3.035v31.98h-3.035v-0.732z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

36
docs/Octicons-bug.svg Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="800.3468"
width="733.88495"
version="1.1"
id="svg4"
sodipodi:docname="Octicons-bug.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.85253906"
inkscape:cx="367.1386"
inkscape:cy="432.23826"
inkscape:window-width="3828"
inkscape:window-height="2081"
inkscape:window-x="0"
inkscape:window-y="46"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="m 243.6206,76.877783 c -52.874,56.780997 -38.281,147.468997 -38.281,147.468997 0,0 53.968,64 160,64 106.031,0 160.031,-64 160.031,-64 0,0 14.375,-89.469 -37.375,-146.311997 32.375,-18.031 51.438,-44.094 43.562,-61.812 -8.938,-19.9689999 -48.375,-21.7499999 -88.25,-3.969 -14.812,6.594 -27.438,14.969 -37.25,23.875 -12.438,-2.25 -25.625,-3.781 -40.72,-3.781 -14.061,0 -26.561,1.344 -38.344,3.25 -9.656,-8.75 -22.062,-16.875 -36.531,-23.344 -39.875,-17.7189999 -79.375,-15.9379999 -88.25,3.969 -7.748,17.343 10.284,42.686 41.408,60.655 z m 401.125,413.218997 c -8.25,-1.75 -16.125,-2.75 -23.75,-3.5 0,-2.125 0.375,-4.125 0.375,-6.312 0,-33.594 -4.75,-65.654 -12.438,-96.125 16.438,1.406 37.375,-2.375 58.562,-11.779 39.875,-17.781 65,-48.375 56.125,-68.219 -8.875,-19.969 -48.375,-21.75 -88.25,-3.969 -18.625,8.312 -33.812,19.469 -44,30.906 -7.75,-18.25 -16.5,-35.781 -26.812,-51.719 -30.188,25.156 -87.312,62.719 -167.062,71.062 v 321.781 c 0,0 -0.25,32 -32.031,32 -31.75,0 -32,-32 -32,-32 v -321.657 c -79.811,-8.344 -136.968,-45.969 -167.093,-71.062 -9.875,15.312 -18.375,32 -25.938,49.344 -10.281,-10.625 -24.625,-20.844 -41.969,-28.594 -39.875,-17.719 -79.375,-15.938 -88.25,3.969 -8.9060001,19.906 16.25,50.438 56.125,68.219 19.844,8.846 39.531,12.812 55.469,12.096 -7.656,30.404 -12.469,62.344 -12.469,95.812 0,2.188 0.375,4.25 0.438,6.5 -6.719,0.75 -13.688,1.75 -20.781,3.25 -51.969,10.75 -91.7810001,37.625 -88.84400014,59.812 2.93800004,22.312 47.50000014,31.5 99.59400014,20.688 6.781,-1.375 13.438,-3.125 19.781,-5.062 9.156,40.809 23.812,78.684 44.094,111.309 -12.031,6.062 -24.531,15 -36.031,26.625 -31.876,31.875 -44.812,70.625 -28.876,86.563 15.938,15.937 54.656,3 86.531,-28.812 9.344,-9.375 16.844,-19.25 22.656,-29 43.532,42.624 98.063,68.124 157.563,68.124 60.343,0 115.781,-26.25 159.531,-69.938 5.875,10.312 13.75,20.812 23.625,30.688 31.812,31.875 70.625,44.812 86.562,28.875 15.937,-15.937 3,-54.625 -28.875,-86.5 -12.312,-12.375 -25.688,-21.75 -38.438,-27.938 20.125,-32.5 34.625,-70.375 43.688,-111.062 7.188,2.25 14.688,4.375 22.562,6.062 52.061,10.812 96.625,1.562 99.625,-20.688 2.813,-22.124 -36.999,-48.999 -88.999,-59.749 z"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

327
docs/about.md Normal file
View File

@ -0,0 +1,327 @@
# About
All you wanted to know about GHCup.
## Team
### Author and Maintainer
* [Julian Ospald](https://github.com/hasufell) (aka: maerwald, hasufell)
### Collaborators
* [Arjun Kathuria](https://github.com/arjunkathuria)
* [Ben Gamari](https://github.com/bgamari)
* [Javier Neira](https://github.com/jneira)
### Contributors
* amesgen
* Chris Smith
* Anton-Latukha
* Brian McKenna
* Huw campbell
* Tom Ellis
* Sigmund Vestergaard
* Ron Toland
* Paolo Martini
* Mario Lang
* Jan Hrček
* vglfr
* Fendor
* Enrico Maria De Angelis
* Emily Pillmore
* Colin Barrett
* Artur Gajowy
### Sponsors
* All [opencollective](https://opencollective.com/ghcup#category-CONTRIBUTE) contributors
* [haskell.org](https://www.haskell.org/haskell-org-committee/) via CI and infrastructure
* [Haskell Foundation](https://haskell.foundation/affiliates/) via affiliation
## Project ownership and hierarchy
The project at the time of writing (2024-04-22) follows the model of
[benevolent dictator for life](https://en.wikipedia.org/wiki/Benevolent_dictator_for_life), which is
Julian Ospald at the moment.
Ideally, the ownership should be shared across a core team of collaborators sharing the same vision and
engagement in the future.
I do not believe in people making decisions over projects they are barely involved in. Instead I believe
in listening to end users needs very carefully and making decisions based on that. People who want a direct
influence on the decision process have to both demonstrate they share the vision of GHCup and do the actual
work.
"Work" here doesn't have to be "writing code". There are many ways to be engaged in a project.
### Transition plan in case of maintainer absence
In case the current maintainer of GHCup (Julian Ospald) is unreachable for a prolonged period of time (3 months),
the ownership of this project will be automatically transferred to the following individuals:
- [Moritz Angerman](https://github.com/angerman)
- [Andrew Lelechenko](https://github.com/Bodigrim)
They will be tasked with finding new maintainers in whatever way they see fit (be it appointing themselves or asking HF for help).
The appointed owners may choose to stay owners after the transition period (whether it's in a passive or active capacity) or
fully transfer ownership to someone else or an organization.
The community shall be informed about this process.
If not otherwise specified by the newly appointed owners, the following principles shall apply to the *transition period*:
#### During the transition period
During the transition period, no other individual or organization is allowed to drive changes to
[ghcup-hs](https://github.com/haskell/ghcup-hs) repository, unless they are explicitly allowed to do so by the appointed owners.
The following people (in addition to the owners) shall have full write access to the
[ghcup-metadata](https://github.com/haskell/ghcup-metadata) repository
(all files) for the length of the transition period, unless otherwise specified by the appointed owners:
- [Ben Gamari](https://github.com/bgamari)
- [Hécate Moonlight](https://github.com/Kleidukos)
- [Mike Pilgrem](https://github.com/mpilgrem)
- [Jens Petersen](https://github.com/juhp)
Contributions to the metadata are expected to follow a review process. If that turns out to be impractical due to lack of engagement, a wait
time of 2 days before merging shall be followed anyway, except for the `-vanilla` files, which may be merged at any time.
#### Access
The GHCup website, various scripts and unofficial bindists are hosted on haskell.org infrastructure. Contact the
[Haskell.org committee](https://www.haskell.org/haskell-org-committee/) for access.
The backup owners should already have admin rights on the GHCup repositories, which are hosted on the
[Github haskell namespace](https://github.com/haskell). In case of issues contact one of the
organization admins for access, e.g.:
- [Andrew Lelechenko](https://github.com/orgs/haskell/people/Bodigrim)
- [gbaz](https://github.com/orgs/haskell/people/gbaz)
- [Hécate Moonlight](https://github.com/Kleidukos)
- [davean](https://github.com/orgs/haskell/people/davean)
- [chessai](https://github.com/orgs/haskell/people/chessai)
The owners should already have access to the [hackage package](https://hackage.haskell.org/package/ghcup/maintainers/).
In case of issues contact the [hackage trustees](https://github.com/haskell-infra/hackage-trustees).
#### Private runners
Private runners maintained by Julian Ospald may cease to work. Moritz Angerman will have SSH access to the machines.
However, no one will have access to the Hetzner account and billing information. As such, those runners will simply
have to be replaced.
## How to help
* if you want to contribute code or documentation, check out the [issue tracker](https://github.com/haskell/ghcup-hs/issues) and the [Development guide](./dev.md)
* if you want to propose features or write user feedback, feel free to [open a ticket](https://github.com/haskell/ghcup-hs/issues/new)
* if you want to donate to the project, visit our [opencollective](https://opencollective.com/ghcup#category-CONTRIBUTE) page
## Design goals
1. simplicity
2. non-interactive CLI interface
3. portable
4. do one thing and do it well (UNIX philosophy)
## Non-goals
1. invoking `sudo`, `apt-get` or *any* package manager
2. handling system packages
3. handling cabal projects
4. being a stack alternative
## Distribution policies
Like most Linux distros and other distribution channels, GHCup also
follows certain policies. These are as follows:
1. The end-user experience is our primary concern
- ghcup in CI systems as a use case is a first class citizen
2. We strive to collaborate with all maintainers of all the tools we support and maintain a good relationship
3. We may fix build system or other distribution bugs in upstream bindists
- these are always communicated upstream
4. We may even patch source code of supported tools in very rare cases if that is required to ensure that the end-user experience does not break
- we'll first try to upstream any such required patch and request a new release to avoid downstream patching
- patches will be communicated to the maintainers either way and we'll strive to get their review
- they will also be communicated to the end-user
- they will be uploaded along with the bindist
- we will avoid maintaining long-running downstream patches (currently zero)
5. We may add bindists for platforms that upstream does not support
- this is currently the case for GHC for e.g. Alpine and possibly FreeBSD in the future
- this is currently also the case for stack on darwin M1
- we don't guarantee for unofficial bindists that the test suite passes at the moment (this may change in the future)
6. We GPG sign all the GHCup metadata as well as the unofficial bindists
- any trust issues relating to missing checksums or GPG signatures is a bug and given high priority
## How
Installs a specified GHC version into `~/.ghcup/ghc/<ver>`, and places `ghc-<ver>` symlinks in `~/.ghcup/bin/`.
Optionally, an unversioned `ghc` link can point to a default version of your choice.
This uses precompiled GHC binaries that have been compiled on fedora/debian by [upstream GHC](https://www.haskell.org/ghc/download_ghc_8_6_1.html#binaries).
Alternatively, you can also tell it to compile from source (note that this might fail due to missing requirements).
cabal-install/HLS/stack are installed in `~/.ghcup/bin/<tool>-<ver>` and have unversioned symlinks to the latest version by default (`~/.ghcup/bin/<tool>-<ver>`).
## Known users
* CI:
- [Github actions/virtual-environments](https://github.com/actions/virtual-environments)
- [Github haskell/actions/setup](https://github.com/haskell/actions/tree/main/setup)
- [haskell-ci](https://github.com/haskell-CI/haskell-ci)
* mirrors:
- [sjtug](https://mirror.sjtu.edu.cn/docs/ghcup)
* tools:
- [vscode-haskell](https://github.com/haskell/vscode-haskell)
- [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer)
- [vabal](https://github.com/Franciman/vabal)
## Known problems
### Custom ghc version names
When installing ghc bindists with custom version names as outlined in
[installing custom bindists](guide.md#installing-custom-bindists), then cabal might
be unable to find the correct `ghc-pkg` (also see [#73](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/73))
if you use `cabal build --with-compiler=ghc-foo`. Instead, point it to the full path, such as:
`cabal build --with-compiler=$HOME/.ghcup/ghc/<version-name>/bin/ghc` or set that GHC version
as the current one via: `ghcup set ghc <version-name>`.
This problem doesn't exist for regularly installed GHC versions.
### Limited distributions supported
Currently only GNU/Linux distributions compatible with the [upstream GHC](https://www.haskell.org/ghc/download_ghc_8_6_1.html#binaries) binaries are supported.
### Precompiled binaries
Since this uses precompiled binaries you may run into
several problems.
#### Missing libtinfo (ncurses)
You may run into problems with *ncurses* and **missing libtinfo**, in case
your distribution doesn't use the legacy way of building
ncurses and has no compatibility symlinks in place.
Ask your distributor on how to solve this or
try to compile from source via `ghcup compile <version>`.
#### Libnuma required
This was a [bug](https://ghc.haskell.org/trac/ghc/ticket/15688) in the build system of some GHC versions that lead to
unconditionally enabled libnuma support. To mitigate this you might have to install the libnuma
package of your distribution. See [here](https://gitlab.haskell.org/haskell/ghcup/issues/58) for a discussion.
### Compilation
Although this script can compile GHC for you, it's just a very thin
wrapper around the build system. It makes no effort in trying
to figure out whether you have the correct toolchain and
the correct dependencies. Refer to [the official docs](https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Linux)
on how to prepare your environment for building GHC.
### Stack support
There may be a number of bugs when trying to make ghcup installed GHC versions work with stack,
such as:
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/188
Further, stack's upgrade procedure may break/confuse ghcup. There are a number of integration
issues discussed here:
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/153
### Windows support
Windows support is in early stages. Since windows doesn't support symbolic links properly,
ghcup uses a [shimgen wrapper](https://github.com/71/scoop-better-shimexe). It seems to work
well, but there may be unknown issues with that approach.
Windows 7 and Powershell 2.0 aren't well supported at the moment, also see:
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197
## FAQ
### Is ghcup really the main installer?
This is based on the Haskell survey results from 2022, which show that more
than half of survey participants use GHCup: https://taylor.fausak.me/2022/11/18/haskell-survey-results/
### Why reimplement stack?
GHCup is not a reimplementation of stack. The only common part is automatic installation of GHC,
but even that differs in scope and design.
### Why should I use ghcup over stack?
GHCup is not a replacement for stack. Instead, it supports installing and managing stack versions.
It does the same for cabal, GHC and HLS. As such, It doesn't make a workflow choice for you.
### Why should I let ghcup manage stack?
You don't need to. However, some users seem to prefer to have a central tool that manages cabal and stack
at the same time. Additionally, it can allow better sharing of GHC installation across these tools.
Also see:
* https://docs.haskellstack.org/en/stable/yaml_configuration/#system-ghc
* https://github.com/commercialhaskell/stack/pull/5585
### Why does ghcup not use stack code?
1. GHCup started as a shell script. At the time of rewriting it in Haskell, the authors didn't even know that stack exposes *some* of its [installation API](https://hackage.haskell.org/package/stack-2.5.1.1/docs/Stack-Setup.html)
2. it doesn't support cabal installation, which was the main motivation behind GHCup back then
3. depending on a codebase as big as stack for a central part of one's application without having a short contribution pipeline would likely have caused stagnation or resulted in simply copy-pasting the relevant code in order to adjust it
4. it's not clear how GHCup would have been implemented with the provided API. It seems the codebases are fairly different. GHCup does a lot of symlink handling to expose a central `bin/` directory that users can easily put in PATH, without having to worry about anything more. It also provides explicit removal functionality, GHC cross-compilation, a TUI, etc etc.
### Why not unify...
#### ...stack and Cabal and do away with standalone installers
GHCup is not involved in such decisions. cabal-install and stack might have a
sufficiently different user experience to warrant having a choice.
#### ...installer implementations and have a common library
This sounds like an interesting goal. However, GHC installation isn't a hard engineering problem
and the shared code wouldn't be too exciting. For such an effort to make sense, all involved
parties would need to collaborate and have a short pipeline to get patches in.
It's true this would solve the integration problem, but following unix principles, we can
do similar via **hooks**. Both cabal and stack can support installation hooks. These hooks
can then call into ghcup or anything else, also see:
* https://github.com/haskell/cabal/issues/7394
* https://github.com/commercialhaskell/stack/pull/5585
#### ...installers (like, all of it)
So far, there hasn't been an open discussion about this. Is this even a good idea?
Sometimes projects converge eventually if their overlap is big enough, sometimes they don't.
While unification sounds like a simplification of the ecosystem, it also takes away choice.
Take `curl` and `wget` as an example.
### Why not support windows?
Windows is supported since GHCup version 0.1.15.1.
### Why the haskell reimplementation?
GHCup started as a portable posix shell script of maybe 50 LOC. GHC installation itself can be carried out in
about ~3 lines of shell code (download, unpack , configure+make install). However, much convenient functionality
has been added since, as well as ensuring that all operations are safe and correct. The shell script ended up with
over 2k LOC, which was very hard to maintain.
The main concern when switching from a portable shell script to haskell was platform/architecture support.
However, ghcup now re-uses GHCs CI infrastructure and as such is perfectly in sync with all platforms that
GHC supports.

341
docs/css/extra.css Normal file
View File

@ -0,0 +1,341 @@
:root {
--theme-purple: #5E5184;
--theme-purple-dark: rgba(69, 59, 97, 0.5);
--ukraine-top: #0057B8;
--ukraine-bottom: #FFD700;
--link-pink: #9E358F;
}
h2
{
border-bottom:1px solid #CCC;
padding-bottom:5px;
padding-top:15px;
}
h1 {
text-align: center;
font-size: 60px;
font-weight: 300;
padding-top:15px;
}
h3 {
font-size: 30px;
padding-top:10px;
}
h4 {
font-size: 25px;
padding-top:10px;
}
.index-ghcup-hero {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.index-ghcup-hero img {
width: 10%;
min-width: 110px;
max-width: 120px;
border: none;
margin: 0;
}
.index-ghcup-hero h1 {
}
div.col-md-9 h1:first-of-type {
text-align: center;
font-size: 60px;
font-weight: 300;
}
div.col-md-9>p:first-of-type {
text-align: center;
}
div.col-md-9 p.admonition-title:first-of-type {
text-align: left;
}
div.col-md-9 h1:first-of-type .headerlink {
display: none;
}
code.no-highlight {
color: black;
}
div.gh-badge img {
margin: 0;
padding: 0;
height: 25px;
}
/* Definition List styles */
dd {
padding-left: 20px;
}
/* Homepage */
body.homepage div.jumbotron {
margin-top: 1.5rem;
padding-top: 1rem;
padding-bottom: 0;
}
body.homepage div.jumbotron div.card {
margin-bottom: 2rem;
}
body.homepage>div.container div.col-md-3 {
display: none;
}
body.homepage>div.container div.col-md-9 {
/* margin-left: 0; */
/* padding-left: 0; */
flex: 0 0 100%;
max-width: 100%;
}
.center {
display: block !important;
}
.bg-primary {
background-image: none;
background-color: var(--ukraine-top) !important;
}
body .bg-primary {
background-image: none;
background-color: var(--ukraine-top);
border: 0px;
}
body .btn-primary {
background-image: none;
background-color: var(--theme-purple);
border: 1px solid var(--theme-purple);
}
.navbar.fixed-top {
background-image: none;
background-color: var(--ukraine-top);
border-bottom: 40px solid var(--ukraine-bottom);
padding: 0px;
}
.btn-primary:hover {
background-color: var(--theme-purple);
border: 1px solid var(--theme-purple);
}
a {
color: var(--link-pink);
}
a:hover {
color: #996FC2;
}
#toc-collapse a.nav-link {
color: var(--link-pink);
}
#toc-collapse a:hover.nav-link {
color: #996FC2;
}
.col-md-9 img.main-logo {
border: 0px;
padding: 0px;
margin: 0px;
}
.ghcup-intro {
text-align: center;
}
.main-buttons {
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: center;
}
.main-buttons a {
margin-right: 5px;
margin-bottom: 5px;
}
.command-button {
display: flex;
align-items: center;
}
.command-button > pre {
flex: 0 1 80%;
margin: 0;
padding: 10px;
text-align: center;
background-color: #515151;
color: white;
border-radius: 3px;
box-shadow: inset 0px 0px 20px 0px #333333;
font-size: 1em;
white-space: nowrap;
overflow: auto;
}
.ghcup-command:before {
color: #999;
content: " $ ";
margin-left: 15px;
}
div.command-button {
display: flex;
align-items: center;
justify-content: center;
}
.command-button pre {
}
div.command-button button {
color: #515151;
background: rgb(230, 230, 230);
border: 1px solid grey;
margin: 0 0 0 10px;
padding: 10px;
flex-basis: 0 0 20%;
}
div.command-button button .fa {
font-size: x-large;
}
div.command-button button:hover {
background: rgb(220, 220, 220);
color: black;
border: 1px solid black;
}
div.command-button button:focus {
background-color: #04aa6d;
}
footer > hr {
border-top: 0.5px solid #CCC;
}
.qi-container {
display: flex;
flex-direction: column;
align-items: center;
box-sizing: border-box;
padding: 0.75rem;
background-color: rgb(250, 250, 250);
margin-top: 2rem;
margin-bottom: 2rem;
margin-left: auto;
margin-right: auto;
border-radius: 3px;
border: 1px solid rgb(204, 204, 204);
box-shadow:
4px 8px 10px -6px rgb(204, 204, 204),
4px 8px 10px -6px rgb(153, 111, 194);
}
@media only screen and (max-width:1000px) {
.qi-container {
box-shadow:
4px 10px 10px -6px rgb(204, 204, 204),
4px 10px 10px -9px rgb(153, 111, 194);
}
}
.index-cta-donate .donate-button a {
position: absolute;
top:0;
left: 0;
width: 100%;
height: 100%;
}
.index-cta-donate .donate-button {
margin: 10px auto;
position: relative;
display: block;
background: none;
padding: none;
border: none;
background: url("https://opencollective.com/webpack/donate/button@2x.png?color=blue");
width: 35%;
min-width: 240px;
max-width: 280px;
height: 40px;
background-size: contain;
background-repeat: no-repeat;
}
.ghcup-os-container {
width: 100%;
margin: 10px 0;
}
.ghcup-os-container > * {
text-align: center;
}
/* fix list overflows (esp about page) */
ul > li {
overflow-wrap: anywhere;
}
.footer {
color: grey;
font-size: 0.7em;
margin-top: 1rem;
margin-bottom: 1rem;
}
.footer div.show-all-platforms {
display: inline-block;
}
#help, #collective {
display: block;
text-align: center;
}
#help img {
border: none;
margin: 0px;
height: 24px;
}
.ghcup-help {
margin: 10px auto;
padding: 10px 0;
box-sizing: border-box;
}
#collective img {
border: none;
margin: 0px;
}
#collective {
margin-top: 10px;
}

142
docs/dev.md Normal file
View File

@ -0,0 +1,142 @@
# Development and contribution
All you wanted to know about GHCup development.
## Building
GHCup supports development via cabal and stack. E.g.:
* build via stack: `stack build`
* build via cabal (with whatever GHC version): `cabal build`
* build via cabal reproducibly with a specific GHC version
- GHC 8.10.7: `cabal build --project-file=cabal.ghc8107.project`
- GHC 9.0.2: `cabal build --project-file=cabal.ghc902.project`
- and so on (check supported versions via `ls cabal.ghc+([0-9]).project`)
* build the release binaries: `cabal build --project-file=cabal.project.release`
## Contribution process and expectations
* discuss your idea first before implementing anything
* GHCup is a dictatorship, so the final decisions are made by the author
* we don't manage contributors... you can work on anything you like
* reviews focus on logic and design, not on style and formatting
* remember that features, decisions and bugs are high impact, since GHCup is used in CIs, github workflows, etc.
## Module graph
[![Module graph](./modules_small.svg){: .center style="width:900px"}](./modules_wide.svg)
Main functionality is in `GHCup` module. Utility functions are
organised tree-ish in `GHCup.Utils` and `GHCup.Utils.*`.
Anything dealing with ghcup specific directories is in
`GHCup.Utils.Dirs`.
Download information on where to fetch bindists from is in the [ghcup-metadata](https://github.com/haskell/ghcup-metadata) repository.
## Design decisions
### Using [Excepts](https://hackage.haskell.org/package/haskus-utils-variant-3.0/docs/Haskus-Utils-Variant-Excepts.html) as a beefed up ExceptT
This is an open variant, similar to [plucky](https://hackage.haskell.org/package/plucky) or [oops](https://github.com/i-am-tom/oops) and allows us to combine different error types. Maybe it is too much and it's a little bit [unergonomic](https://github.com/haskus/packages/issues/32) at times. If it really hurts maintenance, it will be removed. It was more of an experiment.
### No use of haskell-TLS
I consider haskell-TLS an interesting experiment, but not a battle-tested and peer-reviewed crypto implementation. There is little to no research about what the intricacies of using haskell for low-level crypto are and how vulnerable such binaries are. Instead, we use either curl the binary or wget. There's also an implementation based on OpenSSL bindings, but it isn't enabled by default, since it would complicate shipping static binaries.
### Optics instead of lens
They're a little safer (less Monoid weirdness with view) and have better error messages. Consider the following with [lens](https://hackage.haskell.org/package/lens):
```
> view (_Just . to (++ "abc")) Nothing
""
```
vs [optics](https://hackage.haskell.org/package/optics):
```
> view (_Just % to (++ "abc")) Nothing
<interactive>:2:1: error:
• An_AffineFold cannot be used as A_Getter
• In the expression: view (_Just % to (++ "abc")) Nothing
In an equation for it: it = view (_Just % to (++ "abc")) Nothing
```
### StrictData on by default
Kazu Yamamoto [explained it in his PR](https://github.com/yesodweb/wai/pull/752#issuecomment-501531386) very well. I like to agree with him. The instances where we need non-strict behavior, we annotate it.
`Strict` is a little more odd as a default, since it depends on how you define your functions as well.
## Code style and formatting
Unfortunately, code formatters are semi-broken on this codebase, due to TH and CPP.
Some light suggestions:
1. mtl-style preferred
2. no overly pointfree style
3. use `where` a lot, so the main function body reads like prose
4. documentation is part of the code
## Common tasks
### Adding a new GHC version
Head over to: [https://github.com/haskell/ghcup-metadata#adding-a-new-ghc-version](https://github.com/haskell/ghcup-metadata#adding-a-new-ghc-version)
### Adding a new CLI command
An example illustration on how to deal with [optparse-applicative](https://hackage.haskell.org/package/optparse-applicative) can be seen here: [https://github.com/haskell/ghcup-hs/commit/c19dd5ee8b2edbaf0336af143f1c75b6f4843e26](https://github.com/haskell/ghcup-hs/commit/c19dd5ee8b2edbaf0336af143f1c75b6f4843e26)
Every subcommand now lives in its own module under [GHCup.OptParse.MyCommand](https://github.com/haskell/ghcup-hs/tree/master/app/ghcup/GHCup/OptParse).
## Major refactors
1. First major refactor included adding cross support. This added
`GHCTargetVersion`, which includes the target in addition to the version.
Most of the `Version` parameters to functions had to be replaced with
that and ensured the logic is consistent for cross and non-cross
installs.
2. This refactor added windows support wrt [#130](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/130).
The major changes here were switching `hpath` library out for `filepath`/`directory` (sadly) and
introducing a non-unix way of handling processes via the `process` library. It also introduced considerable
amounts of CPP wrt file handling, installation etc.
3. This refactor split up the huge `Main.hs` and put every subcommand in its own module: [#212](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/212)
# Releasing
1. Update version in `ghcup.cabal`
2. Update `GHCup.Version` module. `ghcupURL` must only be updated if we change the `GHCupInfo` type or the YAML representation of it. The version of the YAML represents the change increments. `ghcUpVer` is the current application version, read from `ghcup.cabal`.
3. Add ChangeLog entry
4. If a new ghcup yaml version is needed, create one at [ghcup-metadata repo](https://github.com/haskell/ghcup-metadata) and push to a temporary release branch, then update the `data/metadata` submodule in ghcup-hs repo to that branch, so CI can pass
5. Commit and git push with tag. Wait for tests to succeed and release artifacts to build.
6. Download release artifacts and upload them `downloads.haskell.org/~ghcup` along with checksum files (also check `scripts/releasing/pull_release_artifacts.sh` and `scripts/releasing/sftp-upload-artifacts.sh`)
7. Add ghcup release artifacts to ALL yaml files, see [ghcup-metadata repo](https://github.com/haskell/ghcup-metadata)
8. Upload the final `ghcup-<ver>.yaml` (and a detached GPG sig of it) to `webhost.haskell.org/ghcup/data/` (for yaml versions <= 0.0.6) as well as [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata) (for all versions).
9. Update version in `scripts/bootstrap/bootstrap-haskell` (`ghver` variable at the top of the script)
10. Upload `scripts/bootstrap/bootstrap-haskell` and `scripts/bootstrap/bootstrap-haskell.ps1` to `webhost.haskell.org/ghcup/sh/`
11. Update the top-level ghcup symlinks at `downloads.haskell.org/~ghcup` (see `scripts/releasing/sftp-symlink-artifacts.sh`)
12. Update the `data/metadata` submodule in ghcup-hs repo to master
13. Do hackage release
14. Post on reddit/discourse/etc. and collect rewards
# Documentation
This documentation page is built via [mkdocs](https://www.mkdocs.org/), see `mkdocs.yml` and `docs/` subfolder.
The module graph needs [graphmod](https://github.com/yav/graphmod) and is generated via `scripts/dev/modgraph.sh`.

65
docs/expand-piece.svg Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="158.21451"
height="33.036404"
id="svg2997"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="expand-piece.svg">
<defs
id="defs2999" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.2"
inkscape:cx="74.534935"
inkscape:cy="-6.6497355"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata3002">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-218.01937,-324.40519)">
<path
style="fill:none;stroke:#524a67;stroke-width:13;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 224.64286,330.93361 74.64102,20 70.35898,-18.85263"
id="path2994"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
docs/ghcup.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

798
docs/guide.md Normal file
View File

@ -0,0 +1,798 @@
# User Guide
This is a more in-depth guide specific to GHCup. `ghcup --help` is your friend.
## Basic usage
For the simple, interactive, text-based user interface (TUI), run:
```sh
ghcup tui
```
For the full functionality via cli:
```sh
# list available ghc/cabal versions
ghcup list
# install the recommended GHC version
ghcup install ghc
# install a specific GHC version
ghcup install ghc 8.2.2
# set the currently "active" GHC version
ghcup set ghc 8.4.4
# install cabal-install
ghcup install cabal
# update ghcup itself
ghcup upgrade
```
### Tags and shortcuts
GHCup has a number of tags and version shortcuts, that can be used as arguments to **install**/**set** etc.
All of the following are valid arguments to `ghcup install ghc`:
* `latest`, `recommended`
* `base-4.15.1.0`
* `9.0.2`, `9.0`, `9`
If the argument is omitted, the default is `recommended`.
Other tags include:
- `prerelease`: a prerelease version
- `latest-prerelease`: the latest prerelease version
## Manpages
For man pages to work you need [man-db](http://man-db.nongnu.org/) as your `man` provider, then issue `man ghc`. Manpages only work for the currently set ghc.
`MANPATH` may be required to be unset.
## Shell-completion
Shell completions are in [scripts/shell-completions](https://github.com/haskell/ghcup-hs/tree/master/scripts/shell-completions) directory of this repository.
For bash: install `shell-completions/bash`
as e.g. `/etc/bash_completion.d/ghcup` (depending on distro)
and make sure your bashrc sources the startup script
(`/usr/share/bash-completion/bash_completion` on some distros).
## Portability
`ghcup` is very portable. There are a few exceptions though:
1. legacy subcommands `ghcup install` (without a tool identifier) and `ghcup install-cabal` may be removed in the future
# Configuration
A configuration file can be put in `~/.ghcup/config.yaml`. The default config file
explaining all possible configurations can be found in this repo: [config.yaml](https://github.com/haskell/ghcup-hs/blob/master/data/config.yaml).
Partial configuration is fine. Command line options always override the config file settings.
## Overriding distro detection
If you're running e.g. an Ubuntu derivative based on 18.04 and ghcup is picking bindists that
don't work well, you could do this in `config.yaml`:
```yml
platform-override:
arch: A_64
platform:
contents: Ubuntu
tag: Linux
version: '18.04'
```
## Env variables
This is the complete list of env variables that change GHCup behavior:
* `GHCUP_USE_XDG_DIRS`: see [XDG support](#xdg-support) below
* `GHCUP_INSTALL_BASE_PREFIX`: the base of ghcup (default: `$HOME`)
* `GHCUP_CURL_OPTS`: additional options that can be passed to curl
* `GHCUP_WGET_OPTS`: additional options that can be passed to wget
* `GHCUP_GPG_OPTS`: additional options that can be passed to gpg
* `GHCUP_SKIP_UPDATE_CHECK`: Skip the (possibly annoying) update check when you run a command
* `CC`/`LD` etc.: full environment is passed to the build system when compiling GHC via GHCup
On windows, there's additionally:
* `GHCUP_MSYS2`: Has to point to the root of an existing MSYS2 installation (when installed by GHCup, that's e.g. `C:\ghcup\msys64`). GHCup bootstrap takes care of this usually.
* `GHCUP_MSYS2_ENV`: The [MSYS2 environment](https://www.msys2.org/docs/environments/) to use when executing e.g. `ghcup run --mingw-path`. Possible values are `MSYS`, `UCRT64`, `CLANG64`, `CLANGARM64`, `CLANG32`, `MINGW64`, `MINGW32`. Defaults to `MINGW64`, `MINGW32` or `CLANGARM64`, depending on the architecture. `MSYS` is always added as the last component. If you change this value after running the bootstrap script, you may need to make sure that the cabal config reflects this change, more specifically `extra-prog-path`, `extra-include-dirs` and `extra-lib-dirs`. (**NOTE: specifying anything other than the default is considered experimental**)
### XDG support
To enable XDG style directories, set the environment variable `GHCUP_USE_XDG_DIRS` to anything.
Then you can control the locations via XDG environment variables as such:
* `XDG_DATA_HOME`: GHCs will be unpacked in `ghcup/ghc` subdir (default: `~/.local/share`)
* `XDG_CACHE_HOME`: logs and download files will be stored in `ghcup` subdir (default: `~/.cache`)
* `XDG_BIN_HOME`: binaries end up here (default: `~/.local/bin`)
* `XDG_CONFIG_HOME`: the config file is stored in `ghcup` subdir as `config.yaml` (default: `~/.config`)
**Note that `ghcup` makes some assumptions about structure of files in `XDG_BIN_HOME`. So if you have other tools
installing e.g. stack/cabal/ghc into it, this will likely clash. In that case consider disabling XDG support.**
## Caching
GHCup has a few caching mechanisms to avoid redownloads. All cached files end up in `~/.ghcup/cache` by default.
### Downloads cache
Downloaded tarballs (such as GHC, cabal, etc.) are not cached by default unless you pass `ghcup --cache` or set caching
in your [config](#configuration) via `ghcup config set cache true`.
### Metadata cache
The metadata files (also see [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata))
have a 5 minutes cache per default depending on the last access time of the file. That means if you run
`ghcup list` 10 times in a row, only the first time will trigger a download attempt.
### Clearing the cache
If you experience problems, consider clearing the cache via `ghcup gc --cache`.
## Metadata
Metadata files are also called release or distribution channels. They describe tool versions, where to download them etc. and
can be viewed here: [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata).
See the [description](https://github.com/haskell/ghcup-metadata#metadata-variants-distribution-channels)
of metadata files to understand their purpose. These can be combined.
For example, if you want access to both prerelease and cross bindists, you'd do:
```sh
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
```
This results in the following configuration in `~/.ghcup/config.yaml`:
```yaml
url-source:
# the base url that contains all the release bindists
- GHCupURL
# prereleases
- https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml
# cross bindists
- https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
```
You can add as many channels as you like. They are combined under *Last*, so versions from the prerelease channel
here overwrite the default ones, if any.
To remove the channel, delete the entire `url-source` section or set it back to the default:
```yml
url-source:
- GHCupURL
```
Also see [config.yaml](https://github.com/haskell/ghcup-hs/blob/master/data/config.yaml)
for more options.
You can also use an alternative metadata via the one-shot CLI option:
```sh
ghcup --url-source=https://some-url/ghcup-0.0.8.yaml tui
```
One main caveat of using URLs is that you might need to check whether there are new versions
of the file (e.g. `ghcup-0.0.7.yaml` vs `ghcup-0.0.8.yaml`). Although old metadata files
are supported for some time, they are not so indefinitely.
### Mirrors
Metadata files can also be used to operate 3rd party mirrors, in which case you want to use
a URL instead of the `GHCupURL` alias. E.g. in `~/.ghcup/config.yaml`, you'd do:
```yml
url-source:
- https://mirror.sjtu.edu.cn/ghcup/yaml/ghcup/data/ghcup-0.0.6.yaml
```
Note that later versions of GHCup allow more sophisticated mirror support, see [here](#mirrors-proper).
#### Known mirrors
1. [https://mirror.sjtu.edu.cn/docs/ghcup](https://mirror.sjtu.edu.cn/docs/ghcup)
2. [https://mirrors.ustc.edu.cn/help/ghcup.html](https://mirrors.ustc.edu.cn/help/ghcup.html)
### Git-based metadata config
If you don't like the way ghcup updates its metadata with caching and fetching via curl, you can also do as follows:
Clone the metadata git repo:
```sh
mkdir -p /home/user/git/
cd /home/user/git/
git clone -b master https://github.com/haskell/ghcup-metadata.git
```
Then tell ghcup to use file locations in `~/.ghcup/config.yaml`, e.g.:
```yaml
url-source:
- file:///home/user/git/ghcup-metadata/ghcup-0.0.8.yaml
- file:///home/user/git/ghcup-metadata/ghcup-cross-0.0.8.yaml
- file:///home/user/git/ghcup-metadata/ghcup-prereleases-0.0.8.yaml
```
Now, if you invoke `ghcup tui`, it will open instantly without any download, since it just
reads the metadata from local disk.
You'll have to update the metadata manually though, like so:
```sh
cd /home/user/git/
git pull --ff-only origin master
```
## Stack integration
Stack manages GHC versions internally by default. In order to make it use ghcup installed
GHC versions there are two strategies.
### Strategy 1: Stack hooks (new, recommended)
Since stack 2.9.1 you can customize the installation logic of GHC completely, see [https://docs.haskellstack.org/en/stable/yaml_configuration/#ghc-installation-customisation](https://docs.haskellstack.org/en/stable/yaml_configuration/#ghc-installation-customisation).
We can use this to simply invoke ghcup whenever stack is trying to install/discover a GHC versions. This
is done via placing a shell script at `~/.stack/hooks/ghc-install.sh` and making it executable.
The ghcup bootstrap script asks you during installation whether you want to install this shell script. You can also
install/update it manually like so:
```sh
mkdir -p ~/.stack/hooks/
curl https://raw.githubusercontent.com/haskell/ghcup-hs/master/scripts/hooks/stack/ghc-install.sh \
> ~/.stack/hooks/ghc-install.sh
chmod +x ~/.stack/hooks/ghc-install.sh
# hooks are only run when 'system-ghc: false'
stack config set system-ghc false --global
```
By default, when the hook fails for whatever reason, stack will fall back to its own installation logic. To disable
this, run `stack config set install-ghc false --global`.
### Strategy 2: System GHC (works on all stack versions)
You can instruct stack to use "system" GHC versions (whatever is in PATH). To do so,
run the following commands:
```sh
stack config set install-ghc false --global
stack config set system-ghc true --global
```
### Using stack's setup-info metadata to install GHC
You can now use stack's [setup-info metadata](https://github.com/commercialhaskell/stackage-content/blob/master/stack/stack-setup-2.yaml)
to install GHC. For that, you can invoke ghcup like so as a shorthand:
```sh
# ghcup will only see GHC now
ghcup -s StackSetupURL install ghc 9.4.7
# this combines both ghcup and stack metadata
ghcup -s '["GHCupURL", "StackSetupURL"]' install ghc 9.4.7
```
To make this permanent and combine it with the GHCup metadata, you can add the following to your `~/.ghcup/config.yaml`:
```yaml
url-source:
- GHCupURL
# stack versions take precedence
# you'll still have access to GHCup provided versions and tools in case they don't exist in stack metadata
- StackSetupURL
```
You can customize or add sections to the setup-info similar to how the [stack documentation](https://docs.haskellstack.org/en/stable/yaml_configuration/#setup-info) explains it. E.g. to change the 9.4.7 bindist, you might do:
```yaml
url-source:
- GHCupURL
- StackSetupURL
- setup-info:
ghc:
linux64-tinfo6:
9.4.7:
url: "https://downloads.haskell.org/~ghc/9.4.7/ghc-9.4.7-x86_64-fedora27-linux.tar.xz"
content-length: 179117892
sha256: 216b76b7c6383e6ad9ba82533f323f8550e52893a8b9fa33c7b9dc4201ac766a
```
#### Caveats
The main caveat with using this method is that there's no guarantee that GHCup will pick a compatible HLS bindist
when you try to install HLS.
Another potential usability issue is that the `latest` and `recommended` shorthands won't work anymore, since
Stack metadata doesn't have a concept of those and we don't try to be smart when combining the metadatas.
### Windows
#### Using GHCup's MSYS2 installation
Stack usually maintains its own msys2 installation. However, you can instruct it to use GHCup's MSYS2 or any other. E.g. if you
had GHCup install msys2 into `C:\ghcup\msys64\`, then you would add the following config to stack's `config.yaml`
(you can find its location via `stack path --stack-root`):
```yaml
skip-msys: true
extra-lib-dirs:
- C:\ghcup\msys64\mingw64\lib
- C:\ghcup\msys64\mingw64\bin
extra-path:
- C:\ghcup\msys64\mingw64\bin
- C:\ghcup\msys64\usr\bin
- C:\ghcup\msys64\usr\local\bin
extra-include-dirs:
- C:\ghcup\msys64\mingw64\include
```
Also check out: [https://docs.haskellstack.org/en/stable/yaml_configuration](https://docs.haskellstack.org/en/stable/yaml_configuration)
## Mirrors (proper)
Mirrors are now supported via configuration, instead of specifying alternative metadata files.
As an example, this would be a complete mirror configuration in `~/.ghcup/config.yaml`:
```yaml
mirrors:
# yaml download location, would result in:
# https://raw.githubusercontent.com/haskell/ghcup-metadata/develop/ghcup-0.0.8.yaml
# -> https://mirror.sjtu.edu.cn/ghcup/yaml/haskell/ghcup-metadata/master/ghcup-0.0.8.yaml
"raw.githubusercontent.com":
authority:
host: "mirror.sjtu.edu.cn"
pathPrefix: "ghcup/yaml"
# for stack and some older HLS versions, would result in e.g.
# https://github.com/haskell/haskell-language-server/releases/download/1.2.0/haskell-language-server-Windows-1.2.0.tar.gz
# -> https://mirror.sjtu.edu.cn/ghcup/github/haskell/haskell-language-server/releases/download/1.2.0/haskell-language-server-Windows-1.2.0.tar.gz
"github.com":
authority:
host: "mirror.sjtu.edu.cn"
pathPrefix: "ghcup/github"
# for all haskell.org hosted bindists, would result in e.g.
# https://downloads.haskell.org/~ghc/9.8.1/ghc-9.8.1-x86_64-deb10-linux.tar.xz
# -> https://mirror.sjtu.edu.cn/ghcup/haskell-downloads/~ghc/9.8.1/ghc-9.8.1-x86_64-deb10-linux.tar.xz
"downloads.haskell.org":
authority:
host: "mirror.sjtu.edu.cn"
pathPrefix: "downloads.haskell.org"
```
The configuration depends on the host of the mirror and they have to provide the correct configuration.
## Linkers
The GHC bindist configure script by default doesn't honour the system `ld` that is set, but instead
probes for `ld.lld`, `ld.gold` and only then `ld` in order, see
[find_ld.m4](https://gitlab.haskell.org/ghc/ghc/-/blob/master/m4/find_ld.m4?ref_type=heads).
This is controlled by the configure switch `--enable-ld-override`/`--disable-ld-override`, which is enabled by default in GHC.
GHCup however [has decided](https://github.com/haskell/ghcup-hs/issues/1032) **to disable this switch by default**,
for reasons of stability and simplicity.
That means, when `--disable-ld-override` is passed, the linker is picked simply by:
* checking if `LD` env var is set, then use whatever is specified
* otherwise use `ld` binary in PATH (system/distro default)
You can restore the GHC vanilla default by adding this to your `~/.ghcup/config.yaml`:
```yaml
def-ghc-conf-options:
- "--enable-ld-override"
```
# More on installation
## Customisation of the installation scripts
The scripts offered to install GHCup are available here:
* [bootstrap-haskell](https://github.com/haskell/ghcup-hs/blob/master/scripts/bootstrap/bootstrap-haskell#L7)
for Unix-like operating systems
* [bootstrap-haskell.ps1](https://github.com/haskell/ghcup-hs/blob/master/scripts/bootstrap/bootstrap-haskell.ps1)
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:
1. manually built bindists (e.g. with patches)
- example: `ghcup install ghc -u 'file:///home/mearwald/tmp/ghc-eff-patches/ghc-8.10.2-x86_64-deb10-linux.tar.xz' 8.10.2-eff`
2. GHC head CI bindists
- example specifying a branch (`master`): `ghcup install ghc -u 'https://gitlab.haskell.org/ghc/ghc/-/jobs/artifacts/master/raw/ghc-x86_64-linux-fedora33-release.tar.xz?job=x86_64-linux-fedora33-release' head`
- example specifying a job id (`1129565`): `ghcup install ghc -u ' https://gitlab.haskell.org/api/v4/projects/1/jobs/1129565/artifacts/ghc-x86_64-linux-alpine3_12-validate+fully_static.tar.xz' mr7847`
3. DWARF bindists
- example: `ghcup install ghc -u 'https://downloads.haskell.org/~ghc/8.10.2/ghc-8.10.2-x86_64-deb10-linux-dwarf.tar.xz' 8.10.2-dwarf`
Since the version parser is pretty lax, `8.10.2-eff` and `head` are both valid versions
and produce the binaries `ghc-8.10.2-eff` and `ghc-head` respectively.
GHCup always needs to know which version the bindist corresponds to (this is not automatically
detected).
## Compiling from source
### GHC
Compiling from source is supported for both source tarballs and arbitrary git refs. See `ghcup compile ghc --help`
for a list of all available options.
If you need to overwrite the existing `build.mk`, check the default files
in [data/build_mk](https://github.com/haskell/ghcup-hs/tree/master/data/build_mk), copy them somewhere, adjust them and
pass `--config path/to/build.mk` to `ghcup compile ghc`.
Common `build.mk` options are explained [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/building/using#build-configuration).
Make sure your system meets all the [prerequisites](https://gitlab.haskell.org/ghc/ghc/-/wikis/building/preparation).
### HLS
There are 3 main ways to compile HLS from source.
1. from hackage (should have up to date version bounds)
- `ghcup compile hls --version 1.7.0.0 --ghc 9.2.3`
2. from git (allows to build latest sources and PRs)
- `ghcup compile hls --git-ref master --ghc 9.2.3`
- `ghcup compile hls --git-ref a32db0b --ghc 9.2.3`
- `ghcup compile hls --git-ref 1.7.0.0 --ghc 9.2.3`
3. from source distribution that's packaged during release from the corresponding git sources
- `ghcup compile hls --source-dist 1.7.0.0 --ghc 9.2.3`
All these use `cabal v2-install` under the hood, so all build components are cached.
You can pass arbitrary arguments to cabal, e.g. set the index state like so:
```sh
ghcup compile hls --git-ref master --ghc 9.2.3 -- --index-state=2022-06-12T00:00:00Z --allow-newer
```
You can pass `--ghc <ver>` multiple times to install for many GHCs at once.
When building from git sources, ghcup will auto-detect the HLS version that the git commit corresponds to
from the `haskell-language-server.cabal` file. This version might not have been updated since the last release.
If you want to avoid overwriting the existing installed HLS version, you can instruct ghcup to use `git describe`
to set the HLS version instead:
```sh
ghcup compile hls --git-ref master --ghc 9.2.3 --git-describe-version
```
You can also set the version explicitly:
```sh
ghcup compile hls --git-ref master --ghc 9.2.3 --overwrite-version 1.7.0.0-p1
```
To instruct cabal to run `cabal update` before building, run `ghcup compile hls --version 1.7.0.0 --ghc 9.2.3 --cabal-update`
As always, check `ghcup compile hls --help`.
#### Updating HLS for a new GHC version
First try to build from hackage with some tricks:
```sh
ghcup compile hls --version 1.7.0.0 --ghc 9.2.4 --cabal-update -- --allow-newer --index-state=2022-06-12T00:00:00Z
```
This augments the currently installed 1.7.0.0 official bindists in ghcup with new GHC versions support.
If that fails (since `--allow-newer` is quite brutal), you can install from HLS master branch (which may contain new fixes) like so:
```
ghcup compile hls --git-ref master --git-describe-version --ghc 8.10.7 --ghc 9.2.4 --cabal-update
```
This however will create a new HLS version in ghcup, e.g. `1.7.0.0-105-gdc682ba1`, for both 8.10.7 and 9.2.4. If you want to switch back to the official bindists, run `ghcup set hls 1.7.0.0`.
## Cross support
ghcup can compile a cross GHC for any target. However, this
requires that the build host has a complete cross toolchain and various
libraries installed for the target platform.
Consult the GHC documentation on the [prerequisites](https://gitlab.haskell.org/ghc/ghc/-/wikis/building/cross-compiling#tools-to-install).
For distributions with non-standard locations of cross toolchain and
libraries, this may need some tweaking of `build.mk` or configure args.
See `ghcup compile ghc --help` for further information.
Since ghcup version 0.1.20.0, we provide cross bindists for GHC JS and WASM. These can be installed conveniently.
However, these are intended as a developer preview only. By using these GHC variants, you are implicitly signing up to participate in GHC development!
If you run into bugs or missing behavior, join the dev chat at https://matrix.to/#/#GHC:matrix.org.
First, add the cross release channel:
```sh
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/develop/ghcup-cross-0.0.8.yaml
```
The next sections explain how to install each cross bindist.
### GHC JS cross bindists (experimental)
You need the required emscripten JS toolchain. GHC JS cross bindists might require you to install a specific
version of emscripten. If that is the case, then ghcup will display the required emscripten version in the
pre install message. You can use the following commands to install the emscripten toolchain on your system,
substituting the required version for the bindist that you want to install.
(Cf. [GHC-MR 10918](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10918))
```sh
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install VERSION
./emsdk activate VERSION
source ./emsdk_env.sh
```
Instructions are also here: [Download and install — Emscripten documentation](https://emscripten.org/docs/getting_started/downloads.html).
To install you can either use the tui interface by invoking `emconfigure ghcup tui` or
you can install directly like so:
```sh
emconfigure ghcup install ghc --set javascript-unknown-ghcjs-9.6.2
```
You'll now have the compiler `javascript-unknown-ghcjs-ghc`. To build a hello world, do e.g.:
```sh
echo 'main = putStrLn "hello world"' > hello.hs
javascript-unknown-ghcjs-ghc -fforce-recomp hello.hs
./hello
```
You can follow the instructions [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/building#compiling-hello-world).
### GHC WASM cross bindists (experimental)
You need the required wasm toolchain:
```sh
git clone https://gitlab.haskell.org/ghc/ghc-wasm-meta.git
cd ghc-wasm-meta/
export SKIP_GHC=yes
./setup.sh
source ~/.ghc-wasm/env
```
**Note that some wasm bindists don't work with the master branch of ghc-wasm-meta. GHCup will warn you about such cases prior to installation and point you to the right commit.**
To install, we need to invoke ghcup like so also passing the `--host=<host>` flag (adjust as needed):
```sh
ghcup install ghc --set wasm32-wasi-9.6.3.20230927 -- --host=x86_64-linux --with-intree-gmp --with-system-libffi
```
Also check the documentation here: [Glasgow Haskell Compiler / ghc-wasm-meta](https://gitlab.haskell.org/ghc/ghc-wasm-meta).
You'll now have the compiler `wasm32-wasi-ghc`. To build a hello world, do e.g.:
```sh
echo 'main = putStrLn "hello world"' > hello.hs
wasm32-wasi-ghc hello.hs -o hello.wasm
wasmtime ./hello.wasm
```
## Isolated installs
**Before using isolated installs, make sure to have at least GHCup version 0.1.17.8!**
Ghcup also enables you to install a tool (GHC, Cabal, HLS, Stack) at an isolated location of your choosing.
These installs, as the name suggests, are separate from your main installs and DO NOT conflict with them.
- No symlinks are made to these isolated installed tools, you'd have to manually point to them wherever you intend to use them.
- These installs, can also NOT be deleted from ghcup, you'd have to go and manually delete these.
You need to use the `--isolate` or `-i` flag followed by the directory path.
Examples:
1. install an isolated GHC version at location /home/user/isolated_dir/ghc/
- `ghcup install ghc 8.10.5 --isolate /home/user/isolated_dir/ghc`
2. isolated install Cabal at a location you desire
- `ghcup install cabal --isolate /home/username/my_isolated_dir/`
3. do an isolated install with a custom bindist
- `ghcup install ghc --isolate /home/username/my_isolated_dir/ -u 'https://gitlab.haskell.org/ghc/ghc/-/jobs/artifacts/master/raw/ghc-x86_64-linux-fedora33-release.tar.xz?job=x86_64-linux-fedora33-release' head`
4. isolated install HLS
- `ghcup install hls --isolate /home/username/dir/hls/`
5. you can even compile ghc to an isolated location.
- `ghcup compile ghc -j 4 -v 9.0.1 -b 8.10.5 -i /home/username/my/dir/ghc`
## Continuous integration
On Windows, GHCup can be installed automatically on a CI runner
non-interactively, as below. The parameters to the PowerShell script are
specified positionally, after `-ArgumentList`:
```ps
$ErrorActionPreference = 'Stop';Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;try { 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:\" } catch { Write-Error $_ }
```
`$ErrorActionPreference = 'Stop'` here acts like `set -e` and stops execution if ghcup installation fails.
On linux/darwin/freebsd, run the following on your runner:
```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.
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
On github workflows GHCup itself is pre-installed on all platforms, but may use non-standard install locations.
Here's an example workflow with a GHC matrix:
```yaml
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-22.04, macOS-latest]
ghc: ['9.6', '9.4', '9.2', '9.0', '8.10', '8.8', '8.6']
steps:
- uses: actions/checkout@v3
- name: Setup toolchain
run: |
ghcup install cabal --set recommended
ghcup install ghc --set ${{ matrix.ghc }}
- name: Build
run: |
cabal update
cabal test all --test-show-details=direct
i386:
runs-on: ubuntu-latest
container:
image: i386/ubuntu:bionic
steps:
- name: Install GHCup in container
run: |
apt-get update -y
apt-get install -y autoconf build-essential zlib1g-dev libgmp-dev curl
# we just go with recommended versions of cabal and GHC
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=1 sh
- uses: actions/checkout@v1
- name: Test
run: |
# in containers we need to fix PATH
source ~/.ghcup/env
cabal update
cabal test all --test-show-details=direct
```
## GPG verification
GHCup supports verifying the GPG signature of the metadata file. The metadata file then contains SHA256 hashes of all downloads, so
this is cryptographically secure.
First, obtain the gpg keys:
```sh
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys FE5AB6C91FEA597C3B31180B73EDE9E8CFBAEF01
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF
```
Then verify the gpg key in one of these ways:
1. find out where I live and visit me to do offline key signing
2. figure out my mobile phone number and call me to verify the fingerprint
3. more boring: contact me on Libera IRC (`maerwald`) and verify the fingerprint
Once you've verified the key, you have to figure out if you trust me.
If you trust me, then you can configure gpg in `~/.ghcup/config.yaml`:
```yml
gpg-setting: GPGLax # GPGStrict | GPGLax | GPGNone
```
In `GPGStrict` mode, ghcup will fail if verification fails. In `GPGLax` mode it will just print a warning.
You can also pass the mode via `ghcup --gpg <strict|lax|none>`.
# Tips and tricks
## ghcup run
If you don't want to explicitly switch the active GHC all the time and are using
tools that rely on the plain `ghc` binary, GHCup provides an easy way to execute
commands with a certain toolchain prepended to PATH, e.g.:
```sh
ghcup run --ghc 8.10.7 --cabal latest --hls latest --stack latest --install -- code Setup.hs
```
This will execute vscode with GHC set to 8.10.7 and all other tools to their latest version.
# Troubleshooting
## Script immediately exits on windows
There are two possible reasons:
1. your company blocks the script (some have a whitelist)... ask your administrator
2. your Antivirus or Windows Defender interfere with the installation. Disable them temporarily.
## C compiler cannot create executables
### Darwin
You need to update your XCode command line tools, e.g. [like this](https://stackoverflow.com/questions/34617452/how-to-update-xcode-from-command-line).
## Certificate authority errors (curl)
If your certificates are outdated or improperly configured, curl may be unable
to download ghcup.
There are two known workarounds:
1. Tell curl to ignore certificate errors (dangerous): `curl -k https://raw.githubusercontent.com/haskell/ghcup-hs/master/scripts/bootstrap/bootstrap-haskell | GHCUP_CURL_OPTS="-k" sh`
2. Try to use wget instead: `wget -O /dev/stdout https://raw.githubusercontent.com/haskell/ghcup-hs/master/scripts/bootstrap/bootstrap-haskell | BOOTSTRAP_HASKELL_DOWNLOADER=wget sh`
On windows, you can disable curl like so:
```pwsh
Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true,$false,$false,$false,$false,$false,$false,"","","","",$true } catch { Write-Error $_ }
```

BIN
docs/haskell_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

93
docs/index.md Normal file
View File

@ -0,0 +1,93 @@
---
hide:
- navigation
- toc
---
<section class="index-ghcup-hero">
<img alt="haskell logo" src="./haskell_logo.png" />
<h1>GHCup</h1>
</section>
<p class="ghcup-intro">GHCup is the main installer for the general purpose language <a href="https://www.haskell.org">Haskell</a>.</p>
<div class="text-center main-buttons">
<a href="install/" class="btn btn-primary" role="button">Installation</a>
<a href="steps/" class="btn btn-primary" role="button">First steps</a>
<a href="guide/" class="btn btn-primary" role="button">User Guide</a>
</div>
<section class="qi-container">
<div class="ghcup-os-container" id="ghcup-instructions-unix">
<h3>To install on Linux, macOS, FreeBSD or <a href="https://docs.microsoft.com/en-us/windows/wsl/"> WSL2</a></h3>
<p>run the following in a terminal (as a non-root user):<p>
<div class="command-button">
<pre>
<span class="ghcup-command" id="ghcup-command-linux">curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span>
</pre>
<button class="btn" onclick="copyToClipboardNux()" id="ghcup-linux-button"><i class="fa fa-copy"></i></button>
</div>
<span>
</span>
<div class="footer">
<a href="https://github.com/haskell/ghcup-hs/blob/master/scripts/bootstrap/bootstrap-haskell" target="_blank">What does this do?</a> <b>&nbsp;&middot;&nbsp;</b> <a href="https://www.haskell.org/ghcup/install/#manual-installation">I don't like curl | sh</a> <div class="show-all-platforms"><b>&nbsp;&middot;&nbsp;</b> <a class="show-all-platforms-button" href="#">Show all platforms</a></div></p>
</div>
</div>
<div class="ghcup-os-container" id="ghcup-instructions-win">
<h3>To install on Windows</h3>
<p>run the following in a PowerShell session (as a non-admin user):<p>
<div class="command-button">
<pre>
<span class="ghcup-command" id="ghcup-command-windows">Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }
</span>
</pre>
<button class="btn" onclick="copyToClipboardWin()" id="ghcup-windows-button"><i class="fa fa-copy"></i></button>
</div>
<div class="footer">
<a href="https://github.com/haskell/ghcup-hs/blob/master/scripts/bootstrap/bootstrap-haskell.ps1" target="_blank">What does this do?</a> <b>&nbsp;&middot;&nbsp;</b> <a href="https://www.haskell.org/ghcup/install/#manual-installation">I don't like curl | sh</a> <div class="show-all-platforms"><b>&nbsp;&middot;&nbsp;</b> <a class="show-all-platforms-button" href="#">Show all platforms</a></div></p>
</div>
</div>
</section>
<p id="help" class="ghcup-help">
Need help? Check the <a href="guide/#troubleshooting">Troubleshooting section</a> or ask on
<span>
<a href="https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup">
<img src="irc.svg" alt="" />
IRC
</a>
</span>,
<span>
<a href="https://discord.gg/pKYf3zDQU7">
<img src="Discord-Logo-Black.svg" alt="" />
Discord
</a>
</span>,
<span>
<a href="https://app.element.io/#/room/#haskell-tooling:matrix.org">
<img src="Matrix_logo.svg" alt=""/>
</a>
</span>
or
<span>
<a href="https://github.com/haskell/ghcup-hs/issues">
report a bug
<img src="Octicons-bug.svg" alt="" />
</a>
</span>
</p>
----
![GHCup](./ghcup.gif){: .center style="width:700px"}
<section class="index-cta-donate">
<button class="donate-button">
<a href="https://opencollective.com/ghcup#category-CONTRIBUTE" class="donate-badge" />
</a>
</button>
</section>

418
docs/install.md Normal file
View File

@ -0,0 +1,418 @@
# Installation
GHCup makes it easy to install specific versions of GHC on GNU/Linux,
macOS (aka Darwin), FreeBSD and Windows and can also bootstrap a fresh [Haskell developer environment](#supported-tools) from scratch.
It follows the UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well). Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
## How to install
The following commands will download the `ghcup` binary into `~/.ghcup/bin` (or `C:\ghcup\bin` on windows) and then
run it to interactively install the [Haskell Toolchain](#supported-tools). These commands should be run as **non-root/non-admin
user**.
For Linux, macOS, FreeBSD or Windows Subsystem 2 for Linux, run this in a terminal:
```sh
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
```
For Windows, run this in a PowerShell session:
```psh
Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }
```
There's also a [youtube video](https://www.youtube.com/watch?v=bB4fmQiUYPw) explaining installation on windows.
If you want to know what these scripts do, check out the [source code at the repository](https://github.com/haskell/ghcup-hs/tree/master/scripts/bootstrap). Advanced users may want to perform a [manual installation](#manual-installation) and GPG verify the binaries.
### Which versions get installed?
GHCup has two main channels for every tool: **recommended** and **latest**. By default, it installs *recommended*.
*latest* follows the latest release of every tool, while *recommended* is at the discretion of the GHCup maintainers and based on community adoption (hackage libraries, tools like HLS, stackage support, etc.) and known bugs.
Also see [tags and shortcuts](guide.md#tags-and-shortcuts) for more information.
## System requirements
### Linux Debian
#### Generic
The following distro packages are required: `build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5`
#### Version >= 11 && <= 12
The following distro packages are required: `build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5`
#### Version >= 12
The following distro packages are required: `build-essential curl libffi-dev libffi8 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5`
### Linux Ubuntu
#### Generic
The following distro packages are required: `build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5`
#### Version >= 20.04 && < 20.10
The following distro packages are required: `build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5`
#### Version >= 20.10 && < 23
The following distro packages are required: `build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5`
#### Version >= 23
The following distro packages are required: `build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev`
### Linux Fedora
#### Generic
The following distro packages are required: `gcc gcc-c++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl`
### Linux CentOS
#### Generic
The following distro packages are required: `gcc gcc-c++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl`
#### Version >= 7 && < 8
The following distro packages are required: `gcc gcc-c++ gmp gmp-devel make ncurses xz perl`
### Linux Alpine
#### Generic
The following distro packages are required: `binutils-gold curl gcc g++ gmp-dev libc-dev libffi-dev make musl-dev ncurses-dev perl tar xz`
### Linux (generic)
#### Generic
You need the following packages: curl g++ gcc gmp make ncurses realpath xz-utils. Consult your distro documentation on the exact names of those packages.
### Darwin
#### Generic
On OS X, in the course of running ghcup you will be given a dialog box to install the command line tools. Accept and the requirements will be installed for you. You will then need to run the command again.
On Darwin M1 you might also need a working llvm installed (e.g. via brew) and have the toolchain exposed in PATH.
### FreeBSD
#### Generic
The following distro packages are required: `curl gcc gmp gmake ncurses perl5 libffi libiconv`
### Windows
#### Generic
On Windows, msys2 should already have been set up during the installation, so most users should just proceed. If you are installing manually, make sure to have a working mingw64 toolchain and shell.
## Next steps
1. Follow the [First steps guide](steps.md) on how to build a "Hello world" program, use `ghc`, run an interactive REPL and create a Haskell project
2. To understand the difference and overlap of `stack` and `cabal`, read on [here](https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07)
3. To learn Haskell proper check out the links at [How to learn Haskell proper](steps.md#how-to-learn-haskell-proper)
4. To learn more about Haskell Toolchain management, check out the [ghcup user guide](./guide.md)
## Uninstallation
On linux, just run `ghcup nuke`, then make sure any ghcup added lines in your `~/.bashrc` (or similar) are removed.
On windows, right click on the `Uninstall Haskell.ps1` PowerShell script on your Desktop and select *Run with PowerShell*.
## Supported tools
GHCup supports the following tools, which are also known as the **Haskell Toolchain**:
<details> <summary>Show all supported <a href='https://www.haskell.org/ghc/'>GHC</a> versions</summary>
<table>
<thead><tr><th>GHC Version</th><th>Tags</th></tr></thead>
<tbody>
<tr><td>9.8.1</td><td><span style="color:blue">latest</span>, base-4.19.0.0</td></tr>
<tr><td>9.6.3</td><td>base-4.18.1.0</td></tr>
<tr><td>9.6.2</td><td>base-4.18.0.0</td></tr>
<tr><td>9.6.1</td><td>base-4.18.0.0</td></tr>
<tr><td>9.4.7</td><td><span style="color:green">recommended</span>, base-4.17.2.0</td></tr>
<tr><td>9.4.6</td><td>base-4.17.2.0</td></tr>
<tr><td>9.4.5</td><td>base-4.17.1.0</td></tr>
<tr><td>9.4.4</td><td>base-4.17.0.0</td></tr>
<tr><td>9.4.3</td><td>base-4.17.0.0</td></tr>
<tr><td>9.4.2</td><td>base-4.17.0.0</td></tr>
<tr><td>9.4.1</td><td>base-4.17.0.0</td></tr>
<tr><td>9.2.8</td><td>base-4.16.4.0</td></tr>
<tr><td>9.2.7</td><td>base-4.16.4.0</td></tr>
<tr><td>9.2.6</td><td>base-4.16.4.0</td></tr>
<tr><td>9.2.5</td><td>base-4.16.4.0</td></tr>
<tr><td>9.2.4</td><td>base-4.16.3.0</td></tr>
<tr><td>9.2.3</td><td>base-4.16.2.0</td></tr>
<tr><td>9.2.2</td><td>base-4.16.1.0</td></tr>
<tr><td>9.2.1</td><td>base-4.16.0.0</td></tr>
<tr><td>9.0.2</td><td>base-4.15.1.0</td></tr>
<tr><td>9.0.1</td><td>base-4.15.0.0</td></tr>
<tr><td>8.10.7</td><td>base-4.14.3.0</td></tr>
<tr><td>8.10.6</td><td>base-4.14.3.0</td></tr>
<tr><td>8.10.5</td><td>base-4.14.2.0</td></tr>
<tr><td>8.10.4</td><td>base-4.14.1.0</td></tr>
<tr><td>8.10.3</td><td>base-4.14.1.0</td></tr>
<tr><td>8.10.2</td><td>base-4.14.1.0</td></tr>
<tr><td>8.10.1</td><td>base-4.14.0.0</td></tr>
<tr><td>8.8.4</td><td>base-4.13.0.0</td></tr>
<tr><td>8.8.3</td><td>base-4.13.0.0</td></tr>
<tr><td>8.8.2</td><td>base-4.13.0.0</td></tr>
<tr><td>8.8.1</td><td>base-4.13.0.0</td></tr>
<tr><td>8.6.5</td><td>base-4.12.0.0</td></tr>
<tr><td>8.6.4</td><td>base-4.12.0.0</td></tr>
<tr><td>8.6.3</td><td>base-4.12.0.0</td></tr>
<tr><td>8.6.2</td><td>base-4.12.0.0</td></tr>
<tr><td>8.6.1</td><td>base-4.12.0.0</td></tr>
<tr><td>8.4.4</td><td>base-4.11.1.0</td></tr>
<tr><td>8.4.3</td><td>base-4.11.1.0</td></tr>
<tr><td>8.4.2</td><td>base-4.11.1.0</td></tr>
<tr><td>8.4.1</td><td>base-4.11.0.0</td></tr>
<tr><td>8.2.2</td><td>base-4.10.1.0</td></tr>
<tr><td>8.0.2</td><td>base-4.9.1.0</td></tr>
<tr><td>7.10.3</td><td>base-4.8.2.0</td></tr>
</tbody>
</table>
</details>
<details> <summary>Show all supported <a href='https://cabal.readthedocs.io/en/stable/'>cabal-install</a> versions</summary>
<table>
<thead><tr><th>Cabal Version</th><th>Tags</th></tr></thead>
<tbody>
<tr><td>3.10.2.0</td><td><span style="color:blue">latest</span></td></tr>
<tr><td>3.10.1.0</td><td></td></tr>
<tr><td>3.8.1.0</td><td></td></tr>
<tr><td>3.6.2.0</td><td><span style="color:green">recommended</span></td></tr>
<tr><td>3.6.0.0</td><td></td></tr>
<tr><td>3.4.1.0</td><td></td></tr>
<tr><td>3.4.0.0</td><td></td></tr>
<tr><td>3.2.0.0</td><td></td></tr>
<tr><td>3.0.0.0</td><td></td></tr>
<tr><td>2.4.1.0</td><td></td></tr>
</tbody>
</table>
</details>
<details> <summary>Show all supported <a href='https://haskell-language-server.readthedocs.io/en/stable/'>HLS</a> versions</summary>
<table>
<thead><tr><th>HLS Version</th><th>Tags</th></tr></thead>
<tbody>
<tr><td>2.4.0.0</td><td><span style="color:blue">latest</span>, <span style="color:green">recommended</span></td></tr>
<tr><td>2.3.0.0</td><td></td></tr>
<tr><td>2.2.0.0</td><td></td></tr>
<tr><td>2.1.0.0</td><td></td></tr>
<tr><td>2.0.0.1</td><td></td></tr>
<tr><td>2.0.0.0</td><td></td></tr>
<tr><td>1.10.0.0</td><td></td></tr>
<tr><td>1.9.1.0</td><td></td></tr>
<tr><td>1.9.0.0</td><td></td></tr>
<tr><td>1.8.0.0</td><td></td></tr>
<tr><td>1.7.0.0</td><td></td></tr>
<tr><td>1.6.1.0</td><td></td></tr>
<tr><td>1.6.0.0</td><td></td></tr>
<tr><td>1.5.1</td><td></td></tr>
<tr><td>1.5.0</td><td></td></tr>
<tr><td>1.4.0</td><td></td></tr>
<tr><td>1.3.0</td><td></td></tr>
<tr><td>1.2.0</td><td></td></tr>
<tr><td>1.1.0</td><td></td></tr>
</tbody>
</table>
</details>
<details> <summary>Show all supported <a href='https://docs.haskellstack.org/en/stable/README/'>Stack</a> versions</summary>
<table>
<thead><tr><th>Stack Version</th><th>Tags</th></tr></thead>
<tbody>
<tr><td>2.13.1</td><td><span style="color:blue">latest</span></td></tr>
<tr><td>2.11.1</td><td><span style="color:green">recommended</span></td></tr>
<tr><td>2.9.3</td><td></td></tr>
<tr><td>2.9.1</td><td></td></tr>
<tr><td>2.7.5</td><td></td></tr>
<tr><td>2.7.3</td><td></td></tr>
<tr><td>2.7.1</td><td></td></tr>
<tr><td>2.5.1</td><td></td></tr>
</tbody>
</table>
</details>
## Supported platforms
This list may not be exhaustive and specifies support for bindists only.
| Platform | Architecture | ghcup | GHC | cabal | HLS | stack |
| ------ | ------ | ------ | ------ | ------ | ------ | ------ |
| Windows 8.1 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows 10 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows Server 2016 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows Server 2019 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows Server 2022 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows WSL1 | amd64 | ❌ | ❔ | ❔ | ❔ | ❔ |
| Windows WSL2 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| MacOS >=10.13 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| MacOS <10.13 | amd64 | | | | | |
| MacOS | aarch64 | ✅ | ✅ | ✅ | ⚠️ | ❌ |
| FreeBSD | amd64 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
| Linux generic | x86 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Linux generic | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Linux generic | aarch64 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
| Linux generic | armv7 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
### Windows <8.1
No longer supported for recent GHCs, according to manual testing of GHC 9.8.1 on Windows 7.
According to [msys2 documentation](https://www.msys2.org/docs/windows_support), the minimum Windows
version is now 8.1.
### WSL1
Unsupported. GHC may or may not work. Upgrade to WSL2.
### MacOS <10.13
Not supported. Would require separate binaries, since >=10.13 binaries are incompatible.
Please upgrade.
### MacOS aarch64
HLS bindists are still experimental. Stack has only unofficial binaries for this platform.
There are various issues with GHC itself.
### FreeBSD
Lacks some upstream bindists and may need compat libs (such as `misc/compat12x`).
HLS bindists are experimental.
Only latest FreeBSD is generally supported.
### Linux ARMv7/AARCH64
Lower availability of bindists. Stack and HLS binaries are experimental.
## Manual installation
### Unix
Download the binary for your platform at [https://downloads.haskell.org/~ghcup/](https://downloads.haskell.org/~ghcup/)
and place it into your `PATH` anywhere.
If you want to GPG verify the binaries, import the following keys first:
```sh
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys FE5AB6C91FEA597C3B31180B73EDE9E8CFBAEF01
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF
```
Then adjust your `PATH` in `~/.bashrc` (or similar, depending on your shell) like so:
```sh
export PATH="$HOME/.cabal/bin:$HOME/.ghcup/bin:$PATH"
```
### Windows
1. Install ghcup binary
- choose a base directory for installation, e.g. `C:\` that has sufficient space
- then create the directory, e.g. `C:\ghcup\bin`
- download the binary: https://downloads.haskell.org/~ghcup/x86_64-mingw64-ghcup.exe
- place it as `ghcup.exe` into e.g. `C:\ghcup\bin`
2. Install MSYS2
- download https://repo.msys2.org/distrib/msys2-x86_64-latest.exe and execute it
- remember the installation destination you choose (default is `C:\msys64`)
- finish the installation
* Add environment variables and update `Path`
- open search bar and type in "Edit the system environment variables", then open it
- click on "Environment Variables..." at the near bottom
- in the upper half, select `Path` variable and double click on it
- in the new window, click "New", type in `C:\ghcup\bin` (depending on step 1.) and press enter
- click "OK" at the bottom
- in the upper half, click on "New..."
- enter `GHCUP_MSYS2` under "Variable name" and the installation destination from step 2. under "Variable value"
- click "OK" at the bottom
- in the upper half, click on "New..."
- enter `GHCUP_INSTALL_BASE_PREFIX` under "Variable name" and based on the installation destination from step 1. enter the device directory (default `C:\`)
- click "OK" at the bottom
- in the upper half, click on "New..."
- enter `CABAL_DIR` under "Variable name" and based on the installation destination from step 1. enter the device directory + `cabal` subdir (default `C:\cabal`)
- click "OK" at the bottom
- click "OK" at the bottom
- click "OK" at the bottom
3. Install tools
- open powershell
- run `ghcup install ghc --set recommended`
- run `ghcup install cabal latest`
- run `ghcup install stack latest`
- run `ghcup install hls latest`
- run `cabal update`
4. Update msys2
- run `ghcup run -m -- pacman --noconfirm -Syuu`
- run `ghcup run -m -- pacman --noconfirm -Syuu`
- run `ghcup run -m -- pacman --noconfirm -S --needed curl autoconf mingw-w64-x86_64-pkgconf`
- run `ghcup run -m -- pacman --noconfirm -S ca-certificates`
5. Update cabal config
- go to e.g. `C:\cabal` (based on device you picked in 1.)
- open file `config`
- uncomment `extra-include-dirs` (the `-- `) and add the value (depending on installation destination you chose in 2.), e.g. `C:\msys64\mingw64\include`... so the final line should be `extra-include-dirs: C:\msys64\mingw64\include`
- uncomment `extra-lib-dirs` and do the same, adding `C:\msys64\mingw64\lib`
- uncomment `extra-prog-path` and set it to `C:\ghcup\bin, C:\cabal\bin, C:\msys64\mingw64\bin, C:\msys64\usr\bin`, depending on your install destinations from 1. and 2.
6. Set up msys2 shell
- run `ghcup run -m -- sed -i -e 's/db_home:.*$/db_home: windows/' /etc/nsswitch.conf` to make the HOME in your msys2 shell match the one from windows
- make a desktop shortcut from `C:\msys64\msys2_shell.cmd`, which will allow you to start a proper msys2 shell
- run `ghcup run -m -- sed -i -e 's/#MSYS2_PATH_TYPE=.*/MSYS2_PATH_TYPE=inherit/' /c/msys64/msys2.ini`
- run `ghcup run -m -- sed -i -e 's/rem set MSYS2_PATH_TYPE=inherit/set MSYS2_PATH_TYPE=inherit/' /c/msys64/msys2_shell.cmd`
All set. You can run `cabal init` now in an empty directory to start a project.
## Esoteric distros
### Void Linux
Since void linux can be installed with glibc and musl, it's hard to support correctly with ghcup.
One way to make ghcup work on **Void Linux musl** is to follow the [Overriding distro detection](guide.md#overriding-distro-detection)
section and tell it to consider Alpine bindists only. E.g.:
```sh
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_MINIMAL=1 sh
source ~/.ghcup/env
ghcup config set platform-override '{ "arch": "A_64", "platform": { "contents": "Alpine", "tag": "Linux" }, "version": "3.17" }'
ghcup install cabal --set latest
ghcup install ghc --set latest
ghcup install stack --set latest
ghcup install hls --set latest
```
## Vim integration
See [ghcup.vim](https://github.com/hasufell/ghcup.vim).
## VSCode integration
The developers of the Haskell Language Server offer an [extension](https://github.com/haskell/vscode-haskell) tightly integrated with the [Haskell Language Server](https://github.com/haskell/haskell-language-server). To get started:
1. Install GHCup. During installation, opt in to install the Haskell Language Server (HLS).
2. Install the extension (from VSCode: Ctrl + P and then `ext install haskell.haskell`).
3. Make sure your project uses the GHC version installed from GHCup (otherwise HLS is likely to fail on launch):
- instructions for [stack](https://docs.haskellstack.org/en/stable/yaml_configuration/#system-ghc)
On Linux, some users have reported an issue when VSCode is not launched from a terminal ("cannot find ghc version"). A solution is to [let HLS know about your GHCup on $PATH](https://github.com/haskell/vscode-haskell#stackcabalghc-can-not-be-found).
## Get help
* [Libera IRC chat on #haskell-ghcup or #haskell](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup)
* [GHCup issue tracker](https://github.com/haskell/ghcup-hs/issues/new)
* [Matrix](https://app.element.io/#/room/#haskell-tooling:matrix.org)
* [Discord](https://discord.gg/pKYf3zDQU7)

38
docs/irc.svg Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="18.043058"
viewBox="0 0 18 18.043058"
width="18"
version="1.1"
id="svg4"
sodipodi:docname="irc.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="36.375"
inkscape:cx="3.3814433"
inkscape:cy="9.0309278"
inkscape:window-width="3828"
inkscape:window-height="2081"
inkscape:window-x="0"
inkscape:window-y="46"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
class="heroicon-ui"
d="m 8.03,5.0375961 h 3.94 l 1.06,-4.23999995 a 1,1 0 1 1 1.94,0.47999995 l -0.94,3.76 H 17 a 1,1 0 0 1 0,2 h -3.47 l -1,3.9999999 H 15 a 1,1 0 1 1 0,2 h -2.97 l -1.06,4.25 a 1.0004624,1.0004624 0 1 1 -1.94,-0.49 l 0.94,-3.76 H 6.03 l -1.06,4.25 a 1.0004624,1.0004624 0 1 1 -1.94,-0.49 l 0.94,-3.76 H 1 a 1,1 0 0 1 0,-2 h 3.47 l 1,-3.9999999 H 3 a 1,1 0 0 1 0,-2 H 5.97 L 7.03,0.79759615 A 1,1 0 1 1 8.97,1.2775961 Z m -0.5,2 -1,3.9999999 h 3.94 l 1,-3.9999999 z"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

119
docs/javascripts/extra.js Normal file
View File

@ -0,0 +1,119 @@
var platforms = ["win", "unix"];
var platform_override = null;
function detect_platform() {
"use strict";
if (platform_override !== null) {
return "unknown";
}
var os = "unknown";
if (navigator.platform == "Linux x86_64") {os = "unix";}
if (navigator.platform == "Linux i686") {os = "unix";}
if (navigator.platform == "Linux i686 on x86_64") {os = "unix";}
if (navigator.platform == "Linux aarch64") {os = "unix";}
if (navigator.platform == "Linux armv6l") {os = "unix";}
if (navigator.platform == "Linux armv7l") {os = "unix";}
if (navigator.platform == "Linux armv8l") {os = "unix";}
if (navigator.platform == "Linux ppc64") {os = "unix";}
if (navigator.platform == "Linux mips") {os = "unix";}
if (navigator.platform == "Linux mips64") {os = "unix";}
if (navigator.platform == "Mac") {os = "unix";}
if (navigator.platform == "Win32") {os = "win";}
if (navigator.platform == "Win64" ||
navigator.userAgent.indexOf("WOW64") != -1 ||
navigator.userAgent.indexOf("Win64") != -1) {os = "win";}
if (navigator.platform == "FreeBSD x86_64") {os = "unix";}
if (navigator.platform == "FreeBSD amd64") {os = "unix";}
// if (navigator.platform == "NetBSD x86_64") {os = "unix";}
// if (navigator.platform == "NetBSD amd64") {os = "unix";}
// I wish I knew by now, but I don't. Try harder.
if (os == "unknown") {
if (navigator.appVersion.indexOf("Win")!=-1) {os = "win";}
if (navigator.appVersion.indexOf("Mac")!=-1) {os = "unix";}
if (navigator.appVersion.indexOf("FreeBSD")!=-1) {os = "unix";}
}
// Firefox Quantum likes to hide platform and appVersion but oscpu works
if (navigator.oscpu) {
if (navigator.oscpu.indexOf("Win32")!=-1) {os = "win";}
if (navigator.oscpu.indexOf("Win64")!=-1) {os = "win";}
if (navigator.oscpu.indexOf("Mac")!=-1) {os = "unix";}
if (navigator.oscpu.indexOf("Linux")!=-1) {os = "unix";}
if (navigator.oscpu.indexOf("FreeBSD")!=-1) {os = "unix";}
// if (navigator.oscpu.indexOf("NetBSD")!=-1) {os = "unix";}
}
return os;
}
function adjust_for_platform() {
"use strict";
var platform = detect_platform();
if (platforms.includes(platform)) {
platforms.forEach(function (platform_elem) {
var platform_div = document.getElementById("ghcup-instructions-" + platform_elem);
platform_div.style.display = "none";
if (platform == platform_elem) {
platform_div.style.display = "block";
}
});
}
}
function show_all_platforms() {
platforms.forEach(function (platform_elem) {
var platform_div = document.getElementById("ghcup-instructions-" + platform_elem);
platform_div.style.display = "block";
});
var buttons = document.getElementsByClassName("show-all-platforms");
console.log(buttons);
Array.from(buttons).forEach(function (button) {
button.style.display = "none";
});
}
function set_up_default_platform_buttons() {
var defaults_buttons = document.getElementsByClassName('show-all-platforms-button');
for (var i = 0; i < defaults_buttons.length; i++) {
defaults_buttons[i].onclick = show_all_platforms;
}
}
function copyToClipboardNux() {
const text = document.getElementById("ghcup-command-linux").innerText;
const el = document.createElement('textarea');
el.value = text;
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
const button = document.getElementById("ghcup-linux-button");
button.focus();
}
function copyToClipboardWin() {
const text = document.getElementById("ghcup-command-windows").innerText;
const el = document.createElement('textarea');
el.value = text;
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
const button = document.getElementById("ghcup-windows-button");
button.focus();
}
(function () {
adjust_for_platform();
set_up_default_platform_buttons();
}());

536
docs/modules_small.svg Normal file
View File

@ -0,0 +1,536 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 5.0.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="720pt" height="648pt"
viewBox="0.00 0.00 719.74 648.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(0.580229 0.580229) rotate(0) translate(4 1112.8)">
<title>G</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1112.8 1236.45,-1112.8 1236.45,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_0</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="8,-14.04 8,-1094.76 1156,-1094.76 1156,-14.04 8,-14.04"/>
<text text-anchor="middle" x="582" y="-1079.56" font-family="Times,serif" font-size="14.00">GHCup</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_1</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="661,-700.02 661,-963.18 929,-963.18 929,-700.02 661,-700.02"/>
<text text-anchor="middle" x="795" y="-947.98" font-family="Times,serif" font-size="14.00">Download</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_2</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="545,-28.07 545,-685.98 1020,-685.98 1020,-28.07 545,-28.07"/>
<text text-anchor="middle" x="782.5" y="-670.78" font-family="Times,serif" font-size="14.00">Prelude</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_3</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="558,-154.39 558,-285.97 735,-285.97 735,-154.39 558,-154.39"/>
<text text-anchor="middle" x="646.5" y="-270.77" font-family="Times,serif" font-size="14.00">File</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_4</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="553,-300.01 553,-431.59 771,-431.59 771,-300.01 553,-300.01"/>
<text text-anchor="middle" x="662" y="-416.39" font-family="Times,serif" font-size="14.00">Logger</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_5</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="779,-300.01 779,-431.59 1012,-431.59 1012,-300.01 779,-300.01"/>
<text text-anchor="middle" x="895.5" y="-416.39" font-family="Times,serif" font-size="14.00">Process</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_6</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="699,-500.01 699,-631.59 769,-631.59 769,-500.01 699,-500.01"/>
<text text-anchor="middle" x="734" y="-616.39" font-family="Times,serif" font-size="14.00">String</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_7</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="942,-500.01 942,-631.59 1012,-631.59 1012,-500.01 942,-500.01"/>
<text text-anchor="middle" x="977" y="-616.39" font-family="Times,serif" font-size="14.00">Version</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_8</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="16,-140.35 16,-485.98 413,-485.98 413,-140.35 16,-140.35"/>
<text text-anchor="middle" x="214.5" y="-470.78" font-family="Times,serif" font-size="14.00">Types</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_9</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="24,-154.39 24,-431.59 230,-431.59 230,-154.39 24,-154.39"/>
<text text-anchor="middle" x="127" y="-416.39" font-family="Times,serif" font-size="14.00">JSON</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_10</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="418,-700.02 418,-831.6 580,-831.6 580,-700.02 418,-700.02"/>
<text text-anchor="middle" x="499" y="-816.4" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u2 -->
<g id="node1" class="node">
<title>u2</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="864" cy="-877.04" rx="56.59" ry="18"/>
<text text-anchor="middle" x="864" y="-873.34" font-family="Times,serif" font-size="14.00">Download</text>
</g>
<!-- u15 -->
<g id="node26" class="node">
<title>u15</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="1097" cy="-746.04" rx="51.19" ry="18"/>
<text text-anchor="middle" x="1097" y="-742.34" font-family="Times,serif" font-size="14.00">Platform</text>
</g>
<!-- u2&#45;&gt;u15 -->
<g id="edge20" class="edge">
<title>u2&#45;&gt;u15</title>
<path fill="none" stroke="black" d="M898.14,-862.66C933.72,-848.11 990.51,-823.14 1036,-795.04 1048.03,-787.6 1060.45,-778.2 1070.92,-769.69"/>
<polygon fill="black" stroke="black" points="1073.38,-772.18 1078.85,-763.11 1068.92,-766.8 1073.38,-772.18"/>
</g>
<!-- u22 -->
<g id="node27" class="node">
<title>u22</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="982" cy="-746.04" rx="45.49" ry="18"/>
<text text-anchor="middle" x="982" y="-742.34" font-family="Times,serif" font-size="14.00">Version</text>
</g>
<!-- u2&#45;&gt;u22 -->
<g id="edge21" class="edge">
<title>u2&#45;&gt;u22</title>
<path fill="none" stroke="black" d="M879.18,-859.44C899.83,-836.86 936.88,-796.37 960.41,-770.64"/>
<polygon fill="black" stroke="black" points="963.08,-772.91 967.24,-763.17 957.91,-768.18 963.08,-772.91"/>
</g>
<!-- u28 -->
<g id="node2" class="node">
<title>u28</title>
<ellipse fill="#bbbbff" stroke="black" stroke-width="0" cx="777" cy="-746.04" rx="33.29" ry="18"/>
<text text-anchor="middle" x="777" y="-742.34" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u16 -->
<g id="node12" class="node">
<title>u16</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="826" cy="-546.04" rx="46.59" ry="18"/>
<text text-anchor="middle" x="826" y="-542.34" font-family="Times,serif" font-size="14.00">Prelude</text>
</g>
<!-- u28&#45;&gt;u16 -->
<g id="edge22" class="edge">
<title>u28&#45;&gt;u16</title>
<path fill="none" stroke="black" d="M781.18,-728.15C789.67,-693.83 809.02,-615.63 819.3,-574.11"/>
<polygon fill="black" stroke="black" points="822.76,-574.7 821.76,-564.16 815.96,-573.02 822.76,-574.7"/>
</g>
<!-- u31 -->
<g id="node3" class="node">
<title>u31</title>
<ellipse fill="#bbbbff" stroke="black" stroke-width="0" cx="729" cy="-877.04" rx="60.39" ry="18"/>
<text text-anchor="middle" x="729" y="-873.34" font-family="Times,serif" font-size="14.00">IOStreams</text>
</g>
<!-- u31&#45;&gt;u28 -->
<g id="edge23" class="edge">
<title>u31&#45;&gt;u28</title>
<path fill="none" stroke="black" d="M735.37,-858.91C743.52,-837 757.72,-798.86 767.23,-773.28"/>
<polygon fill="black" stroke="black" points="770.55,-774.42 770.75,-763.83 763.98,-771.98 770.55,-774.42"/>
</g>
<!-- u19 -->
<g id="node4" class="node">
<title>u19</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="2" cx="595" cy="-200.04" rx="28.7" ry="18"/>
<text text-anchor="middle" x="595" y="-196.34" font-family="Times,serif" font-size="14.00">File</text>
</g>
<!-- u17 -->
<g id="node14" class="node">
<title>u17</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="0" cx="601" cy="-74.04" rx="48.19" ry="18"/>
<text text-anchor="middle" x="601" y="-70.34" font-family="Times,serif" font-size="14.00">Internal</text>
</g>
<!-- u19&#45;&gt;u17 -->
<g id="edge27" class="edge">
<title>u19&#45;&gt;u17</title>
<path fill="none" stroke="black" d="M595.83,-181.79C596.83,-161.25 598.5,-126.67 599.67,-102.44"/>
<polygon fill="black" stroke="black" points="603.19,-102.29 600.17,-92.13 596.19,-101.95 603.19,-102.29"/>
</g>
<!-- u3 -->
<g id="node25" class="node">
<title>u3</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="462" cy="-346.04" rx="40.89" ry="18"/>
<text text-anchor="middle" x="462" y="-342.34" font-family="Times,serif" font-size="14.00">Errors</text>
</g>
<!-- u19&#45;&gt;u3 -->
<g id="edge26" class="edge">
<title>u19&#45;&gt;u3</title>
<path fill="none" stroke="black" d="M581,-216.2C557.77,-241.35 511.1,-291.87 483.62,-321.63"/>
<polygon fill="black" stroke="black" points="480.96,-319.35 476.74,-329.07 486.1,-324.1 480.96,-319.35"/>
</g>
<!-- u12 -->
<g id="node5" class="node">
<title>u12</title>
<ellipse fill="#bbffff" stroke="black" stroke-width="0" cx="684" cy="-200.04" rx="42.79" ry="18"/>
<text text-anchor="middle" x="684" y="-196.34" font-family="Times,serif" font-size="14.00">Search</text>
</g>
<!-- u4 -->
<g id="node18" class="node">
<title>u4</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="367" cy="-200.04" rx="38.19" ry="18"/>
<text text-anchor="middle" x="367" y="-196.34" font-family="Times,serif" font-size="14.00">Types</text>
</g>
<!-- u12&#45;&gt;u4 -->
<g id="edge28" class="edge">
<title>u12&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M677.28,-217.85C668.51,-238.23 651.02,-270.58 624,-284.54 599.91,-296.97 589.55,-290.02 563,-284.54 502.61,-272.07 437.92,-240.11 400.03,-219.26"/>
<polygon fill="black" stroke="black" points="401.43,-216.04 391,-214.22 398.02,-222.15 401.43,-216.04"/>
</g>
<!-- u18 -->
<g id="node6" class="node">
<title>u18</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="2" cx="719" cy="-346.04" rx="43.59" ry="18"/>
<text text-anchor="middle" x="719" y="-342.34" font-family="Times,serif" font-size="14.00">Logger</text>
</g>
<!-- u18&#45;&gt;u19 -->
<g id="edge29" class="edge">
<title>u18&#45;&gt;u19</title>
<path fill="none" stroke="black" d="M703.82,-329.08C686.13,-310.31 656.24,-278.02 632,-249.04 625.56,-241.33 618.77,-232.7 612.8,-224.9"/>
<polygon fill="black" stroke="black" points="615.52,-222.7 606.69,-216.85 609.95,-226.93 615.52,-222.7"/>
</g>
<!-- u14 -->
<g id="node7" class="node">
<title>u14</title>
<ellipse fill="#ffbbff" stroke="black" stroke-width="0" cx="609" cy="-346.04" rx="48.19" ry="18"/>
<text text-anchor="middle" x="609" y="-342.34" font-family="Times,serif" font-size="14.00">Internal</text>
</g>
<!-- u14&#45;&gt;u4 -->
<g id="edge30" class="edge">
<title>u14&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M584.46,-330.44C540.32,-304.17 447.59,-248.99 398.7,-219.9"/>
<polygon fill="black" stroke="black" points="400.21,-216.72 389.82,-214.62 396.63,-222.74 400.21,-216.72"/>
</g>
<!-- u20 -->
<g id="node8" class="node">
<title>u20</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="2" cx="957" cy="-346.04" rx="46.59" ry="18"/>
<text text-anchor="middle" x="957" y="-342.34" font-family="Times,serif" font-size="14.00">Process</text>
</g>
<!-- u32 -->
<g id="node9" class="node">
<title>u32</title>
<ellipse fill="#77ff77" stroke="black" stroke-width="0" cx="840" cy="-346.04" rx="52.79" ry="18"/>
<text text-anchor="middle" x="840" y="-342.34" font-family="Times,serif" font-size="14.00">Windows</text>
</g>
<!-- u32&#45;&gt;u12 -->
<g id="edge31" class="edge">
<title>u32&#45;&gt;u12</title>
<path fill="none" stroke="black" d="M822.41,-328.8C794.64,-303.17 740.56,-253.24 708.84,-223.97"/>
<polygon fill="black" stroke="black" points="711.01,-221.21 701.29,-217 706.26,-226.35 711.01,-221.21"/>
</g>
<!-- u13 -->
<g id="node10" class="node">
<title>u13</title>
<ellipse fill="#ffff77" stroke="black" stroke-width="0" cx="734" cy="-546.04" rx="27" ry="18"/>
<text text-anchor="middle" x="734" y="-542.34" font-family="Times,serif" font-size="14.00">QQ</text>
</g>
<!-- u21 -->
<g id="node11" class="node">
<title>u21</title>
<ellipse fill="#7777ff" stroke="black" stroke-width="0" cx="977" cy="-546.04" rx="27" ry="18"/>
<text text-anchor="middle" x="977" y="-542.34" font-family="Times,serif" font-size="14.00">QQ</text>
</g>
<!-- u16&#45;&gt;u18 -->
<g id="edge24" class="edge">
<title>u16&#45;&gt;u18</title>
<path fill="none" stroke="black" d="M816.88,-528.15C798.12,-493.45 755.14,-413.91 732.9,-372.75"/>
<polygon fill="black" stroke="black" points="735.93,-371.01 728.1,-363.87 729.77,-374.34 735.93,-371.01"/>
</g>
<!-- u10 -->
<g id="node13" class="node">
<title>u10</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="0" cx="621" cy="-546.04" rx="67.69" ry="18"/>
<text text-anchor="middle" x="621" y="-542.34" font-family="Times,serif" font-size="14.00">MegaParsec</text>
</g>
<!-- u10&#45;&gt;u4 -->
<g id="edge25" class="edge">
<title>u10&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M608.83,-528.04C593.2,-505.6 566.08,-464.42 549,-426.04 528.99,-381.07 544.65,-360.74 517,-320.04 486.57,-275.23 434.11,-239.25 399.99,-219.02"/>
<polygon fill="black" stroke="black" points="401.72,-215.97 391.31,-213.97 398.2,-222.02 401.72,-215.97"/>
</g>
<!-- u8 -->
<g id="node15" class="node">
<title>u8</title>
<ellipse fill="#ff7777" stroke="black" stroke-width="2" cx="68" cy="-346.04" rx="36" ry="18"/>
<text text-anchor="middle" x="68" y="-342.34" font-family="Times,serif" font-size="14.00">JSON</text>
</g>
<!-- u8&#45;&gt;u10 -->
<g id="edge35" class="edge">
<title>u8&#45;&gt;u10</title>
<path fill="none" stroke="black" d="M73.11,-363.98C79.47,-382.14 92.13,-410.45 113,-426.04 241.65,-522.14 435.74,-542.2 542.93,-545.46"/>
<polygon fill="black" stroke="black" points="542.94,-548.96 553.03,-545.72 543.13,-541.96 542.94,-548.96"/>
</g>
<!-- u9 -->
<g id="node17" class="node">
<title>u9</title>
<ellipse fill="#77ffff" stroke="black" stroke-width="0" cx="68" cy="-200.04" rx="33.29" ry="18"/>
<text text-anchor="middle" x="68" y="-196.34" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u8&#45;&gt;u9 -->
<g id="edge37" class="edge">
<title>u8&#45;&gt;u9</title>
<path fill="none" stroke="black" d="M68,-327.95C68,-303.38 68,-257.79 68,-228.46"/>
<polygon fill="black" stroke="black" points="71.5,-228.1 68,-218.1 64.5,-228.1 71.5,-228.1"/>
</g>
<!-- u5 -->
<g id="node19" class="node">
<title>u5</title>
<ellipse fill="#ff7777" stroke="black" stroke-width="0" cx="274" cy="-200.04" rx="36.29" ry="18"/>
<text text-anchor="middle" x="274" y="-196.34" font-family="Times,serif" font-size="14.00">Stack</text>
</g>
<!-- u8&#45;&gt;u5 -->
<g id="edge36" class="edge">
<title>u8&#45;&gt;u5</title>
<path fill="none" stroke="black" d="M91.07,-331.98C135.2,-306.96 227.81,-254.25 234,-249.04 242.13,-242.19 249.89,-233.55 256.38,-225.5"/>
<polygon fill="black" stroke="black" points="259.29,-227.46 262.64,-217.42 253.75,-223.18 259.29,-227.46"/>
</g>
<!-- u6 -->
<g id="node16" class="node">
<title>u6</title>
<ellipse fill="#77ffff" stroke="black" stroke-width="0" cx="172" cy="-346.04" rx="50.09" ry="18"/>
<text text-anchor="middle" x="172" y="-342.34" font-family="Times,serif" font-size="14.00">Versions</text>
</g>
<!-- u7 -->
<g id="node22" class="node">
<title>u7</title>
<ellipse fill="#ff77ff" stroke="black" stroke-width="0" cx="457" cy="-746.04" rx="30.59" ry="18"/>
<text text-anchor="middle" x="457" y="-742.34" font-family="Times,serif" font-size="14.00">Dirs</text>
</g>
<!-- u4&#45;&gt;u7 -->
<g id="edge32" class="edge">
<title>u4&#45;&gt;u7</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M371.51,-218.23C377.33,-241.24 387.28,-283.39 392,-320.04 409.38,-455.08 376.84,-493.26 407,-626.04 414.68,-659.84 431.33,-696.24 443.31,-719.76"/>
<polygon fill="black" stroke="black" points="440.25,-721.44 447.96,-728.7 446.46,-718.22 440.25,-721.44"/>
</g>
<!-- u5&#45;&gt;u6 -->
<g id="edge33" class="edge">
<title>u5&#45;&gt;u6</title>
<path fill="none" stroke="black" d="M262.44,-217.36C244.69,-242.42 210.6,-290.54 189.72,-320.01"/>
<polygon fill="black" stroke="black" points="186.62,-318.33 183.7,-328.52 192.34,-322.38 186.62,-318.33"/>
</g>
<!-- u11 -->
<g id="node20" class="node">
<title>u11</title>
<ellipse fill="#ff7777" stroke="black" stroke-width="0" cx="343" cy="-346.04" rx="40.09" ry="18"/>
<text text-anchor="middle" x="343" y="-342.34" font-family="Times,serif" font-size="14.00">Optics</text>
</g>
<!-- u11&#45;&gt;u4 -->
<g id="edge34" class="edge">
<title>u11&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M345.85,-327.95C349.96,-303.27 357.61,-257.39 362.49,-228.08"/>
<polygon fill="black" stroke="black" points="365.96,-228.54 364.16,-218.1 359.06,-227.39 365.96,-228.54"/>
</g>
<!-- u23 -->
<g id="node21" class="node">
<title>u23</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="539" cy="-746.04" rx="33.29" ry="18"/>
<text text-anchor="middle" x="539" y="-742.34" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u23&#45;&gt;u2 -->
<g id="edge38" class="edge">
<title>u23&#45;&gt;u2</title>
<path fill="none" stroke="black" d="M564.74,-757.62C588.62,-767.41 625.16,-782.33 657,-795.04 713.2,-817.46 778.2,-842.8 820.15,-859.07"/>
<polygon fill="black" stroke="black" points="818.93,-862.35 829.52,-862.7 821.46,-855.83 818.93,-862.35"/>
</g>
<!-- u7&#45;&gt;u12 -->
<g id="edge40" class="edge">
<title>u7&#45;&gt;u12</title>
<path fill="none" stroke="black" d="M462.46,-728.29C469.7,-705.44 482.32,-663.09 489,-626.04 497.4,-579.47 487.79,-566.01 499,-520.04 509.67,-476.26 525.92,-469.71 537,-426.04 548.66,-380.08 526.65,-361.85 549,-320.04 572.04,-276.93 596.52,-281.58 633,-249.04 642.03,-240.98 651.75,-231.93 660.25,-223.88"/>
<polygon fill="black" stroke="black" points="662.84,-226.25 667.67,-216.83 658.01,-221.18 662.84,-226.25"/>
</g>
<!-- u7&#45;&gt;u14 -->
<g id="edge41" class="edge">
<title>u7&#45;&gt;u14</title>
<path fill="none" stroke="black" d="M463.12,-728.34C476.85,-690.97 511.24,-597.71 541,-520.04 560.88,-468.15 584.78,-407.79 598.3,-373.84"/>
<polygon fill="black" stroke="black" points="601.7,-374.77 602.15,-364.19 595.19,-372.18 601.7,-374.77"/>
</g>
<!-- u7&#45;&gt;u13 -->
<g id="edge42" class="edge">
<title>u7&#45;&gt;u13</title>
<path fill="none" stroke="black" d="M476.64,-732.05C483.03,-728.02 490.22,-723.68 497,-720.04 585.64,-672.38 633.79,-699.1 703,-626.04 716.59,-611.69 724.45,-590.68 728.86,-573.94"/>
<polygon fill="black" stroke="black" points="732.27,-574.7 731.17,-564.16 725.46,-573.08 732.27,-574.7"/>
</g>
<!-- u7&#45;&gt;u8 -->
<g id="edge44" class="edge">
<title>u7&#45;&gt;u8</title>
<path fill="none" stroke="black" d="M438.75,-731.41C384.23,-690.08 219.78,-560.69 113,-426.04 100.01,-409.65 88.41,-389.06 80.24,-373.01"/>
<polygon fill="black" stroke="black" points="83.19,-371.09 75.62,-363.68 76.92,-374.2 83.19,-371.09"/>
</g>
<!-- u7&#45;&gt;u11 -->
<g id="edge43" class="edge">
<title>u7&#45;&gt;u11</title>
<path fill="none" stroke="black" d="M446.94,-728.73C433.58,-706.37 410.16,-664.57 397,-626.04 366.47,-536.65 351.4,-424.92 345.75,-374.25"/>
<polygon fill="black" stroke="black" points="349.2,-373.69 344.65,-364.12 342.25,-374.44 349.2,-373.69"/>
</g>
<!-- u7&#45;&gt;u3 -->
<g id="edge39" class="edge">
<title>u7&#45;&gt;u3</title>
<path fill="none" stroke="black" d="M457.21,-727.93C458,-665.68 460.7,-450.79 461.66,-374.32"/>
<polygon fill="black" stroke="black" points="465.16,-374.12 461.79,-364.07 458.16,-374.03 465.16,-374.12"/>
</g>
<!-- u0 -->
<g id="node23" class="node">
<title>u0</title>
<ellipse fill="#bbffbb" stroke="black" stroke-width="2" cx="460" cy="-1009.04" rx="44.39" ry="18"/>
<text text-anchor="middle" x="460" y="-1005.34" font-family="Times,serif" font-size="14.00">GHCup</text>
</g>
<!-- u1 -->
<g id="node24" class="node">
<title>u1</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="286" cy="-877.04" rx="37.09" ry="18"/>
<text text-anchor="middle" x="286" y="-873.34" font-family="Times,serif" font-size="14.00">Cabal</text>
</g>
<!-- u0&#45;&gt;u1 -->
<g id="edge3" class="edge">
<title>u0&#45;&gt;u1</title>
<path fill="none" stroke="black" d="M434.75,-994.25C408.03,-979.13 365.23,-953.36 332,-926.04 323.08,-918.7 314.11,-909.77 306.49,-901.61"/>
<polygon fill="black" stroke="black" points="308.96,-899.13 299.64,-894.1 303.79,-903.85 308.96,-899.13"/>
</g>
<!-- u24 -->
<g id="node28" class="node">
<title>u24</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="539" cy="-877.04" rx="32.49" ry="18"/>
<text text-anchor="middle" x="539" y="-873.34" font-family="Times,serif" font-size="14.00">GHC</text>
</g>
<!-- u0&#45;&gt;u24 -->
<g id="edge4" class="edge">
<title>u0&#45;&gt;u24</title>
<path fill="none" stroke="black" d="M470.17,-991.31C483.75,-968.95 507.94,-929.15 523.72,-903.18"/>
<polygon fill="black" stroke="black" points="526.92,-904.65 529.12,-894.29 520.94,-901.02 526.92,-904.65"/>
</g>
<!-- u25 -->
<g id="node29" class="node">
<title>u25</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="620" cy="-877.04" rx="30.59" ry="18"/>
<text text-anchor="middle" x="620" y="-873.34" font-family="Times,serif" font-size="14.00">HLS</text>
</g>
<!-- u0&#45;&gt;u25 -->
<g id="edge5" class="edge">
<title>u0&#45;&gt;u25</title>
<path fill="none" stroke="black" d="M484.89,-993.83C510.23,-978.75 549.94,-953.36 580,-926.04 587.86,-918.89 595.57,-910.18 602.08,-902.15"/>
<polygon fill="black" stroke="black" points="604.96,-904.15 608.4,-894.13 599.46,-899.83 604.96,-904.15"/>
</g>
<!-- u26 -->
<g id="node30" class="node">
<title>u26</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="377" cy="-877.04" rx="36.29" ry="18"/>
<text text-anchor="middle" x="377" y="-873.34" font-family="Times,serif" font-size="14.00">Stack</text>
</g>
<!-- u0&#45;&gt;u26 -->
<g id="edge6" class="edge">
<title>u0&#45;&gt;u26</title>
<path fill="none" stroke="black" d="M449.32,-991.31C434.98,-968.85 409.41,-928.8 392.83,-902.84"/>
<polygon fill="black" stroke="black" points="395.71,-900.84 387.38,-894.29 389.81,-904.6 395.71,-900.84"/>
</g>
<!-- u27 -->
<g id="node31" class="node">
<title>u27</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="460" cy="-877.04" rx="28.7" ry="18"/>
<text text-anchor="middle" x="460" y="-873.34" font-family="Times,serif" font-size="14.00">List</text>
</g>
<!-- u0&#45;&gt;u27 -->
<g id="edge7" class="edge">
<title>u0&#45;&gt;u27</title>
<path fill="none" stroke="black" d="M460,-990.77C460,-969.02 460,-931.36 460,-905.6"/>
<polygon fill="black" stroke="black" points="463.5,-905.37 460,-895.37 456.5,-905.37 463.5,-905.37"/>
</g>
<!-- u1&#45;&gt;u23 -->
<g id="edge8" class="edge">
<title>u1&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M314.9,-865.36C370.84,-844.64 489.16,-800.51 497,-795.04 506.26,-788.57 514.81,-779.64 521.75,-771.23"/>
<polygon fill="black" stroke="black" points="524.7,-773.14 528.11,-763.11 519.19,-768.82 524.7,-773.14"/>
</g>
<!-- u3&#45;&gt;u4 -->
<g id="edge9" class="edge">
<title>u3&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M451.1,-328.52C434.5,-303.34 402.74,-255.21 383.36,-225.83"/>
<polygon fill="black" stroke="black" points="386.2,-223.78 377.77,-217.36 380.36,-227.64 386.2,-223.78"/>
</g>
<!-- u15&#45;&gt;u20 -->
<g id="edge11" class="edge">
<title>u15&#45;&gt;u20</title>
<path fill="none" stroke="black" d="M1106.22,-728.21C1125.98,-689.79 1168.17,-593.22 1137,-520.04 1107.21,-450.08 1033.73,-394.77 990.42,-366.88"/>
<polygon fill="black" stroke="black" points="992.25,-363.89 981.93,-361.51 988.51,-369.81 992.25,-363.89"/>
</g>
<!-- u15&#45;&gt;u21 -->
<g id="edge12" class="edge">
<title>u15&#45;&gt;u21</title>
<path fill="none" stroke="black" d="M1082.5,-728.68C1063.49,-706.61 1029.96,-665.48 1008,-626.04 998.71,-609.35 990.88,-589.31 985.41,-573.59"/>
<polygon fill="black" stroke="black" points="988.68,-572.32 982.17,-563.96 982.05,-574.56 988.68,-572.32"/>
</g>
<!-- u15&#45;&gt;u16 -->
<g id="edge10" class="edge">
<title>u15&#45;&gt;u16</title>
<path fill="none" stroke="black" d="M1075.74,-729.5C1027.53,-694.28 909.88,-608.32 855.04,-568.25"/>
<polygon fill="black" stroke="black" points="856.93,-565.3 846.79,-562.23 852.8,-570.95 856.93,-565.3"/>
</g>
<!-- u22&#45;&gt;u3 -->
<g id="edge13" class="edge">
<title>u22&#45;&gt;u3</title>
<path fill="none" stroke="black" d="M957.08,-730.89C949.51,-726.98 941.06,-723.01 933,-720.04 764.92,-658 670.23,-750.13 541,-626.04 469.68,-557.55 461.3,-429.93 461.26,-374.22"/>
<polygon fill="black" stroke="black" points="464.76,-374.11 461.34,-364.08 457.76,-374.05 464.76,-374.11"/>
</g>
<!-- u24&#45;&gt;u23 -->
<g id="edge14" class="edge">
<title>u24&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M539,-858.91C539,-837.32 539,-799.95 539,-774.39"/>
<polygon fill="black" stroke="black" points="542.5,-774.24 539,-764.24 535.5,-774.24 542.5,-774.24"/>
</g>
<!-- u25&#45;&gt;u23 -->
<g id="edge15" class="edge">
<title>u25&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M609.91,-859.96C596.02,-837.85 570.9,-797.84 554.59,-771.86"/>
<polygon fill="black" stroke="black" points="557.5,-769.92 549.22,-763.32 551.58,-773.65 557.5,-769.92"/>
</g>
<!-- u26&#45;&gt;u23 -->
<g id="edge16" class="edge">
<title>u26&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M399.92,-863.01C425.04,-848.19 465.9,-822.47 497,-795.04 505.22,-787.78 513.36,-778.96 520.26,-770.87"/>
<polygon fill="black" stroke="black" points="523.01,-773.04 526.7,-763.11 517.62,-768.57 523.01,-773.04"/>
</g>
<!-- u27&#45;&gt;u23 -->
<g id="edge17" class="edge">
<title>u27&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M469.85,-859.96C483.39,-837.85 507.89,-797.84 523.79,-771.86"/>
<polygon fill="black" stroke="black" points="526.79,-773.67 529.03,-763.32 520.82,-770.02 526.79,-773.67"/>
</g>
<!-- u29 -->
<g id="node32" class="node">
<title>u29</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="1078" cy="-546.04" rx="50.09" ry="18"/>
<text text-anchor="middle" x="1078" y="-542.34" font-family="Times,serif" font-size="14.00">Prompts</text>
</g>
<!-- u29&#45;&gt;u18 -->
<g id="edge18" class="edge">
<title>u29&#45;&gt;u18</title>
<path fill="none" stroke="black" d="M1046.17,-532.12C1036.49,-528.21 1025.82,-523.93 1016,-520.04 909.13,-477.65 865.61,-496.8 775,-426.04 756.67,-411.72 741.79,-389.8 731.99,-372.67"/>
<polygon fill="black" stroke="black" points="734.96,-370.81 727.08,-363.74 728.83,-374.19 734.96,-370.81"/>
</g>
<!-- u30 -->
<g id="node33" class="node">
<title>u30</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="1015" cy="-877.04" rx="76.09" ry="18"/>
<text text-anchor="middle" x="1015" y="-873.34" font-family="Times,serif" font-size="14.00">Requirements</text>
</g>
<!-- u30&#45;&gt;u22 -->
<g id="edge19" class="edge">
<title>u30&#45;&gt;u22</title>
<path fill="none" stroke="black" d="M1010.62,-858.91C1005.07,-837.22 995.45,-799.61 988.91,-774.05"/>
<polygon fill="black" stroke="black" points="992.27,-773.06 986.4,-764.24 985.49,-774.79 992.27,-773.06"/>
</g>
<!-- u33 -->
<g id="node34" class="node">
<title>u33</title>
<ellipse fill="#bbffbb" stroke="black" stroke-width="0" cx="1198" cy="-1009.04" rx="34.39" ry="18"/>
<text text-anchor="middle" x="1198" y="-1005.34" font-family="Times,serif" font-size="14.00">Main</text>
</g>
<!-- u33&#45;&gt;u24 -->
<g id="edge1" class="edge">
<title>u33&#45;&gt;u24</title>
<path fill="none" stroke="black" d="M1173.88,-995.92C1169.36,-994.03 1164.6,-992.29 1160,-991.04 909.74,-922.81 809.14,-1047.6 580,-926.04 569.88,-920.66 561.18,-911.67 554.44,-902.91"/>
<polygon fill="black" stroke="black" points="557.24,-900.82 548.59,-894.71 551.55,-904.88 557.24,-900.82"/>
</g>
<!-- u33&#45;&gt;u25 -->
<g id="edge2" class="edge">
<title>u33&#45;&gt;u25</title>
<path fill="none" stroke="black" d="M1173.86,-995.98C1169.34,-994.09 1164.59,-992.33 1160,-991.04 943.03,-929.91 852.47,-1038.29 657,-926.04 647.56,-920.61 639.7,-911.73 633.69,-903.07"/>
<polygon fill="black" stroke="black" points="636.64,-901.17 628.31,-894.62 630.73,-904.93 636.64,-901.17"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

536
docs/modules_wide.svg Normal file
View File

@ -0,0 +1,536 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 5.0.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="1076pt" height="648pt"
viewBox="0.00 0.00 1075.76 648.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(0.867238 0.867238) rotate(0) translate(4 743.2)">
<title>G</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-743.2 1236.45,-743.2 1236.45,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_0</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="8,-9.36 8,-729.84 1156,-729.84 1156,-9.36 8,-9.36"/>
<text text-anchor="middle" x="582" y="-714.64" font-family="Times,serif" font-size="14.00">GHCup</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_1</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="661,-466.68 661,-642.12 929,-642.12 929,-466.68 661,-466.68"/>
<text text-anchor="middle" x="795" y="-626.92" font-family="Times,serif" font-size="14.00">Download</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_2</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="545,-18.71 545,-457.32 1020,-457.32 1020,-18.71 545,-18.71"/>
<text text-anchor="middle" x="782.5" y="-442.12" font-family="Times,serif" font-size="14.00">Prelude</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_3</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="558,-102.93 558,-190.65 735,-190.65 735,-102.93 558,-102.93"/>
<text text-anchor="middle" x="646.5" y="-175.45" font-family="Times,serif" font-size="14.00">File</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_4</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="553,-200.01 553,-287.73 771,-287.73 771,-200.01 553,-200.01"/>
<text text-anchor="middle" x="662" y="-272.53" font-family="Times,serif" font-size="14.00">Logger</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_5</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="779,-200.01 779,-287.73 1012,-287.73 1012,-200.01 779,-200.01"/>
<text text-anchor="middle" x="895.5" y="-272.53" font-family="Times,serif" font-size="14.00">Process</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_6</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="699,-333.34 699,-421.06 769,-421.06 769,-333.34 699,-333.34"/>
<text text-anchor="middle" x="734" y="-405.86" font-family="Times,serif" font-size="14.00">String</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_7</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="942,-333.34 942,-421.06 1012,-421.06 1012,-333.34 942,-333.34"/>
<text text-anchor="middle" x="977" y="-405.86" font-family="Times,serif" font-size="14.00">Version</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_8</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="16,-93.57 16,-323.98 413,-323.98 413,-93.57 16,-93.57"/>
<text text-anchor="middle" x="214.5" y="-308.78" font-family="Times,serif" font-size="14.00">Types</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_9</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="24,-102.93 24,-287.73 230,-287.73 230,-102.93 24,-102.93"/>
<text text-anchor="middle" x="127" y="-272.53" font-family="Times,serif" font-size="14.00">JSON</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_10</title>
<polygon fill="#000000" fill-opacity="0.058824" stroke="#000000" stroke-opacity="0.058824" points="418,-466.68 418,-554.4 580,-554.4 580,-466.68 418,-466.68"/>
<text text-anchor="middle" x="499" y="-539.2" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u2 -->
<g id="node1" class="node">
<title>u2</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="864" cy="-584.36" rx="56.59" ry="18"/>
<text text-anchor="middle" x="864" y="-580.66" font-family="Times,serif" font-size="14.00">Download</text>
</g>
<!-- u15 -->
<g id="node26" class="node">
<title>u15</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="1097" cy="-497.36" rx="51.19" ry="18"/>
<text text-anchor="middle" x="1097" y="-493.66" font-family="Times,serif" font-size="14.00">Platform</text>
</g>
<!-- u2&#45;&gt;u15 -->
<g id="edge20" class="edge">
<title>u2&#45;&gt;u15</title>
<path fill="none" stroke="black" d="M904.22,-571.57C911.13,-569.72 918.25,-567.9 925,-566.36 973.86,-555.17 990.28,-566.91 1036,-546.36 1049.52,-540.28 1062.68,-530.57 1073.29,-521.46"/>
<polygon fill="black" stroke="black" points="1075.75,-523.96 1080.88,-514.69 1071.09,-518.74 1075.75,-523.96"/>
</g>
<!-- u22 -->
<g id="node27" class="node">
<title>u22</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="982" cy="-497.36" rx="45.49" ry="18"/>
<text text-anchor="middle" x="982" y="-493.66" font-family="Times,serif" font-size="14.00">Version</text>
</g>
<!-- u2&#45;&gt;u22 -->
<g id="edge21" class="edge">
<title>u2&#45;&gt;u22</title>
<path fill="none" stroke="black" d="M895,-569.1C907.3,-562.85 921.28,-554.97 933,-546.36 942.7,-539.23 952.38,-530.25 960.54,-521.99"/>
<polygon fill="black" stroke="black" points="963.16,-524.32 967.56,-514.68 958.11,-519.47 963.16,-524.32"/>
</g>
<!-- u28 -->
<g id="node2" class="node">
<title>u28</title>
<ellipse fill="#bbbbff" stroke="black" stroke-width="0" cx="777" cy="-497.36" rx="33.29" ry="18"/>
<text text-anchor="middle" x="777" y="-493.66" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u16 -->
<g id="node12" class="node">
<title>u16</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="826" cy="-363.36" rx="46.59" ry="18"/>
<text text-anchor="middle" x="826" y="-359.66" font-family="Times,serif" font-size="14.00">Prelude</text>
</g>
<!-- u28&#45;&gt;u16 -->
<g id="edge22" class="edge">
<title>u28&#45;&gt;u16</title>
<path fill="none" stroke="black" d="M783.21,-479.64C791.52,-457.25 806.36,-417.27 816.19,-390.78"/>
<polygon fill="black" stroke="black" points="819.49,-391.95 819.69,-381.36 812.93,-389.51 819.49,-391.95"/>
</g>
<!-- u31 -->
<g id="node3" class="node">
<title>u31</title>
<ellipse fill="#bbbbff" stroke="black" stroke-width="0" cx="729" cy="-584.36" rx="60.39" ry="18"/>
<text text-anchor="middle" x="729" y="-580.66" font-family="Times,serif" font-size="14.00">IOStreams</text>
</g>
<!-- u31&#45;&gt;u28 -->
<g id="edge23" class="edge">
<title>u31&#45;&gt;u28</title>
<path fill="none" stroke="black" d="M738.48,-566.56C745.36,-554.38 754.8,-537.67 762.61,-523.85"/>
<polygon fill="black" stroke="black" points="765.83,-525.25 767.7,-514.83 759.73,-521.81 765.83,-525.25"/>
</g>
<!-- u19 -->
<g id="node4" class="node">
<title>u19</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="2" cx="595" cy="-133.36" rx="28.7" ry="18"/>
<text text-anchor="middle" x="595" y="-129.66" font-family="Times,serif" font-size="14.00">File</text>
</g>
<!-- u17 -->
<g id="node14" class="node">
<title>u17</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="0" cx="601" cy="-49.36" rx="48.19" ry="18"/>
<text text-anchor="middle" x="601" y="-45.66" font-family="Times,serif" font-size="14.00">Internal</text>
</g>
<!-- u19&#45;&gt;u17 -->
<g id="edge27" class="edge">
<title>u19&#45;&gt;u17</title>
<path fill="none" stroke="black" d="M596.24,-115.37C597.03,-104.55 598.08,-90.3 598.98,-77.9"/>
<polygon fill="black" stroke="black" points="602.5,-77.84 599.74,-67.61 595.52,-77.33 602.5,-77.84"/>
</g>
<!-- u3 -->
<g id="node25" class="node">
<title>u3</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="462" cy="-230.36" rx="40.89" ry="18"/>
<text text-anchor="middle" x="462" y="-226.66" font-family="Times,serif" font-size="14.00">Errors</text>
</g>
<!-- u19&#45;&gt;u3 -->
<g id="edge26" class="edge">
<title>u19&#45;&gt;u3</title>
<path fill="none" stroke="black" d="M576.84,-147.33C554.7,-163.14 517,-190.07 490.87,-208.74"/>
<polygon fill="black" stroke="black" points="488.59,-206.06 482.49,-214.72 492.66,-211.76 488.59,-206.06"/>
</g>
<!-- u12 -->
<g id="node5" class="node">
<title>u12</title>
<ellipse fill="#bbffff" stroke="black" stroke-width="0" cx="684" cy="-133.36" rx="42.79" ry="18"/>
<text text-anchor="middle" x="684" y="-129.66" font-family="Times,serif" font-size="14.00">Search</text>
</g>
<!-- u4 -->
<g id="node18" class="node">
<title>u4</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="367" cy="-133.36" rx="38.19" ry="18"/>
<text text-anchor="middle" x="367" y="-129.66" font-family="Times,serif" font-size="14.00">Types</text>
</g>
<!-- u12&#45;&gt;u4 -->
<g id="edge28" class="edge">
<title>u12&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M672.58,-150.78C661.96,-165.24 644.69,-184.79 624,-193.36 584.82,-209.58 467.94,-170.98 406.21,-148.35"/>
<polygon fill="black" stroke="black" points="407.38,-145.05 396.79,-144.87 404.96,-151.62 407.38,-145.05"/>
</g>
<!-- u18 -->
<g id="node6" class="node">
<title>u18</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="2" cx="719" cy="-230.36" rx="43.59" ry="18"/>
<text text-anchor="middle" x="719" y="-226.66" font-family="Times,serif" font-size="14.00">Logger</text>
</g>
<!-- u18&#45;&gt;u19 -->
<g id="edge29" class="edge">
<title>u18&#45;&gt;u19</title>
<path fill="none" stroke="black" d="M691.65,-216.15C669.99,-205.4 641.81,-190.7 632,-182.36 624.03,-175.58 616.67,-166.82 610.64,-158.65"/>
<polygon fill="black" stroke="black" points="613.49,-156.62 604.88,-150.45 607.77,-160.64 613.49,-156.62"/>
</g>
<!-- u14 -->
<g id="node7" class="node">
<title>u14</title>
<ellipse fill="#ffbbff" stroke="black" stroke-width="0" cx="609" cy="-230.36" rx="48.19" ry="18"/>
<text text-anchor="middle" x="609" y="-226.66" font-family="Times,serif" font-size="14.00">Internal</text>
</g>
<!-- u14&#45;&gt;u4 -->
<g id="edge30" class="edge">
<title>u14&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M577.11,-216.84C532.69,-199.4 452.29,-167.84 404.87,-149.22"/>
<polygon fill="black" stroke="black" points="406.15,-145.97 395.56,-145.57 403.59,-152.48 406.15,-145.97"/>
</g>
<!-- u20 -->
<g id="node8" class="node">
<title>u20</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="2" cx="957" cy="-230.36" rx="46.59" ry="18"/>
<text text-anchor="middle" x="957" y="-226.66" font-family="Times,serif" font-size="14.00">Process</text>
</g>
<!-- u32 -->
<g id="node9" class="node">
<title>u32</title>
<ellipse fill="#77ff77" stroke="black" stroke-width="0" cx="840" cy="-230.36" rx="52.79" ry="18"/>
<text text-anchor="middle" x="840" y="-226.66" font-family="Times,serif" font-size="14.00">Windows</text>
</g>
<!-- u32&#45;&gt;u12 -->
<g id="edge31" class="edge">
<title>u32&#45;&gt;u12</title>
<path fill="none" stroke="black" d="M815.28,-214.3C788.42,-197.95 745.41,-171.75 715.99,-153.84"/>
<polygon fill="black" stroke="black" points="717.69,-150.78 707.33,-148.56 714.05,-156.75 717.69,-150.78"/>
</g>
<!-- u13 -->
<g id="node10" class="node">
<title>u13</title>
<ellipse fill="#ffff77" stroke="black" stroke-width="0" cx="734" cy="-363.36" rx="27" ry="18"/>
<text text-anchor="middle" x="734" y="-359.66" font-family="Times,serif" font-size="14.00">QQ</text>
</g>
<!-- u21 -->
<g id="node11" class="node">
<title>u21</title>
<ellipse fill="#7777ff" stroke="black" stroke-width="0" cx="977" cy="-363.36" rx="27" ry="18"/>
<text text-anchor="middle" x="977" y="-359.66" font-family="Times,serif" font-size="14.00">QQ</text>
</g>
<!-- u16&#45;&gt;u18 -->
<g id="edge24" class="edge">
<title>u16&#45;&gt;u18</title>
<path fill="none" stroke="black" d="M808.76,-346.13C798.53,-336.18 785.54,-322.97 775,-310.36 760.67,-293.21 746.13,-272.57 735.45,-256.69"/>
<polygon fill="black" stroke="black" points="738.09,-254.35 729.64,-247.95 732.26,-258.22 738.09,-254.35"/>
</g>
<!-- u10 -->
<g id="node13" class="node">
<title>u10</title>
<ellipse fill="#ffbbbb" stroke="black" stroke-width="0" cx="621" cy="-363.36" rx="67.69" ry="18"/>
<text text-anchor="middle" x="621" y="-359.66" font-family="Times,serif" font-size="14.00">MegaParsec</text>
</g>
<!-- u10&#45;&gt;u4 -->
<g id="edge25" class="edge">
<title>u10&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M591.45,-347.12C576.78,-338.2 559.92,-325.68 549,-310.36 520.44,-270.28 549.21,-241.56 517,-204.36 489.55,-172.66 444.67,-154.35 411.14,-144.47"/>
<polygon fill="black" stroke="black" points="411.7,-141 401.13,-141.67 409.81,-147.74 411.7,-141"/>
</g>
<!-- u8 -->
<g id="node15" class="node">
<title>u8</title>
<ellipse fill="#ff7777" stroke="black" stroke-width="2" cx="68" cy="-230.36" rx="36" ry="18"/>
<text text-anchor="middle" x="68" y="-226.66" font-family="Times,serif" font-size="14.00">JSON</text>
</g>
<!-- u8&#45;&gt;u10 -->
<g id="edge35" class="edge">
<title>u8&#45;&gt;u10</title>
<path fill="none" stroke="black" d="M72.64,-248.48C78.64,-267.08 91.05,-296.05 113,-310.36 148.38,-333.41 412.5,-350.95 545.27,-358.42"/>
<polygon fill="black" stroke="black" points="545.2,-361.92 555.38,-358.98 545.59,-354.93 545.2,-361.92"/>
</g>
<!-- u9 -->
<g id="node17" class="node">
<title>u9</title>
<ellipse fill="#77ffff" stroke="black" stroke-width="0" cx="68" cy="-133.36" rx="33.29" ry="18"/>
<text text-anchor="middle" x="68" y="-129.66" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u8&#45;&gt;u9 -->
<g id="edge37" class="edge">
<title>u8&#45;&gt;u9</title>
<path fill="none" stroke="black" d="M68,-211.93C68,-198.01 68,-178.22 68,-162.11"/>
<polygon fill="black" stroke="black" points="71.5,-161.67 68,-151.67 64.5,-161.67 71.5,-161.67"/>
</g>
<!-- u5 -->
<g id="node19" class="node">
<title>u5</title>
<ellipse fill="#ff7777" stroke="black" stroke-width="0" cx="274" cy="-133.36" rx="36.29" ry="18"/>
<text text-anchor="middle" x="274" y="-129.66" font-family="Times,serif" font-size="14.00">Stack</text>
</g>
<!-- u8&#45;&gt;u5 -->
<g id="edge36" class="edge">
<title>u8&#45;&gt;u5</title>
<path fill="none" stroke="black" d="M89.29,-215.65C96.57,-211.48 104.92,-207.25 113,-204.36 164.47,-185.95 186.78,-209.89 234,-182.36 243.56,-176.78 251.85,-168.03 258.37,-159.52"/>
<polygon fill="black" stroke="black" points="261.33,-161.39 264.27,-151.21 255.63,-157.33 261.33,-161.39"/>
</g>
<!-- u6 -->
<g id="node16" class="node">
<title>u6</title>
<ellipse fill="#77ffff" stroke="black" stroke-width="0" cx="172" cy="-230.36" rx="50.09" ry="18"/>
<text text-anchor="middle" x="172" y="-226.66" font-family="Times,serif" font-size="14.00">Versions</text>
</g>
<!-- u7 -->
<g id="node22" class="node">
<title>u7</title>
<ellipse fill="#ff77ff" stroke="black" stroke-width="0" cx="457" cy="-497.36" rx="30.59" ry="18"/>
<text text-anchor="middle" x="457" y="-493.66" font-family="Times,serif" font-size="14.00">Dirs</text>
</g>
<!-- u4&#45;&gt;u7 -->
<g id="edge32" class="edge">
<title>u4&#45;&gt;u7</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M374.54,-151.23C380.4,-165.18 388.15,-185.65 392,-204.36 413.44,-308.61 364.63,-345.72 407,-443.36 412.35,-455.69 421.87,-466.91 431.18,-475.82"/>
<polygon fill="black" stroke="black" points="429.08,-478.65 438.86,-482.74 433.77,-473.45 429.08,-478.65"/>
</g>
<!-- u5&#45;&gt;u6 -->
<g id="edge33" class="edge">
<title>u5&#45;&gt;u6</title>
<path fill="none" stroke="black" d="M261.88,-150.72C254.35,-160.39 244.2,-172.62 234,-182.36 224.46,-191.47 213.18,-200.47 202.87,-208.11"/>
<polygon fill="black" stroke="black" points="200.53,-205.48 194.5,-214.19 204.65,-211.15 200.53,-205.48"/>
</g>
<!-- u11 -->
<g id="node20" class="node">
<title>u11</title>
<ellipse fill="#ff7777" stroke="black" stroke-width="0" cx="343" cy="-230.36" rx="40.09" ry="18"/>
<text text-anchor="middle" x="343" y="-226.66" font-family="Times,serif" font-size="14.00">Optics</text>
</g>
<!-- u11&#45;&gt;u4 -->
<g id="edge34" class="edge">
<title>u11&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M347.29,-212.37C350.85,-198.28 355.98,-177.96 360.12,-161.59"/>
<polygon fill="black" stroke="black" points="363.61,-162.07 362.67,-151.51 356.82,-160.35 363.61,-162.07"/>
</g>
<!-- u23 -->
<g id="node21" class="node">
<title>u23</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="2" cx="539" cy="-497.36" rx="33.29" ry="18"/>
<text text-anchor="middle" x="539" y="-493.66" font-family="Times,serif" font-size="14.00">Utils</text>
</g>
<!-- u23&#45;&gt;u2 -->
<g id="edge38" class="edge">
<title>u23&#45;&gt;u2</title>
<path fill="none" stroke="black" d="M562.81,-510.07C586.22,-521.1 623.26,-537.25 657,-546.36 718.11,-562.85 735.92,-554 798,-566.36 802.75,-567.3 807.68,-568.38 812.59,-569.53"/>
<polygon fill="black" stroke="black" points="812.07,-573 822.62,-571.95 813.72,-566.2 812.07,-573"/>
</g>
<!-- u7&#45;&gt;u12 -->
<g id="edge40" class="edge">
<title>u7&#45;&gt;u12</title>
<path fill="none" stroke="black" d="M469.12,-480.58C476.19,-470.5 484.56,-456.83 489,-443.36 503.82,-398.42 475.34,-378.34 499,-337.36 509.36,-319.41 526.47,-328.2 537,-310.36 561.09,-269.52 517.96,-240.2 549,-204.36 574.26,-175.18 599.24,-201.05 633,-182.36 644.19,-176.16 654.79,-166.95 663.41,-158.26"/>
<polygon fill="black" stroke="black" points="666.1,-160.5 670.42,-150.83 661.01,-155.69 666.1,-160.5"/>
</g>
<!-- u7&#45;&gt;u14 -->
<g id="edge41" class="edge">
<title>u7&#45;&gt;u14</title>
<path fill="none" stroke="black" d="M471.16,-481C479.99,-470.86 491.13,-456.98 499,-443.36 524.34,-399.47 517.88,-382.45 541,-337.36 555.84,-308.42 576.39,-277.32 591.01,-256.34"/>
<polygon fill="black" stroke="black" points="593.98,-258.2 596.88,-248.01 588.26,-254.17 593.98,-258.2"/>
</g>
<!-- u7&#45;&gt;u13 -->
<g id="edge42" class="edge">
<title>u7&#45;&gt;u13</title>
<path fill="none" stroke="black" d="M475.28,-482.66C481.82,-478.39 489.45,-474.09 497,-471.36 583.9,-439.95 630.35,-500.44 703,-443.36 718.83,-430.92 726.59,-409.25 730.39,-391.75"/>
<polygon fill="black" stroke="black" points="733.91,-391.98 732.28,-381.51 727.02,-390.71 733.91,-391.98"/>
</g>
<!-- u7&#45;&gt;u8 -->
<g id="edge44" class="edge">
<title>u7&#45;&gt;u8</title>
<path fill="none" stroke="black" d="M430.56,-487.89C368.33,-466.83 210.54,-406.76 113,-310.36 97.8,-295.33 86.09,-274.1 78.43,-257.43"/>
<polygon fill="black" stroke="black" points="81.61,-255.97 74.39,-248.22 75.2,-258.78 81.61,-255.97"/>
</g>
<!-- u7&#45;&gt;u11 -->
<g id="edge43" class="edge">
<title>u7&#45;&gt;u11</title>
<path fill="none" stroke="black" d="M437.17,-483.6C423.89,-474.05 407.07,-459.84 397,-443.36 360.76,-384.02 348.73,-301.14 344.83,-258.73"/>
<polygon fill="black" stroke="black" points="348.3,-258.29 343.98,-248.61 341.33,-258.87 348.3,-258.29"/>
</g>
<!-- u7&#45;&gt;u3 -->
<g id="edge39" class="edge">
<title>u7&#45;&gt;u3</title>
<path fill="none" stroke="black" d="M457.33,-478.97C458.18,-433.94 460.45,-313.25 461.48,-258.74"/>
<polygon fill="black" stroke="black" points="464.99,-258.53 461.68,-248.46 457.99,-258.4 464.99,-258.53"/>
</g>
<!-- u0 -->
<g id="node23" class="node">
<title>u0</title>
<ellipse fill="#bbffbb" stroke="black" stroke-width="2" cx="460" cy="-672.36" rx="44.39" ry="18"/>
<text text-anchor="middle" x="460" y="-668.66" font-family="Times,serif" font-size="14.00">GHCup</text>
</g>
<!-- u1 -->
<g id="node24" class="node">
<title>u1</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="286" cy="-584.36" rx="37.09" ry="18"/>
<text text-anchor="middle" x="286" y="-580.66" font-family="Times,serif" font-size="14.00">Cabal</text>
</g>
<!-- u0&#45;&gt;u1 -->
<g id="edge3" class="edge">
<title>u0&#45;&gt;u1</title>
<path fill="none" stroke="black" d="M419.44,-664.9C393.11,-659.4 358.82,-649.71 332,-633.36 321.74,-627.1 312.22,-617.99 304.53,-609.39"/>
<polygon fill="black" stroke="black" points="307.16,-607.08 298.01,-601.72 301.82,-611.61 307.16,-607.08"/>
</g>
<!-- u24 -->
<g id="node28" class="node">
<title>u24</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="539" cy="-584.36" rx="32.49" ry="18"/>
<text text-anchor="middle" x="539" y="-580.66" font-family="Times,serif" font-size="14.00">GHC</text>
</g>
<!-- u0&#45;&gt;u24 -->
<g id="edge4" class="edge">
<title>u0&#45;&gt;u24</title>
<path fill="none" stroke="black" d="M476.56,-655.36C483.33,-648.68 491.16,-640.76 498,-633.36 505.1,-625.67 512.61,-617.05 519.23,-609.25"/>
<polygon fill="black" stroke="black" points="522.25,-611.1 526.01,-601.19 516.89,-606.59 522.25,-611.1"/>
</g>
<!-- u25 -->
<g id="node29" class="node">
<title>u25</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="620" cy="-584.36" rx="30.59" ry="18"/>
<text text-anchor="middle" x="620" y="-580.66" font-family="Times,serif" font-size="14.00">HLS</text>
</g>
<!-- u0&#45;&gt;u25 -->
<g id="edge5" class="edge">
<title>u0&#45;&gt;u25</title>
<path fill="none" stroke="black" d="M500.05,-664.63C524.66,-659.11 555.96,-649.5 580,-633.36 589.19,-627.19 597.4,-618.32 603.96,-609.87"/>
<polygon fill="black" stroke="black" points="606.87,-611.83 609.95,-601.69 601.22,-607.7 606.87,-611.83"/>
</g>
<!-- u26 -->
<g id="node30" class="node">
<title>u26</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="377" cy="-584.36" rx="36.29" ry="18"/>
<text text-anchor="middle" x="377" y="-580.66" font-family="Times,serif" font-size="14.00">Stack</text>
</g>
<!-- u0&#45;&gt;u26 -->
<g id="edge6" class="edge">
<title>u0&#45;&gt;u26</title>
<path fill="none" stroke="black" d="M443.98,-655.57C437.16,-648.78 429.14,-640.73 422,-633.36 414.25,-625.36 405.88,-616.49 398.48,-608.57"/>
<polygon fill="black" stroke="black" points="400.84,-605.97 391.47,-601.04 395.72,-610.74 400.84,-605.97"/>
</g>
<!-- u27 -->
<g id="node31" class="node">
<title>u27</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="460" cy="-584.36" rx="28.7" ry="18"/>
<text text-anchor="middle" x="460" y="-580.66" font-family="Times,serif" font-size="14.00">List</text>
</g>
<!-- u0&#45;&gt;u27 -->
<g id="edge7" class="edge">
<title>u0&#45;&gt;u27</title>
<path fill="none" stroke="black" d="M460,-653.95C460,-642.1 460,-626.17 460,-612.65"/>
<polygon fill="black" stroke="black" points="463.5,-612.44 460,-602.44 456.5,-612.44 463.5,-612.44"/>
</g>
<!-- u1&#45;&gt;u23 -->
<g id="edge8" class="edge">
<title>u1&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M313.41,-572.04C319.45,-569.88 325.88,-567.84 332,-566.36 403.8,-548.99 431.69,-580.88 497,-546.36 507.24,-540.95 516.12,-531.94 523.05,-523.19"/>
<polygon fill="black" stroke="black" points="525.96,-525.13 529.07,-515 520.32,-520.98 525.96,-525.13"/>
</g>
<!-- u3&#45;&gt;u4 -->
<g id="edge9" class="edge">
<title>u3&#45;&gt;u4</title>
<path fill="none" stroke="black" d="M446.31,-213.67C431.05,-198.41 407.67,-175.03 390.25,-157.6"/>
<polygon fill="black" stroke="black" points="392.26,-154.66 382.71,-150.07 387.31,-159.61 392.26,-154.66"/>
</g>
<!-- u15&#45;&gt;u20 -->
<g id="edge11" class="edge">
<title>u15&#45;&gt;u20</title>
<path fill="none" stroke="black" d="M1113.9,-479.89C1122.62,-470.18 1132.39,-457.13 1137,-443.36 1151.97,-398.69 1160.38,-378.26 1137,-337.36 1108.78,-287.99 1047.61,-259.33 1004.44,-244.54"/>
<polygon fill="black" stroke="black" points="1005.29,-241.13 994.7,-241.33 1003.1,-247.78 1005.29,-241.13"/>
</g>
<!-- u15&#45;&gt;u21 -->
<g id="edge12" class="edge">
<title>u15&#45;&gt;u21</title>
<path fill="none" stroke="black" d="M1064.11,-483.23C1045.49,-474.36 1023.01,-461.04 1008,-443.36 995.41,-428.52 987.56,-407.97 982.91,-391.54"/>
<polygon fill="black" stroke="black" points="986.19,-390.25 980.3,-381.45 979.41,-392.01 986.19,-390.25"/>
</g>
<!-- u15&#45;&gt;u16 -->
<g id="edge10" class="edge">
<title>u15&#45;&gt;u16</title>
<path fill="none" stroke="black" d="M1065.91,-482.84C1056.39,-478.91 1045.84,-474.77 1036,-471.36 993.2,-456.52 978.86,-462.91 938,-443.36 906.22,-428.15 873.73,-404.1 851.98,-386.53"/>
<polygon fill="black" stroke="black" points="854.15,-383.78 844.2,-380.14 849.71,-389.19 854.15,-383.78"/>
</g>
<!-- u22&#45;&gt;u3 -->
<g id="edge13" class="edge">
<title>u22&#45;&gt;u3</title>
<path fill="none" stroke="black" d="M958.36,-481.89C950.55,-477.78 941.65,-473.76 933,-471.36 848.87,-447.93 610.91,-495.7 541,-443.36 481.77,-399.01 466.93,-305.12 463.23,-258.62"/>
<polygon fill="black" stroke="black" points="466.7,-258.14 462.53,-248.4 459.72,-258.62 466.7,-258.14"/>
</g>
<!-- u24&#45;&gt;u23 -->
<g id="edge14" class="edge">
<title>u24&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M539,-566.16C539,-554.52 539,-538.9 539,-525.59"/>
<polygon fill="black" stroke="black" points="542.5,-525.53 539,-515.53 535.5,-525.53 542.5,-525.53"/>
</g>
<!-- u25&#45;&gt;u23 -->
<g id="edge15" class="edge">
<title>u25&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M605.52,-568.16C593.04,-555.07 574.85,-535.98 560.64,-521.07"/>
<polygon fill="black" stroke="black" points="563.06,-518.53 553.63,-513.71 557.99,-523.36 563.06,-518.53"/>
</g>
<!-- u26&#45;&gt;u23 -->
<g id="edge16" class="edge">
<title>u26&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M404.45,-572.49C410.21,-570.35 416.28,-568.2 422,-566.36 454.84,-555.8 467.7,-564.57 497,-546.36 506.69,-540.33 515.39,-531.38 522.32,-522.83"/>
<polygon fill="black" stroke="black" points="525.11,-524.94 528.4,-514.87 519.55,-520.69 525.11,-524.94"/>
</g>
<!-- u27&#45;&gt;u23 -->
<g id="edge17" class="edge">
<title>u27&#45;&gt;u23</title>
<path fill="none" stroke="black" d="M474.99,-568.81C481.81,-562.08 489.92,-553.92 497,-546.36 504.22,-538.64 511.9,-530 518.69,-522.2"/>
<polygon fill="black" stroke="black" points="521.75,-524.01 525.64,-514.16 516.45,-519.43 521.75,-524.01"/>
</g>
<!-- u29 -->
<g id="node32" class="node">
<title>u29</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="1078" cy="-363.36" rx="50.09" ry="18"/>
<text text-anchor="middle" x="1078" y="-359.66" font-family="Times,serif" font-size="14.00">Prompts</text>
</g>
<!-- u29&#45;&gt;u18 -->
<g id="edge18" class="edge">
<title>u29&#45;&gt;u18</title>
<path fill="none" stroke="black" d="M1048.59,-348.6C1038.46,-344.37 1026.91,-340.11 1016,-337.36 911.5,-310.96 867.84,-365.11 775,-310.36 754.6,-298.32 739.69,-275.6 730.41,-257.61"/>
<polygon fill="black" stroke="black" points="733.35,-255.66 725.83,-248.19 727.05,-258.72 733.35,-255.66"/>
</g>
<!-- u30 -->
<g id="node33" class="node">
<title>u30</title>
<ellipse fill="#ffffbb" stroke="black" stroke-width="0" cx="1015" cy="-584.36" rx="76.09" ry="18"/>
<text text-anchor="middle" x="1015" y="-580.66" font-family="Times,serif" font-size="14.00">Requirements</text>
</g>
<!-- u30&#45;&gt;u22 -->
<g id="edge19" class="edge">
<title>u30&#45;&gt;u22</title>
<path fill="none" stroke="black" d="M1008.32,-566.16C1003.73,-554.33 997.54,-538.39 992.32,-524.93"/>
<polygon fill="black" stroke="black" points="995.44,-523.3 988.56,-515.24 988.91,-525.83 995.44,-523.3"/>
</g>
<!-- u33 -->
<g id="node34" class="node">
<title>u33</title>
<ellipse fill="#bbffbb" stroke="black" stroke-width="0" cx="1198" cy="-672.36" rx="34.39" ry="18"/>
<text text-anchor="middle" x="1198" y="-668.66" font-family="Times,serif" font-size="14.00">Main</text>
</g>
<!-- u33&#45;&gt;u24 -->
<g id="edge1" class="edge">
<title>u33&#45;&gt;u24</title>
<path fill="none" stroke="black" d="M1174.36,-659.12C1169.71,-657.19 1164.79,-655.47 1160,-654.36 1097.19,-639.75 638.07,-661.41 580,-633.36 569.53,-628.3 560.7,-619.19 553.94,-610.25"/>
<polygon fill="black" stroke="black" points="556.7,-608.09 548.12,-601.88 550.95,-612.09 556.7,-608.09"/>
</g>
<!-- u33&#45;&gt;u25 -->
<g id="edge2" class="edge">
<title>u33&#45;&gt;u25</title>
<path fill="none" stroke="black" d="M1174.36,-659.14C1169.71,-657.21 1164.78,-655.48 1160,-654.36 1105.55,-641.54 706.67,-659.08 657,-633.36 647.19,-628.28 639.2,-619.29 633.19,-610.45"/>
<polygon fill="black" stroke="black" points="636.09,-608.48 627.85,-601.82 630.14,-612.16 636.09,-608.48"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

7
docs/os-freebsd.svg Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
<g><path d="M81.5,647.7C11,409.2,148.6,158.9,388.6,88.9c106.5-31.1,215.5-21.4,309.8,19.8c-4.9,6.9-9.5,14-13.7,21c-46.1-10.7-81.4,3.8-90.2,43.3c-13.9,62.1,42.9,162.8,126.6,224.7c83.7,61.9,162.9,61.7,176.8-0.4c3.5-15.9,2.5-34.4-2.5-54.1c9.7-5.8,19.2-12.3,28.6-19.3c10.9,22.2,20,45.6,27.3,70.1c70.5,238.4-67.1,488.8-307.1,558.8C403.9,1022.8,151.9,886.1,81.5,647.7L81.5,647.7z M667.1,204.7c0.4-0.4,0.7-0.7,1-1.1C776.9,92.3,912.3,26.4,970.4,56.4c58.1,30.1-25.5,176.7-91.7,256.3c-20.1,20.6-41.2,39.7-62.5,56.8C742.2,343.2,686.1,282.8,667.1,204.7L667.1,204.7z M11,108.5C0.7,28.8,68.9,4.9,163.2,55.2c22.4,11.9,44.3,27,64.7,44.1c-56.2,38.6-104.5,90.4-139.5,154C46.4,206.7,16.9,153.5,11,108.5L11,108.5z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

69
docs/os-linux.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

143
docs/os-osx.svg Normal file
View File

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
width="800"
height="950"
id="svg2">
<defs
id="defs4">
<linearGradient
id="linearGradient3784">
<stop
id="stop3786"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop3788"
style="stop-color:#888888;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient3776">
<stop
id="stop3778"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop3780"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient3754">
<stop
id="stop3756"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop3758"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient3734">
<stop
id="stop3736"
style="stop-color:#6c6d6f;stop-opacity:1"
offset="0" />
<stop
id="stop3738"
style="stop-color:#010101;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="581.96649"
y1="409.16061"
x2="544.40381"
y2="311.21347"
id="linearGradient3760"
xlink:href="#linearGradient3754"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="591.31964"
y1="593.75946"
x2="587.03571"
y2="434.31064"
id="linearGradient3764"
xlink:href="#linearGradient3734"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="591.31964"
y1="593.75946"
x2="587.03571"
y2="434.31064"
id="linearGradient3773"
xlink:href="#linearGradient3734"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-2.7999999e-6,-5.0000001e-6)" />
<linearGradient
x1="592.88464"
y1="409.21036"
x2="572.06653"
y2="317.52728"
id="linearGradient3782"
xlink:href="#linearGradient3776"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(4.1074798,0,0,4.1074798,-2012.1445,-1474.6712)" />
<linearGradient
x1="621.8504"
y1="527.79108"
x2="575.15466"
y2="358.30902"
id="linearGradient3790"
xlink:href="#linearGradient3784"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="591.31964"
y1="593.75946"
x2="587.03571"
y2="434.31064"
id="linearGradient3796"
xlink:href="#linearGradient3734"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="591.31964"
y1="593.75946"
x2="587.03571"
y2="434.31064"
id="linearGradient3813"
xlink:href="#linearGradient3734"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(4.1074798,0,0,4.1074798,-2012.1445,-1474.6712)" />
<linearGradient
x1="621.8504"
y1="527.79108"
x2="575.15466"
y2="358.30902"
id="linearGradient3815"
xlink:href="#linearGradient3784"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(4.1074798,0,0,4.1074798,-2012.1445,-1474.6712)" />
</defs>
<path
d="M -1763.2143,1058.9693 L -1763.2143,950.04075 L -1724.2857,1040.5765 L -1685.3571,950.04075 L -1685.3571,1058.9693"
id="path3199"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="M 9.2490229,7.8722656 C 9.0747426,10.220019 9.5551534,12.587324 10.789328,14.675279 L 283.03823,474.32796 L 15.153526,926.66418 C 13.0537,930.26743 13.090092,934.72063 15.153526,938.34483 C 17.216918,941.9691 20.995183,944.21594 25.165508,944.24933 L 230.41114,944.24933 C 234.53312,944.22267 238.33677,942.02829 240.42312,938.47319 L 399.07452,670.58848 L 557.72593,938.47319 C 559.81228,942.02829 563.61593,944.22267 567.73791,944.24933 L 773.1119,944.24933 C 777.28223,944.21594 781.06049,941.96906 783.12389,938.34483 C 785.18744,934.72067 785.22371,930.26743 783.12389,926.66418 L 515.23918,474.32796 L 787.35972,14.675279 C 788.58462,12.5734 788.96226,10.218047 788.77167,7.8722656 L 559.13787,7.8722656 L 399.07452,278.19578 L 239.01118,7.8722656 L 9.2490229,7.8722656 z"
id="path3762"
style="fill:url(#linearGradient3815);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
<path
d="M 20.80131,8.7707768 L 296.51589,474.32796 L 25.165508,932.56868 L 230.41114,932.56868 L 399.07452,647.74063 L 567.73791,932.56868 L 773.1119,932.56868 L 501.76152,474.32796 L 777.34774,8.7707768 L 572.10211,8.7707768 L 399.07452,301.04364 L 226.04694,8.7707768 L 20.80131,8.7707768 z"
id="path3705"
style="fill:url(#linearGradient3813);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="M 20.80131,8.7707768 L 201.9155,314.64967 C 251.61658,285.27827 303.41256,257.12462 357.61466,230.95977 L 226.04694,8.7707768 L 20.80131,8.7707768 z M 572.10211,8.7707768 L 470.05691,181.15657 C 548.90117,149.37671 632.73447,122.22713 722.53856,101.31743 L 777.34774,8.7707768 L 572.10211,8.7707768 z"
id="path3771"
style="opacity:0.47619048;fill:url(#linearGradient3782);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

18
docs/os-windows.svg Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="766"
height="768"
viewBox="-2.61977004 -2.61977004 92.56520808 92.83416708"
id="svg8375">
<defs
id="defs8377" />
<path
d="M 0,12.40183 35.68737,7.5416 35.70297,41.96435 0.03321,42.16748 z m 35.67037,33.52906 0.0277,34.45332 -35.66989,-4.9041 -0.002,-29.77972 z M 39.99644,6.90595 87.31462,0 l 0,41.527 -47.31818,0.37565 z M 87.32567,46.25471 87.31457,87.59463 39.9964,80.91625 39.9301,46.17767 z"
id="path13" />
</svg>
<!-- version: 20110311, original size: 87.325668 87.594627, border: 3% -->

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

4
docs/overrides/main.html Normal file
View File

@ -0,0 +1,4 @@
{% extends "base.html" %}
<!-- Get rid of the next/prev buttons -->
{% block next_prev %}
{% endblock %}

349
docs/steps.md Normal file
View File

@ -0,0 +1,349 @@
# First steps
In this guide we'll take a look at a few core tools that are installed
with the Haskell toolchain, namely, `ghc`, `runghc` and `ghci`.
These tools can be used to compile, interpret or explore Haskell programs.
First, let's start by opening your system's command line interface
and running `ghc --version` to make sure we have successfully
installed a Haskell toolchain:
```
➜ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.10.7
```
If this fails, consult [the Getting started page](install.md) for information on
how to install Haskell on your computer.
This guide is partly based on [Gil Mizrahi's blog](https://gilmi.me/blog/post/2021/08/14/hs-core-tools).
## Compiling programs with ghc
Running `ghc` invokes the Glasgow Haskell Compiler (GHC), and can be used to
compile Haskell modules and programs into native executables and libraries.
Create a new Haskell source file named `hello.hs`,
and write the following code in it:
```hs
main = putStrLn "Hello, Haskell!"
```
Now, we can compile the program by invoking `ghc` with the file name:
```sh
➜ ghc hello.hs
[1 of 1] Compiling Main ( hello.hs, hello.o )
Linking hello ...
```
For more in-depth information about the files `ghc` produces,
follow the [GHC user guide](https://downloads.haskell.org/ghc/latest/docs/html/users_guide/using.html#getting-started-compiling-programs) guide.
Now we run our program:
```sh
➜ ./hello
Hello, Haskell!
```
Alternatively, we can skip the compilation phase by using the command `runghc`:
```sh
➜ runghc hello.hs
Hello, Haskell!
```
`runghc` interprets the source file instead of compiling it and does not
create build artifacts. This makes it very useful when developing programs
and can help accelerate the feedback loop. More information about `runghc`
can be found in the
[GHC user guide](https://downloads.haskell.org/ghc/latest/docs/html/users_guide/runghc.html).
### Turning on warnings
The `-Wall` flag will enable GHC to emit warnings about our code.
```sh
➜ ghc -Wall hello.hs -fforce-recomp
[1 of 1] Compiling Main ( hello.hs, hello.o )
hello.hs:1:1: warning: [-Wmissing-signatures]
Top-level binding with no type signature: main :: IO ()
|
1 | main = putStrLn "Hello, Haskell!"
| ^^^^
Linking hello ...
```
While Haskell can infer
the types of most expressions, it is recommended that top-level definitions
are annotated with their types.
Now our `hello.hs` source file should looks like this:
```hs
main :: IO ()
main = putStrLn "Hello, world!"
```
And now GHC will compile `hello.hs` without warnings.
## An interactive environment
GHC provides an interactive environment in a form of a
Read-Evaluate-Print Loop (REPL) called GHCi.
To enter the environment run the program `ghci`.
```sh
➜ ghci
GHCi, version 9.0.2: https://www.haskell.org/ghc/ :? for help
ghci>
```
It provides an interactive prompt where Haskell expressions can be written and
evaluated.
For example:
```sh
ghci> 1 + 1
2
ghci> putStrLn "Hello, world!"
Hello, world!
```
We can define new names:
```sh
ghci> double x = x + x
ghci> double 2
4
```
We can write multi-line code by surrounding it with `:{` and `:}`:
```hs
ghci> :{
| map f list =
| case list of
| [] -> []
| x : xs -> f x : map f xs
| :}
ghci> map (+1) [1, 2, 3]
[2,3,4]
```
We can import Haskell source files using the `:load` command (`:l` for short):
```sh
ghci> :load hello.hs
[1 of 1] Compiling Main ( hello.hs, interpreted )
Ok, one module loaded.
ghci> main
Hello, Haskell!
```
As well as import library modules:
```sh
ghci> import Data.Bits
ghci> shiftL 32 1
64
ghci> clearBit 33 0
32
```
We can even ask what the type of an expression is using the `:type` command
(`:t` for short):
```sh
λ> :type putStrLn
putStrLn :: String -> IO ()
```
To exit `ghci`, use the `:quit` command (or `:q` for short)
```sh
ghci> :quit
Leaving GHCi.
```
A more thorough introduction to GHCi can be found in the
[GHC user guide](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html).
### Using external packages in ghci
By default, GHCi can only load and use packages that are
[included with the GHC installation](https://downloads.haskell.org/ghc/9.4.2/docs/users_guide/9.4.2-notes.html#included-libraries).
However, users of the [cabal-install](https://www.haskell.org/cabal) and
[stack](http://haskellstack.org) build tools can download and load external packages
very easily using the following commands:
cabal-install:
```sh
cabal repl --build-depends async,say
```
Stack:
```sh
stack exec --package async --package say -- ghci
```
And the modules of the relevant packages will be available for import:
```sh
GHCi, version 9.0.1: https://www.haskell.org/ghc/ :? for help
ghci> import Control.Concurrent.Async
ghci> import Say
ghci> concurrently_ (sayString "Hello") (sayString "World")
Hello
World
```
Stack users can also use this feature with `runghc` and `ghc` by replacing
`ghci` in the command above, and cabal-install users can generate an
environment file that will make `async` and `say` visible for GHC tools
in the current directory using this command:
```sh
cabal install --lib async say --package-env .
```
Many more packages are waiting for you on [Hackage](https://hackage.haskell.org).
## Creating a proper package with modules
The previous methods to compile Haskell code are for quick experiments and small
programs. Usually in Haskell, we create cabal projects, where build tools such as
`cabal-install` or `stack` will install necessary dependencies and compile modules
in correct order. For simplicity's sake, this section will only use `cabal-install`.
To get started, run:
```sh
mkdir haskell-project
cd haskell-project
cabal init --interactive
```
If you let it generate a simple project with sensible defaults, then you should have these files:
* `src/MyLib.hs`: the library module of your project
* `app/Main.hs`: the entry point of your project
* `haskell-project.cabal`: the "cabal" file, describing your project, its dependencies and how it's built
To build the project, run:
```sh
cabal build
```
To run the main executable, run:
```sh
➜ cabal run
Hello, Haskell!
someFunc
```
### Adding dependencies
Now let's add a dependency and adjust our library module. Open `haskell-project.cabal`
and find the library section:
```
library
exposed-modules: MyLib
-- Modules included in this library but not exported.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
build-depends: base ^>=4.14.3.0
hs-source-dirs: src
default-language: Haskell2010
```
The interesting parts here are `exposed-modules` and `build-depends`.
To add a dependency, it should look like this:
```
build-depends: base ^>=4.14.3.0
, directory
```
Now open `src/MyLib.hs` and change it to:
```hs
module MyLib (someFunc) where
import System.Directory
someFunc :: IO ()
someFunc = do
contents <- listDirectory "src"
putStrLn (show contents)
```
### Adding modules
To add a module to your package, adjust `exposed-modules`, like so
```
exposed-modules: MyLib
OtherLib
```
then create `src/OtherLib.hs` with the following contents:
```hs
module OtherLib where
otherFunc :: String -> Int
otherFunc str = length str
```
To use this function interactively, we can run:
```sh
➜ cabal repl
ghci> import OtherLib
ghci> otherFunc "Hello Haskell"
13
```
For further information about how to manage Haskell projects
see the [Cabal user guide](https://cabal.readthedocs.io/en/stable/getting-started.html).
# Where to go from here
<div class="text-center main-buttons">
<a href="https://hackage.haskell.org/" class="btn btn-primary" role="button">Discover Haskell packages</a>
<a href="https://hackage.haskell.org/package/base" class="btn btn-primary" role="button">The standard library</a>
<a href="https://haskell-language-server.readthedocs.io/en/stable/installation.html" class="btn btn-primary" role="button">Editor setup with HLS</a>
<a href="https://play.haskell.org/" class="btn btn-primary" role="button">Online playground</a>
</div>
## How to learn Haskell proper
To learn Haskell, try any of those:
- A beginner friendly [4-lectures course](https://github.com/haskell-beginners-2022/course-plan) with exercises (by [Dmitrii Kovanikov](https://kodimensional.dev/))
- An in-depth university [CIS 194 Haskell course](https://www.cis.upenn.edu/~cis194/spring13/) including exercises (by [Brent Yorgey](https://byorgey.wordpress.com/))
## Projects to contribute to
* [https://github.com/haskell/haskell-language-server](https://github.com/haskell/haskell-language-server)
* [https://github.com/haskell/cabal](https://github.com/haskell/cabal)
* [https://github.com/commercialhaskell/stack](https://github.com/commercialhaskell/stack)
* [https://github.com/haskell/ghcup-hs](https://github.com/haskell/ghcup-hs)
* [https://github.com/jgm/pandoc](https://github.com/jgm/pandoc)
* [https://github.com/simonmichael/hledger](https://github.com/simonmichael/hledger)
* [https://github.com/koalaman/shellcheck](https://github.com/koalaman/shellcheck)

Some files were not shown because too many files have changed in this diff Show More