Compare commits

..

420 Commits

Author SHA1 Message Date
f1f8eb8d7c Test all sigs, not just the main yaml 2023-11-12 15:52:28 +08:00
772e54b936 Re-sign 2023-11-12 15:47:23 +08:00
10ae84aa7b Test debian:unstable in bindist tests 2023-11-12 15:46:09 +08:00
0ae75a25ef Use deb11 for unknown debian version
See https://github.com/haskell/ghcup-metadata/pull/150
2023-11-12 15:44:54 +08:00
16fb138bbe Update toolRequirements 2023-11-12 15:43:46 +08:00
wz1000
6786ac32c0 Merge pull request #148 from haskell/wip/9.4.8-release
9.4.8 release
2023-11-10 07:49:17 -08:00
Zubin Duggal
9d6836aa76 Release 9.4.8 2023-11-10 20:33:54 +05:30
0239166c31 Re-sign 2023-11-10 21:39:27 +08:00
025f276131 Update 0.0.8 yamls 2023-11-10 21:39:04 +08:00
cae42448a0 Add ghcup 0.1.20.0 2023-11-10 21:38:49 +08:00
56d759176e Re-sign 2023-11-06 22:18:42 +08:00
df143e226f Backport fix to vanilla 2023-11-06 22:18:27 +08:00
e914259ed7 Merge remote-tracking branch 'origin/pr/144' into develop 2023-11-06 22:17:14 +08:00
Arjun Kathuria
48cae51c31 fix incorrect link to 32-bit(A_32) Linux_Debian cabal-install-3.10.2.0
* The link for 32-bit (A_32) Linux_Debian cabal-install under
  version 3.10.2.0 points to the 64-bit (x64-64) version.

* The hash for this however was found to be correct here, so
  it was left unchanged.

* Fixes the link to point to the 32-bit (i386) version.
2023-11-06 16:42:41 +05:30
173d03ef56 Add cabal-install 3.10.2.0 2023-11-05 11:50:38 +01:00
c806339f69 Add missing sigs 2023-10-21 19:42:28 +08:00
68633d49a5 Update sigs 2023-10-21 19:42:15 +08:00
7625d4bf83 Update system requirements for Ubuntu 23 2023-10-21 19:41:58 +08:00
2efadd4588 Re-sign 2023-10-21 19:29:53 +08:00
4917c671bf Update system requirements 2023-10-21 19:28:50 +08:00
Ben Gamari
dd4f6ff001 ghcup-vanilla: Add GHC 9.8.1 2023-10-11 13:24:22 -04:00
wz1000
70eccfe8d6 Merge pull request #141 from haskell/wip/hls-2.4.0.0
HLS 2.4.0.0
2023-10-10 10:52:31 -07:00
Zubin Duggal
0fde7e8686 Resign 2023-10-10 22:44:05 +05:30
Zubin Duggal
c1764cadab Update metadata for HLS 2.4.0.0 2023-10-10 22:38:35 +05:30
Ben Gamari
1a5a7f3db4 Merge pull request #140 from bgamari/wip/ghc-9.8
Add GHC 9.8.1
2023-10-09 18:01:41 -04:00
Ben Gamari
43f4782658 Add GHC 9.8.1 2023-10-09 17:43:57 -04:00
374a68e074 Merge branch 'issue-99' into develop 2023-10-01 17:47:51 +08:00
493c2c81f4 Re-sign 2023-10-01 16:44:02 +08:00
041f8b1421 Bump recommended GHC to 9.4.7 2023-10-01 16:43:47 +08:00
b62f7ffa3b Re-sign 2023-10-01 16:41:08 +08:00
6ee7342fe3 Merge remote-tracking branch 'origin/pr/119' into develop 2023-10-01 16:40:09 +08:00
1d43217082 Re-sign 2023-10-01 16:17:54 +08:00
4ffadfdda4 Fix ghcup-prereleases yaml issues 2023-10-01 16:17:38 +08:00
3e2ab12988 Merge branch 'issue-135' into develop 2023-10-01 16:17:18 +08:00
68731892cc Validate all tags in CI, wrt #135 2023-10-01 15:55:02 +08:00
b2843da016 Re-sign 2023-10-01 14:51:03 +08:00
53ef921fe1 Add stack to vanilla channel as well 2023-10-01 14:50:44 +08:00
20916def87 Merge remote-tracking branch 'origin/pr/132' into develop 2023-10-01 14:47:27 +08:00
335bc378aa Document tags wrt #136 2023-10-01 14:41:34 +08:00
Ben Gamari
1d366edea6 Merge pull request #133 from haskell/wip/ghc-9.8
Update tags of 9.8.1-rc1
2023-09-30 10:49:43 -04:00
Ben Gamari
971e013861 Update tags of 9.8.1-rc1
I had overlooked this when initially adding the release.
2023-09-30 10:30:07 -04:00
Mike Pilgrem
397fd411af Fix #131 Add Stack 2.13.1 ('official' bindists only) 2023-09-30 12:02:03 +01:00
Ben Gamari
124f62c0a2 Merge pull request #130 from bgamari/wip/ghc-9.8
Add ghc-9.8.1-rc1
2023-09-29 17:52:38 -04:00
Ben Gamari
e93e21835e Add ghc-9.8.1-rc1 2023-09-29 17:32:06 -04:00
2d5701d480 Improve README 2023-09-30 00:34:13 +08:00
d9fe82364c Move signatures to separate file 2023-09-30 00:05:30 +08:00
Hécate Moonlight
ac43fb74c8 Add Hécate's PGP key 2023-09-30 00:00:14 +08:00
wz1000
5013094656 Merge pull request #129 from haskell/wip/hls-2.3.0.0
Metadata for HLS 2.3.0.0
2023-09-29 16:49:34 +05:30
Zubin Duggal
fe6ad60f1d Resign 2023-09-29 16:46:44 +05:30
Zubin Duggal
5e077005e6 Add freebsd bindists 2023-09-29 16:46:22 +05:30
Zubin Duggal
ad3f8f9507 Resign 2023-09-29 14:52:31 +05:30
Zubin Duggal
97553d92cc Add metadata for HLS 2.3.0.0 2023-09-29 14:52:11 +05:30
Zubin Duggal
4f4e82f3a7 Resign 2023-09-26 20:52:39 +05:30
wz1000
9f5f9d0d40 Merge pull request #126 from haskell/stack-2.13.0.1
Add Stack 2.13.0.1 pre-release to GHCup metadata
2023-09-26 20:52:02 +05:30
Mike Pilgrem
0e394642f1 Add 'official' Stack 2.13.0.1 for macOS/AArch64 2023-09-26 16:12:26 +01:00
Mike Pilgrem
977147b65a Add Stack 2.13.0.1 pre-release to GHCup metadata 2023-09-26 16:12:26 +01:00
Zubin Duggal
67de4cb8db Resign 2023-09-26 00:36:53 +05:30
wz1000
9946e32869 Merge pull request #124 from haskell/b/ghc-9.6.3
Add GHC-9.6.3
2023-09-26 00:34:32 +05:30
Bryan Richter
7aa3b26848 Add GHC-9.6.3 2023-09-25 21:54:05 +03:00
Ben Gamari
c8cfd2717f Merge pull request #122 from bgamari/wip/fix-keys
test-sigs: Fix key validation
2023-09-22 10:54:01 -04:00
Ben Gamari
62c55a1893 test-sigs: Fix key validation
My personal key was added here instead of the ben@well-typed.com key
which I use for signing GHC-related things.
2023-09-22 10:43:02 -04:00
Ben Gamari
0972ffb4c9 Merge pull request #121 from bgamari/wip/ghc-9.8
Add ghc-9.8.1-alpha4
2023-09-22 10:18:46 -04:00
Ben Gamari
73a6c8c0cf Add ghc-9.8.1-alpha4 2023-09-22 09:52:28 -04:00
Mike Pilgrem
cca4a2386d Fix #118 Recommend the latest version of Stack 2023-09-09 17:09:32 +01:00
44cad536cf Re-sign 2023-09-04 15:09:40 +08:00
392c3879da Merge remote-tracking branch 'origin/pr/115' into develop 2023-09-04 14:58:49 +08:00
Arjun Kathuria
0702ea6eac fix(docs): Adds new docs generation code that takes OS-versions into account
* Adds new docs generation code that takes OS/distro version into
  account when generating dependency list for that platform.

* Moves away from old hard-coded approach to a new approach
  that reads Distro/OS version from the yaml file and
  generates the dependecy list taking distro/OS versions
  from the yaml file into account

* Fixes a very commonly reported bug
  - https://github.com/haskell/ghcup-hs/issues/777
2023-09-02 20:52:45 +05:30
Arjun Kathuria
88882cc757 refactor: Upgrade "ghcup-hs" dependency version in cabal.project
* Upgrade `ghcup-hs` project version to a new one that has
  new pretty-print instances needed, after my previous PR
  got merged.

* PR - fd6ff9f8ec
2023-09-02 20:48:28 +05:30
b2d276cd43 Add WT keys 2023-09-01 13:14:24 +08:00
4be5f2a861 Sign 2023-08-29 18:21:02 +08:00
76bbc57292 Merge remote-tracking branch 'origin/pr/114' into hls-2.2.0.0 2023-08-29 18:20:35 +08:00
Fendor
7c3d976be2 Add VSCode hls metadata for 2.2.0.0 2023-08-27 14:18:49 +02:00
Fendor
4543dbe628 Update metadata for HLS 2.2.0.0 2023-08-27 13:34:47 +02:00
0dd813c3bc Test keys 2023-08-26 14:12:35 +08:00
9cda41867d Fix undocumented keys 2023-08-26 13:21:16 +08:00
wz1000
3fb3d65717 Merge pull request #110 from haskell/wip/9.4.7-release
Metadata for GHC 9.4.7
2023-08-25 20:44:38 +05:30
Ben Gamari
a66c722d9c Merge pull request #111 from bgamari/wip/ghc-9.8
Add GHC 9.8.1-alpha3
2023-08-23 21:28:20 -04:00
Ben Gamari
228b60092e Add GHC 9.8.1-alpha3 2023-08-23 15:22:20 -04:00
Zubin Duggal
236a679e1f Metadata for GHC 9.4.7 2023-08-23 17:45:51 +05:30
69dd66bfb8 Fix prerelease tags 2023-08-17 19:51:31 +08:00
Ben Gamari
fab0629aab Fix release date of 9.8.1-alpha2 2023-08-15 08:06:52 -04:00
dff3e395c0 Merge remote-tracking branch 'origin/pr/103' into develop 2023-08-14 17:52:46 +08:00
8faa5a00a4 Re-sign with proper key 2023-08-14 17:51:52 +08:00
Zubin Duggal
44c6e2b5d0 Sign metadata 2023-08-11 22:38:28 +05:30
wz1000
9332b5c3b6 Merge pull request #109 from fendor/hls-metadata-2.1.0.0
Update metadata for HLS 2.1.0.0
2023-08-11 22:35:17 +05:30
Fendor
6dc4112b03 Do not promote to recommended 2023-08-11 18:32:17 +02:00
Fendor
f40933da42 Promote to recommended 2023-08-11 18:22:56 +02:00
Fendor
9137f4b994 Update metadata for HLS 2.1.0.0 2023-08-11 18:20:39 +02:00
Ben Gamari
ae0c031c78 Merge pull request #108 from bgamari/wip/ghc-9.8
Add GHC-9.8.1-alpha2
2023-08-10 11:05:38 -04:00
Ben Gamari
309ceffb43 Add GHC-9.8.1-alpha2 2023-08-09 21:52:28 -04:00
Ben Gamari
a239e448fa Sign ghcup-0.0.7.yaml 2023-08-07 12:07:38 -04:00
Ben Gamari
5c735e8478 Merge pull request #106 from wz1000/wip/9.4.6-release
9.4.6 release
2023-08-07 11:51:20 -04:00
Zubin Duggal
fb1e1a8f7d 9.4.6 release 2023-08-07 15:54:20 +05:30
Arjun Kathuria
803b2cfd1b fix: Upgrade to newest ghcup-hs master
* Upgrades ghcup-metadata to use newest master branch commit.
  - updates cabal.project

* fixes breaking changes when upgrading to new ghcup-hs
  - `listVersions` function changed type-signature, fixed useages
  - needed some GHCTargetVersion -> Version type conversions
2023-07-30 12:30:49 +05:30
Ben Gamari
dac7e22520 Add metadata for GHC 9.8.1-alpha1 2023-07-29 14:25:30 -04:00
0759634d3c Update dlOutput 2023-07-14 21:21:44 +08:00
7312daf7da Re-sign 2023-07-14 21:16:36 +08:00
8fa3fc6f6f Add wasm32-wasi-9.6.2.20230523 to cross 2023-07-14 21:15:54 +08:00
8550a086b4 Fix ghcup prerelease 2023-07-14 00:46:53 +08:00
b2aaecac07 Re-sign 2023-07-14 00:22:04 +08:00
fd29f96559 Add darwin GHCJS 2023-07-14 00:20:15 +08:00
6aa90ff5dd Fix tags on prereleases 2023-07-13 22:04:25 +08:00
046205bdc0 Introduce cross channel 2023-07-12 17:57:06 +08:00
737cc346db Merge branch '0.1.19.5-prerelease' into develop 2023-07-12 17:52:26 +08:00
7ab3419345 Add ghcup 0.1.19.5 prerelease 2023-07-12 17:49:30 +08:00
c88802ea8c Re-sign 2023-07-02 18:53:14 +08:00
5a85e7f735 Bump GHCup to 0.1.19.4 2023-07-02 18:52:54 +08:00
cdd58df6a4 Re-sign 2023-07-02 15:28:15 +08:00
b089af6578 Fix yaml 2023-07-02 15:28:02 +08:00
909e64ae8b Re-sign 2023-07-02 15:11:09 +08:00
9cff00364a Fix alpine 32bit cabal 2023-07-02 15:09:46 +08:00
e34b095e99 Re-sign 2023-07-02 14:41:49 +08:00
1a10c6d2e2 Fix fdlock error on cabal armv7 2023-07-02 14:41:38 +08:00
f5cf930de3 Merge branch 'ghcup-0.1.19.3' into develop 2023-06-29 20:11:40 +08:00
3ff8cf172d Re-sign 2023-06-29 20:07:22 +08:00
2b0f9134e9 Update to ghcup 0.1.19.3 2023-06-29 20:07:07 +08:00
4854047dc9 Merge branch 'hls-2.0.0.1' into develop 2023-06-28 21:14:57 +08:00
9266021236 Re-sign 2023-06-28 20:56:30 +08:00
8defb9068a Update for HLS 2.0.0.1 2023-06-28 20:56:16 +08:00
b88e461c7c Update HLS metadata 2023-05-27 11:56:05 +08:00
bb94c7445a Re-sign 2023-05-26 23:47:20 +08:00
27325db7c0 Add 9.2.8 to vanilla channel 2023-05-26 23:47:02 +08:00
3459025d6f Merge remote-tracking branch 'origin/pr/95' into develop 2023-05-26 23:41:03 +08:00
Zubin Duggal
62c05e25c6 Add metadata for GHC 9.2.8 2023-05-26 17:30:50 +05:30
e2102511b1 Fix tags in vanilla 2023-05-24 22:36:55 +08:00
508f52dfb1 Remove debian 9 from CI 2023-05-24 22:27:03 +08:00
ec29b4bcc3 Sign 2023-05-24 22:22:37 +08:00
52f4dde1ee Fix test DL 2023-05-24 22:22:21 +08:00
4cf9867563 Merge remote-tracking branch 'origin/pr/94' into develop 2023-05-24 22:22:04 +08:00
Ben Gamari
e9426c246d ghcup-vanilla: Add 9.6.2 2023-05-24 08:59:44 -04:00
Ben Gamari
5cba359c78 Add ghc-9.6.2 2023-05-23 17:14:48 -04:00
66a24ec9aa Re-sign 2023-05-19 19:02:17 +08:00
d7d93a85c2 Add stack-2.11.1for main channil 2023-05-19 19:02:07 +08:00
13fad50ca2 Add stack-2.11.1 for vanilla channel 2023-05-19 19:02:07 +08:00
484dd1084c Add GHC-9.4.5 for FreeBSD 2023-05-19 17:42:21 +08:00
c58fe8aaef Update to HLS 2.0.0.0 2023-05-19 16:18:37 +08:00
407d47a2ba Merge remote-tracking branch 'origin/pr/92' into develop 2023-05-19 16:13:04 +08:00
Zubin Duggal
d643f9f84e Add freebsd and fix aarch64-darwin 2023-05-19 13:40:17 +05:30
Zubin Duggal
0540871277 Add metadata for HLS 2.0.0.0 2023-05-18 17:05:42 +05:30
49063b09ba Add M1 binaries for stack-2.11.0.1 2023-05-12 22:05:19 +08:00
d6e7b29250 Re-sign 2023-05-07 00:16:37 +08:00
ffc8c38074 Merge remote-tracking branch 'origin/pr/90' into develop 2023-05-07 00:04:46 +08:00
Mike Pilgrem
e7a1ac0c15 Update ghcup-prereleases-0.0.7.yaml for Stack 2.11.0.1 2023-05-06 12:07:15 +01:00
9459d1cb08 Re-sign 2023-05-05 21:35:51 +08:00
d97d4fb8d7 Merge branch 'redhat8' into develop 2023-05-05 21:35:35 +08:00
d35571f02d Fix RedHat 8 support 2023-05-02 22:52:42 +08:00
2dbfc84ef6 Fix RedHat 8 support 2023-05-02 18:54:41 +08:00
92efb732ac Re-sign 2023-04-20 18:04:28 +08:00
6474e0e7de Add 9.4.5 to vanilla channel 2023-04-20 18:04:05 +08:00
5f1802aee7 Fixup test DL 2023-04-20 18:03:57 +08:00
7a5ffc84ff Merge remote-tracking branch 'origin/pr/88' into develop 2023-04-20 17:56:12 +08:00
Zubin Duggal
b37a8ca419 Add metadata for GHC 9.4.5 2023-04-18 13:24:36 +05:30
309dcd0344 Mark more HLS versions as old 2023-03-30 23:34:07 +08:00
16ca788725 Mark more GHC versions as old 2023-03-30 23:33:03 +08:00
86526f6015 Set GHC-9.2.7 and HLS-1.10.0.0 as recommended 2023-03-30 23:23:18 +08:00
1d00d31730 Fix HLS bindist CI 2023-03-30 22:39:34 +08:00
c975203b5e Sign 2023-03-30 22:28:40 +08:00
5c692ab9ec Generate hls metadata 2023-03-30 22:28:17 +08:00
7c1bf39704 Fix yaml anchors in ghcup-vanilla 2023-03-30 22:18:04 +08:00
673a49bcc1 Fixup HLS 1.10.0.0 2023-03-30 22:17:22 +08:00
6926df6a00 Merge remote-tracking branch 'origin/pr/86' into develop 2023-03-30 22:07:00 +08:00
874f9a52f8 Re-sign 2023-03-30 20:52:33 +08:00
Zubin Duggal
cb19cf7a20 Fix anchors and unknown linux 2023-03-29 11:03:11 +05:30
Zubin Duggal
59ea5163ce Add metadata for HLS 1.10.0.0 2023-03-29 10:52:49 +05:30
b0a026f6a0 Fix cabal arm binaries 2023-03-15 00:01:08 +08:00
5700321a7d Fix armv7/aarch64 ghcup binaries 2023-03-14 22:49:31 +08:00
c58f03c71d Add GHC 9.6.1 proper 2023-03-12 18:40:57 +08:00
96b1c8e3e9 Fix armv7 2023-03-12 18:25:52 +08:00
60a30d8522 Fix CI 2023-03-12 18:17:00 +08:00
7de9fd3a8c Fix CI for cabal 2023-03-12 18:10:21 +08:00
b8606ec3b7 Sign 2023-03-12 18:02:59 +08:00
d19cc1d0f0 Clean up empty dlSubdir 2023-03-12 18:02:44 +08:00
b703c55991 Add cabal 3.10.1.0 proper 2023-03-12 18:02:35 +08:00
8b95d10664 Make latest and recommended match in vanilla channel 2023-03-12 16:25:10 +08:00
d5c7e708d8 Add GHC-9.6.1 to vanilla channel 2023-03-12 16:24:06 +08:00
fea14b9a06 Add cabal-3.10.1.0 to vanilla channel 2023-03-11 23:32:30 +08:00
eadf9b61ba Fixup prereleases 2023-03-04 12:19:44 +08:00
594bd5490d Merge remote-tracking branch 'origin/pr/82' into develop 2023-03-03 23:51:25 +08:00
Ben Gamari
1fa98afb67 Add ghc-9.6.1-rc1 2023-03-03 10:36:30 -05:00
9a262dc451 Fix CI 2023-02-27 23:38:50 +08:00
d4f085edf4 Add FreeBSD 9.4.4 bindist 2023-02-27 22:46:29 +08:00
9c4b70f495 Sign 2023-02-27 21:11:47 +08:00
3e05dee7bf Add FreeBSD stack 2.9.3 binary 2023-02-27 21:11:36 +08:00
f8d0da5743 Make stack 2.9.3 the recommended 2023-02-27 20:42:40 +08:00
dfe477c1b7 Re-sign 2023-02-27 16:00:21 +08:00
f752a23491 Merge branch 'ghc-9.2.7' into develop 2023-02-27 16:00:09 +08:00
df38f4edf2 Add unofficial FreeBSD 9.2.7 bindist 2023-02-27 15:58:21 +08:00
ad42891618 Fix FreeBSD ghcup binary 2023-02-27 13:59:59 +08:00
Zubin Duggal
fe5f56580b Add metadata for GHC 9.2.7 2023-02-27 13:35:18 +08:00
4f8635e560 Fix test 2023-02-24 20:44:47 +08:00
8501a6d4b2 Mark a couple of prereleases as old 2023-02-24 20:22:02 +08:00
94b469197d Update ghcup tag 2023-02-24 20:03:57 +08:00
b1c5e84b42 Fix ghcup-bindist for installing ghcup 2023-02-24 20:02:07 +08:00
51aa203205 Set LatestPrerelease tags 2023-02-24 20:00:08 +08:00
0b98de04cc Bump GHCup to 0.1.19.2 2023-02-24 19:32:15 +08:00
3e07ac0a20 Merge branch 'hls-ci' into develop 2023-02-21 22:38:53 +08:00
d819571955 Fix HLS CI 2023-02-21 22:20:01 +08:00
d33b26a495 Update ghcup-hs subrepo 2023-02-19 23:54:59 +08:00
0ba569e44c Update GHCup to 0.1.19.1 2023-02-19 23:53:05 +08:00
ea9b67d5d0 Fixup prereleases 2023-02-18 01:02:49 +08:00
f47527468b Merge remote-tracking branch 'origin/pr/72' into develop 2023-02-18 00:57:45 +08:00
Ben Gamari
0939170115 Add GHC 9.6.1-alpha3 2023-02-17 09:49:37 -05:00
2941394cb1 Merge branch 'hls-1.9.1.0' into develop 2023-02-15 00:40:14 +08:00
152f531e31 Add HLS 1.9.1.0 2023-02-15 00:25:44 +08:00
033fcb7f19 Add unofficial FreeBSD 9.2.5 GHC bindist 2023-02-11 19:12:47 +08:00
c3d3804e12 Sign 2023-02-11 13:10:43 +08:00
1b5713af8f Remove recommended from 9.2.6 for now 2023-02-11 13:07:07 +08:00
8544b1bd49 Add M1 and aarch to bindist tests 2023-02-11 13:01:36 +08:00
cd5ff36ece Fix bindist test 2023-02-11 12:30:56 +08:00
3520430cd5 Add rocky:8 test 2023-02-11 12:27:48 +08:00
95b6a0a455 Change mappings for Ubuntu and Mint on 9.2.6 2023-02-11 12:27:31 +08:00
a68345fa44 Fix src hast on 9.2.6 and rm ghc-post-remove 2023-02-11 12:02:59 +08:00
98ca9d2f37 Merge remote-tracking branch 'origin/pr/70' into develop 2023-02-11 12:00:43 +08:00
Zubin Duggal
f45f8c6061 Add metadata for GHC 9.2.6 2023-02-10 18:46:39 +05:30
12cb639ca1 Fix remaining issues for ghc-9.6.0.20230128 2023-02-01 00:06:29 +08:00
eeb1e14e37 Merge remote-tracking branch 'origin/pr/69' into develop 2023-01-31 23:29:20 +08:00
3d85d4d78a Oh, shoot 2023-01-30 18:36:12 +08:00
61f49e0992 Sign 2023-01-30 18:12:29 +08:00
7a709a22a4 Add testDL to vanilla 2023-01-30 18:12:11 +08:00
b0004fb0e3 Remove postRemove from vanilla 2023-01-30 18:11:55 +08:00
4b30ea60c0 Add viTestDL 2023-01-30 18:06:03 +08:00
bcc2ced30a Fix subdir validation 2023-01-30 18:05:47 +08:00
Ben Gamari
510f1f281d Address review comments for 9.6.1-alpha2 metadata 2023-01-29 12:23:03 -05:00
Ben Gamari
1b182831ae Add GHC 9.6.1-alpha2 metadata 2023-01-29 11:36:11 -05:00
7acba3cd1e Sign 2023-01-27 21:56:52 +08:00
023f6b1a74 Merge remote-tracking branch 'origin/pr/68' into develop 2023-01-27 21:56:28 +08:00
Mikolaj Konarski
f9977b5a25 Add cabal 3.9.0.0 prerelease from tag unofficial-prerelease-of-3.10 2023-01-27 10:56:56 +01:00
727ed6a374 Sign 2023-01-19 10:21:26 +08:00
f595461414 Merge remote-tracking branch 'origin/pr/67' into develop 2023-01-19 10:21:15 +08:00
Matthew Pickering
0daacd0fb3 Fix duplicate yaml anchors (cabal-3810-32) 2023-01-18 20:49:28 +00:00
0306776a0b Remove GHC postlog
This is already done in GHCup itself.
2023-01-16 22:14:57 +08:00
9e14e6c736 Fix 32bit 3.8 cabal binaries 2023-01-16 00:12:50 +08:00
25b231442a Fixup 9.6.0.20230111 subdirs 2023-01-15 23:02:13 +08:00
dde651c769 Fix cabal-3.8.1.0 bindists 2023-01-15 22:35:52 +08:00
a05354bbc8 Add missing bindists for cabal-3.8.1.0 2023-01-15 21:57:59 +08:00
27c82dc3f7 Sign 2023-01-14 23:27:08 +08:00
e85fc30d6c Merge remote-tracking branch 'origin/pr/66' into develop 2023-01-14 23:23:08 +08:00
Ben Gamari
93204da7fa Add GHC 9.6.1-alpha1 2023-01-13 18:16:06 -05:00
adae303354 Fix windows GHCup 0.1.19.0 binary
Fixes https://github.com/haskell/ghcup-hs/issues/745
2023-01-14 01:45:34 +08:00
b6698d1d2b Update ghcup to 0.1.19.0 2023-01-13 12:58:23 +08:00
7e08589078 Update ghcup build 2023-01-13 12:58:23 +08:00
e6b0a8086a Add armv7 for GHC 9.2.2 2023-01-12 15:36:02 +08:00
7fe858c762 Merge branch 'yamllint' into develop 2023-01-11 23:19:00 +08:00
c8fc5fb44e Implement yaml linting, fixes #63 2023-01-11 22:52:03 +08:00
0b92651bcc Sign 2023-01-11 21:40:26 +08:00
bcfe45ad6b Merge remote-tracking branch 'origin/pr/62' into develop 2023-01-11 21:39:05 +08:00
Matthew Pickering
ae180380b5 Fix duplicated cabal-3620-32 anchor 2023-01-10 09:00:25 +00:00
11aa850e1c Add vanilla metadata, fixes #43 2023-01-08 15:38:13 +08:00
e86689a03b Sign 2023-01-02 19:27:17 +08:00
053d4fe216 Merge remote-tracking branch 'origin/pr/58' into develop 2023-01-02 19:27:06 +08:00
Takahiro HIMURA
173dc63375 Fix a reference for HLS 1.9.0.0 Debian. 2023-01-02 19:49:11 +09:00
9061e416ce Sign 2023-01-01 17:30:11 +08:00
e3cdf35f45 Test bindists on fedora:27 as well 2023-01-01 17:02:52 +08:00
f45500e82a Fix 9.4.4 bindist for fedora <33 2023-01-01 16:03:45 +08:00
c42bb4a2ff Sign 2022-12-29 11:56:46 +08:00
Zubin Duggal
7601d79710 Fix hashes for HLS 1.9 2022-12-29 02:38:13 +05:30
Zubin Duggal
11cb83955f Add metadata for HLS 1.9.0.0 2022-12-26 20:18:38 +05:30
0a1655fbb2 Sign 2022-12-25 23:39:37 +08:00
4bccb92d3f Fix bindist CI 2022-12-25 23:33:21 +08:00
Ben Gamari
c3f824ddc3 Add GHC 9.4.4 2022-12-24 14:53:30 -05:00
9abf634f8c Improve stack post install 2022-12-19 00:15:27 +08:00
5d50438a4c Merge branch 'stack-2.9.3' into develop 2022-12-18 02:27:10 +08:00
22867158fa Add stack-2.9.3 2022-12-18 02:24:52 +08:00
d309865d02 Allow to trigger workflow via comment 2022-12-18 02:22:57 +08:00
af5688633d Fix build for Fedora <33 2022-12-16 12:23:55 +08:00
3b98df479a Fix CI 2022-12-14 22:37:57 +08:00
93514e964f Update sig 2022-12-14 20:57:07 +08:00
4466b7ce4d Merge branch 'develop' 2022-12-13 19:42:05 +08:00
1ba37946e1 Fix Linux Mint shenanigans with HLS 2022-12-13 19:10:08 +08:00
f37840f592 Merge branch 'develop' 2022-11-25 21:20:47 +08:00
Mike Pilgrem
5b58beb3bd Add Stack 2.9.2.1 pre-release to GHCup metadata 2022-11-24 05:56:33 +01:00
8f0e82ef06 Fix 2022-11-12 23:32:13 +08:00
de7b919c4f Fx 8.10.3 alpine bindist 2022-11-12 22:53:26 +08:00
1b9f1fc804 Add subcommand to output system requirements in markdown
Related: https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/411
2022-11-12 11:13:56 +08:00
32a75b482a Sign 2022-11-08 01:00:37 +08:00
6290ad816c Add GHC 9.2.5 2022-11-08 00:56:11 +08:00
2d705bf10a Sign 2022-11-06 23:56:24 +08:00
5da8fa8ea0 Add GHC 9.4.3 2022-11-06 23:08:19 +08:00
c3f3321617 Merge branch 'prof-libs' into develop 2022-10-10 13:30:11 +08:00
45db7a6349 Improve bindist install script
Test HLS and cabal better. Test profiling.
2022-10-10 12:56:43 +08:00
b29358a3ce Add Linux Mint bindist installations to github actions 2022-10-08 21:37:57 +08:00
448e6b65a1 Sign 2022-09-26 23:02:33 +08:00
f79a614842 Set GHC 9.2.4 as recommended
Fixes #402
2022-09-26 23:00:49 +08:00
38af24534d Add stack 2.9.1 2022-09-26 22:48:25 +08:00
70f6aa4112 Fix libffi install on ubuntu18.04 2022-09-16 17:16:51 +08:00
34414b4a6b Add ubuntu 18.04 2022-09-16 17:14:11 +08:00
cea865595a Fix ubuntu HLS 1.8.0.0 2022-09-16 17:04:42 +08:00
3f891cc56a Allow to set arbitrary tools in bindist action
Fixes #35
2022-09-15 22:25:22 +08:00
fd71594ee6 Add linux aarch64 HLS 2022-09-15 22:20:01 +08:00
8a0fcd3172 Enable tests on develop branch 2022-09-15 19:58:05 +08:00
c5d3930c8f Fix windows HLS 1.8 2022-09-15 19:46:08 +08:00
36dd18eeb5 Sign 2022-09-14 19:18:04 +08:00
4f8ca555fd Merge remote-tracking branch 'origin/pr/33' 2022-09-14 19:01:18 +08:00
Pepe Iborra
03e9916d24 Update ghcup-0.0.7.yaml
Co-authored-by: wz1000 <zubin@cmi.ac.in>
2022-09-14 12:05:57 +02:00
Pepe Iborra
7737f5decf use SHA256 hashes 2022-09-14 11:56:26 +02:00
Pepe Iborra
ba07fa8baa yaml syntax fix 2022-09-14 11:46:30 +02:00
Pepe Iborra
e8336c3093 Fixes for Windows and Arm linux binaries 2022-09-14 11:45:29 +02:00
Pepe Iborra
7381149b4e remove recommended tags from 1.7.0.0 2022-09-14 11:43:45 +02:00
Pepe Iborra
ca7416674e fix Windows dlSubdir 2022-09-14 11:32:30 +02:00
Pepe Iborra
ab7231f10f fix Windows dlUri 2022-09-14 11:30:31 +02:00
Pepe Iborra
99133d949a add ghcup metadata 2022-09-14 11:29:05 +02:00
Pepe Iborra
02588b8025 Added metadata for HLS 1.8.0.0 2022-09-14 11:06:35 +02:00
9c78f17415 Sign 2022-08-26 08:38:31 +08:00
33cb0e8708 Mark 9.4.1 as old 2022-08-24 23:29:47 +08:00
bc72af60ca Add g++ to requirements 2022-08-24 23:05:29 +08:00
320f96acf7 Merge remote-tracking branch 'origin/pr/31' 2022-08-24 23:05:13 +08:00
Taylor Fausak
f013568183 Add GHC 9.4.2 2022-08-23 07:00:40 -05:00
86da8c3dfe Merge remote-tracking branch 'origin/pr/30' 2022-08-12 18:55:39 +08:00
amesgen
0bdb62c58e Consolidate and isolate bindist installation
In particular, this now ensure that we actually use the ghcup version we
installed as well as a separate installation directory, instead of any
potentially previously installed versions/files.
2022-08-11 03:29:47 +02:00
amesgen
0c0736526a Bindist CI: add windows 2022-08-10 19:50:04 +02:00
ff79db284a Merge remote-tracking branch 'origin/pr/29' 2022-08-10 20:03:27 +08:00
86c7f4374a Fix Red Hat 2022-08-10 19:58:48 +08:00
25a2382694 Merge branch 'cabal-3.8.1.0' 2022-08-10 08:39:11 +08:00
amesgen
928375fa74 Add CI for bindist installation 2022-08-09 21:44:47 +02:00
29c04ab231 Add cabal-3.8.1.0 2022-08-10 00:06:10 +08:00
1a87f77dda Sign 2022-08-09 23:38:55 +08:00
fc911e1099 Merge remote-tracking branch 'origin/pr/27' 2022-08-09 23:33:52 +08:00
amesgen
2cc783fcab Fix GHC 9.4.1 (e.g. on Ubuntu 20.04) 2022-08-09 13:58:58 +02:00
548aa90553 GPG sign 2022-08-09 19:02:59 +08:00
90571cee09 Fix darwin bindists
https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/6
2022-08-09 19:02:20 +08:00
540ee16e8e Merge remote-tracking branch 'origin/pr/26' 2022-08-09 14:13:53 +08:00
amesgen
19bc7f338e Add ghc-9.4.1 2022-08-09 00:38:30 +02:00
7ec72168b0 Mark more stuff as old 2022-08-06 15:47:26 +08:00
d819e05b93 Fix red hat HLS bindist 2022-07-30 18:01:10 +08:00
42f43a6b2d Update ghcup to 0.1.18.0 2022-07-30 10:45:10 +08:00
012fbb3f13 Sign 2022-07-29 21:54:53 +08:00
3fe6f8d804 Merge branch 'pr/25' 2022-07-29 21:54:38 +08:00
Cheng Shao
bbcf300e90 Add ghc-9.2.4 2022-07-28 17:40:46 +00:00
38062b4b0d Mark old prereleases as old 2022-07-27 23:36:15 +08:00
81e04c51f1 Update gpg signatures 2022-07-27 23:33:07 +08:00
ab64d11db6 Add GHC 9.4.1-rc1 2022-07-27 23:25:00 +08:00
4b22e690e7 Update HLS docs link 2022-07-27 21:47:45 +08:00
a81cfd135b Fix source tarball for GHC-9.2.3 2022-07-06 11:19:52 +02:00
a8f55748cd Fix bindists not respecting DESTDIR 2022-06-26 23:04:55 +02:00
2abf4f081b Fix viPostRemove 2022-06-26 19:43:22 +02:00
1819b160ee Add GHC 9.4.0.20220623 2022-06-26 18:10:26 +02:00
437a84e8d9 Fix 3.8.0.20220526 on windows
See https://github.com/haskell/cabal/issues/8210
2022-06-17 17:07:16 +02:00
ac3cfb6193 Add deb9 bindist to 9.4.1-alpha2 2022-06-05 00:23:53 +02:00
2c562f8eec Add cabal 3.8.0.20220526 prerelease 2022-06-02 19:02:18 +02:00
a47c62ab54 Add 9.4.1-alpha2 pre-release 2022-05-28 16:35:54 +02:00
d54710d917 Add GHC 9.2.3 2022-05-28 15:02:16 +02:00
1eb6f3f256 Update signature 2022-05-12 18:31:17 +02:00
3a9d5453fc Update windows bindist 2022-05-12 18:28:25 +02:00
366153c3c6 Update signature 2022-05-11 23:46:49 +02:00
85d1172440 Bump ghcup to 0.1.17.8 2022-05-11 23:43:49 +02:00
f7e62e1061 Update ghcup ref 2022-05-11 23:43:36 +02:00
7d8f7eaf66 Fix GHC 9.2.2 bindist on windows
By copying some DLLs, see https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/359
2022-05-05 22:15:07 +02:00
26e6477f3c Add 9.4.1-alpha1 GHC prerelease 2022-05-03 15:40:10 +02:00
855a7a9bcf Fix yaml 2022-05-01 18:40:16 +02:00
abf57dbe8c Fix bindists for Linux Mint < 20 2022-05-01 17:34:27 +02:00
fbf06cc9ee Fix HLS 1.7.0.0 bindist again 2022-04-27 14:55:36 +08:00
5f4cd00631 Fix HLS 1.7.0.0 windows bindist 2022-04-27 09:16:40 +08:00
ff2b373807 Release HLS 1.7.0.0 2022-04-27 02:07:29 +08:00
ac808aebbd Fix darwin hash wrt #23 2022-04-24 10:41:38 +08:00
bb8c6b8d34 Bump ghcup to 0.1.17.7 2022-04-21 22:57:48 +02:00
88696a0cc5 Fix some bindists not providing profiling libs 2022-04-09 13:15:35 +02:00
c9384767ac Add pre-release channel 2022-04-07 20:16:07 +02:00
359ed3103a Bump ghcup to 0.1.17.6 2022-03-18 23:23:03 +01:00
ba42ed295f Update ghcup ref 2022-03-18 21:28:31 +01:00
7ab9f62645 Fixup html generation 2022-03-18 18:51:55 +01:00
9d2ebcb74d Fix hls-metadata for windows 2022-03-13 00:28:55 +01:00
4c23f6a49e Generate tool tables for docs 2022-03-08 22:22:36 +01:00
3683db0155 Update README 2022-03-08 15:25:17 +01:00
cc4bf53a23 Generate hls-metadata-0.0.1.json 2022-03-08 14:59:58 +01:00
40bf6cd44b Improve generate subcommand 2022-03-08 14:59:14 +01:00
3ad280534b Add armv7 stack 2.7.5 2022-03-07 00:34:38 +01:00
40be6ebe7a Fix tags for 9.2.1 2022-03-07 00:24:33 +01:00
7eac30f2d9 Backport stuff to ghcup-0.0.6.yaml 2022-03-07 00:19:59 +01:00
afcb5ff508 Add GHC 9.2.2 2022-03-07 00:17:16 +01:00
b8907c7c14 Add stack 2.7.5 2022-03-07 00:01:29 +01:00
df8ab38e1f Bump ghcup version 2022-03-07 00:01:29 +01:00
6fae2f7bc2 Update sig 2022-03-02 18:44:34 +01:00
0371870d77 Update darwin M1 ghcup exe 2022-03-02 13:52:46 +01:00
03f047e369 Try to fix darwin M1 ghcup binaries 2022-03-02 13:27:28 +01:00
2bedba1205 Create subcommand for generating HLS metadata 2022-03-01 01:02:22 +01:00
3c9c41f9a7 Update aarch64-darwin-ghcup-0.1.17.5 ghcup binary
Stripped binaries make problems on M1 apparently,
due to codesigning.
So we re-upload non-stripped ones.
2022-02-26 22:00:30 +01:00
b1d0995221 Update signatures 2022-02-26 18:46:26 +01:00
c12e652817 Update ghcup artifacts to 0.1.17.5 2022-02-26 18:39:42 +01:00
80b61ee4b7 Prepare for ghcup 0.1.17.5 release 2022-02-26 15:23:28 +01:00
a5c26cedb3 Mark GHC 9.0.1 as old 2022-02-19 23:33:26 +01:00
ee446fb9f9 Fix subdir in 9.2.1 centos 2022-02-08 14:26:27 +01:00
81fe5fc42e Fix Centos7 bindist for GHC 9.2.1 2022-02-08 13:36:53 +01:00
1dea46b148 Update signature 2022-01-30 18:04:41 +01:00
d68f918a6d Merge remote-tracking branch 'origin/pr/20' 2022-01-30 18:04:03 +01:00
Javier Neira
8e59562a96 Update ghcup-0.0.6.yaml
Co-authored-by: Julian Ospald <hasufell@posteo.de>
2022-01-30 16:51:54 +01:00
jneira
9f06e257e0 Add hls-1.6.1.0 including alpine 2022-01-30 15:33:26 +01:00
0470341203 Update signature 2022-01-28 23:44:26 +01:00
0ccf71d8b9 Remove alex workaround 2022-01-28 23:43:40 +01:00
jneira
a7ceeca0f0 Remove alpine 2022-01-28 22:07:19 +01:00
jneira
e22bba40c3 Add hls-1.6.0.0 2022-01-28 19:54:45 +01:00
c43df2e806 Fix build because alex is broken 2022-01-21 17:20:19 +01:00
349f72488c Replace alpine 9.2.1 bindist with dynamically linked one, fixes #16
Fixes issues with getEnv compilation:
  https://github.com/haskell/haskell-language-server/pull/2615#issuecomment-1018385710
2022-01-21 17:00:47 +01:00
cbc7043918 Use integer-gmp bindists for alpine x86_64, fixes #14 2022-01-20 17:11:23 +01:00
610714d15f Add alpine i386 GHC 9.0.2 2022-01-05 11:46:40 +01:00
fd8e23873a Revert "Don't make missing i386 alpine fatal"
This reverts commit b24fff8359.
2022-01-05 11:46:20 +01:00
37e87912c3 Add GHC 9.0.2 2022-01-05 10:54:13 +01:00
b24fff8359 Don't make missing i386 alpine fatal 2022-01-05 10:53:21 +01:00
e199e9bc99 Improve toolRequirements for Darwin M1 2021-12-04 20:39:08 +01:00
453552f9b1 Add FreeBSD 13 ghcup 2021-12-02 17:47:30 +01:00
9f0a816876 Add HLS-1.5.1 FreeBSD 13 bindist 2021-12-02 15:50:00 +01:00
de121bca52 Update signature 2021-12-02 14:37:38 +01:00
401b308307 Merge remote-tracking branch 'origin/pr/11' 2021-12-02 12:42:51 +01:00
jneira
acfaee0bd5 Complete gitlab artifacts 2021-12-02 10:01:18 +01:00
jneira
e0a863cd53 Add hls-1.5.1 (incomplete) 2021-11-29 22:00:51 +01:00
176d619b1f Add experimental unofficial stack binaries 2021-11-22 18:16:40 +01:00
ffd62a4c32 Uhm 2021-11-18 18:10:37 +01:00
11600fbb34 Fix signature 2021-11-18 18:09:07 +01:00
15c76331f8 Sign 2021-11-18 18:07:24 +01:00
8fd5f30f19 Add HLS-1.5.0 2021-11-18 18:06:56 +01:00
3a7b8e138c Update sig 2021-11-14 12:17:52 +01:00
9fb3a29d64 Bump to 0.1.17.4 2021-11-14 12:17:12 +01:00
e966566fc3 Bump to latest ghcup 2021-11-13 21:21:19 +01:00
0730c8727d Update debian version constraints, fixes #8 2021-10-31 00:29:45 +02:00
837be46b54 Add alpine 32bit 2021-10-29 22:37:15 +02:00
b0afc6ce76 Add ghc-9.2.1 2021-10-29 19:31:13 +02:00
97a0c97074 Merge branch 'ghcup-gen' 2021-10-27 15:48:45 +02:00
f16faca114 Add ghcup-gen 2021-10-27 15:28:43 +02:00
8e457d1870 Set Cabal 3.6.2.0 as recommended 2021-10-27 15:10:29 +02:00
aa77fec353 Update ghcup to 0.1.17.3 2021-10-27 14:26:29 +02:00
8b9e932c2d Merge branch 'CI' 2021-10-27 14:25:50 +02:00
45 changed files with 29583 additions and 238 deletions

224
.github/workflows/bindists.yaml vendored Normal file
View File

@@ -0,0 +1,224 @@
name: Bindist installation
defaults:
run:
shell: bash
on:
workflow_dispatch:
inputs:
tool:
description: Tool
required: true
type: string
version:
description: Version
required: true
type: string
metadataFile:
description: Metadata file
required: true
default: ghcup-0.0.8.yaml
type: string
channel:
description: Distribution channel (main|prerelease|nightly)
required: true
default: Main
type: string
env:
BOOTSTRAP_HASKELL_NONINTERACTIVE: 1
BOOTSTRAP_HASKELL_MINIMAL: 1
BOOTSTRAP_HASKELL_ADJUST_BASHRC: 1
TOOL: ${{ github.event.inputs.tool }}
VERSION: ${{ github.event.inputs.version }}
METADATA_FILE: ${{ github.event.inputs.metadataFile }}
CHANNEL: ${{ github.event.inputs.channel }}
jobs:
bindist-install:
name: linux-${{ matrix.image }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- image: alpine:latest
installCmd: apk update && apk add
toolRequirements: binutils-gold curl gcc g++ gmp-dev libc-dev libffi-dev make musl-dev ncurses-dev perl tar xz
- image: debian:10
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 libnuma-dev
- image: debian:11
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 libnuma-dev
- image: debian:unstable
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses6 libtinfo6 libnuma-dev
- image: ubuntu:18.04
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
- image: ubuntu:20.04
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
- image: ubuntu:22.04
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
- image: archlinux:latest
installCmd: pacman -Syu --noconfirm
toolRequirements: which gcc gmp libffi make ncurses perl tar xz
- image: fedora:27
installCmd: dnf install -y
toolRequirements: which findutils gcc gcc-c++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
- image: fedora:36
installCmd: dnf install -y
toolRequirements: which gcc g++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
- image: rockylinux:8
installCmd: dnf install -y
toolRequirements: which findutils gcc gcc-c++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
- image: rockylinux:9
installCmd: dnf install -y --allowerasing
toolRequirements: which findutils gcc gcc-c++ gmp gmp-devel make ncurses xz perl
- image: linuxmintd/mint19.3-amd64
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
- image: linuxmintd/mint20.2-amd64
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
- image: linuxmintd/mint21.1-amd64
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
container:
image: ${{ matrix.image }}
steps:
- name: Install requirements
shell: sh
run: |
${{ matrix.installCmd }} curl bash git ${{ matrix.toolRequirements }}
- uses: actions/checkout@v3
- name: Install ghcup and bindist
run: .github/workflows/install-bindist.sh
bindist-install-mac-win:
name: Build non-linux
strategy:
fail-fast: false
matrix:
include:
- os: [self-hosted, macOS, ARM64]
- os: macos-11
- os: macos-12
- os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- if: ${{ github.event_name == 'workflow_dispatch' }}
name: Install ghcup and bindist
run: .github/workflows/install-bindist.sh
bindist-install-arm:
name: Build ARM binary
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: [self-hosted, Linux, ARM64]
ARCH: ARM
- os: [self-hosted, Linux, ARM64]
ARCH: ARM64
steps:
- uses: docker://arm64v8/ubuntu:focal
name: Cleanup (aarch64 linux)
with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
- name: git config
run: |
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
shell: bash
- uses: actions/checkout@v3
- if: matrix.ARCH == 'ARM'
uses: docker://hasufell/arm32v7-ubuntu-haskell:focal
name: Run build (armv7 linux)
with:
args: sh -c '.github/workflows/install-bindist.sh'
- if: matrix.ARCH == 'ARM64'
uses: docker://hasufell/arm64v8-ubuntu-haskell:focal
name: Run build (aarch64 linux)
with:
args: sh -c '.github/workflows/install-bindist.sh'
validate:
name: ghcup-gen check
runs-on: ubuntu-latest
env:
GHC: 9.2.8
CABAL: 3.10.1.0
steps:
- 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: install yamllint
run: pip install yamllint
- name: Update cabal cache
run: cabal update
shell: bash
- name: Install requirements
shell: sh
run: |
export DEBIAN_FRONTEND=noninteractive
export TZ=Asia/Singapore
sudo apt-get update && sudo apt-get install -y curl bash git gnupg libarchive-dev
- uses: actions/checkout@v3
- name: Cache Cabal
uses: actions/cache@v2
env:
cache-name: cache-cabal
with:
path: |
~/.cabal/store
~/.cabal/packages
key: v2-${{ runner.os }}-${{ env.GHC }}-${{ env.CABAL }}-build-${{ hashFiles('cabal.project') }}
restore-keys: |
v2-${{ runner.os }}-${{ env.GHC }}-${{ env.CABAL }}-build-${{ hashFiles('cabal.project') }}
v2-${{ runner.os }}-${{ env.GHC }}-${{ env.CABAL }}-build-
v2-${{ runner.os }}-${{ env.GHC }}
- name: Install ghcup-gen
run: |
ghcup run --cabal 3.10.1.0 --ghc 9.2.8 --install -- cabal install --installdir="$HOME/.local/bin" --overwrite-policy=always --install-method=copy ghcup-gen
shell: bash
- name: Check yaml
run: |
ghcup-gen -- check -f ${{ env.METADATA_FILE }} --channel ${{ env.CHANNEL }}
yamllint ${{ env.METADATA_FILE }}
python3 -c "import yaml ; stream = open('${{ env.METADATA_FILE }}', 'r') ; yaml.safe_load(stream)"
shell: bash
signature-test:
name: Test signatures
runs-on: ubuntu-latest
steps:
- name: Install requirements
shell: sh
run: |
sudo apt-get update && sudo apt-get install -y curl bash git gnupg
- uses: actions/checkout@v3
- name: Test signatures
run: .github/workflows/test-sigs.sh

30
.github/workflows/common.sh vendored Normal file
View File

@@ -0,0 +1,30 @@
#!/bin/bash
if [ "${RUNNER_OS}" = "Windows" ] ; then
ext=".exe"
else
ext=''
fi
echo_color() {
local color="$1"
local msg="$2"
echo -e "\033[${color}m${msg}\033[0m"
}
error() { echo_color "${RED}" "$1"; }
warn() { echo_color "${LT_BROWN}" "$1"; }
info() { echo_color "${LT_BLUE}" "$1"; }
fail() { error "error: $1"; exit 1; }
mktempdir() {
case "$(uname -s)" in
"Darwin"|"darwin")
mktemp -d -t hls_ci.XXXXXXX
;;
*)
mktemp -d
;;
esac
}

116
.github/workflows/install-bindist.sh vendored Executable file
View File

@@ -0,0 +1,116 @@
#!/usr/bin/env bash
set -x
set -eo pipefail
. .github/workflows/common.sh
export GHCUP_INSTALL_BASE_PREFIX=$RUNNER_TEMP/foobarbaz
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
source "$GHCUP_INSTALL_BASE_PREFIX"/.ghcup/env || source "$HOME/.bashrc"
ghcup --version
which ghcup | grep foobarbaz
ghcup_fun() {
ghcup -v --url-source="file:$METADATA_FILE" "$@"
}
case $TOOL in
ghcup)
ghcup_fun upgrade --force
;;
*) ghcup_fun install "$TOOL" --set "$VERSION"
;;
esac
mkdir -p /tmp/install-bindist-ci
cp "$METADATA_FILE" /tmp/install-bindist-ci/
cd /tmp/install-bindist-ci
cat <<EOF > main.hs
{- cabal:
build-depends: base
-}
main = print $ 1 + 1
EOF
case $TOOL in
ghcup)
ghcup_fun list
;;
hls)
ghcup_fun install cabal latest
ghcup_fun install ghc --set recommended
cabal update
test_package="bytestring-0.11.1.0"
test_module="Data/ByteString.hs"
create_cradle() {
echo "cradle:" > hie.yaml
echo " cabal:" >> hie.yaml
}
enter_test_package() {
local tmp_dir
tmp_dir=$(mktempdir)
cd "$tmp_dir"
cabal unpack "${test_package}"
cd "${test_package}"
cp "/tmp/install-bindist-ci/${METADATA_FILE}" .
}
# For all HLS GHC versions and the wrapper, run 'typecheck'
# over the $test_module
test_all_hls() {
local bin
local bin_noexe
local bindir
local hls
bindir=$1
for hls in "${bindir}/"haskell-language-server-* ; do
bin=${hls##*/}
bin_noexe=${bin/.exe/}
if ! [[ "${bin_noexe}" =~ "haskell-language-server-wrapper" ]] && ! [[ "${bin_noexe}" =~ "~" ]] && ! [[ "${bin_noexe}" =~ ".shim" ]] ; then
if ghcup_fun install ghc --set "${bin_noexe/haskell-language-server-/}" ; then
"${hls}" typecheck "${test_module}" || fail "failed to typecheck with HLS for GHC ${bin_noexe/haskell-language-server-/}"
else
fail "GHCup failed to install GHC ${bin_noexe/haskell-language-server-/}"
fi
ghcup_fun rm ghc "${bin_noexe/haskell-language-server-/}"
fi
done
"$bindir/haskell-language-server-wrapper${ext}" typecheck "${test_module}" || fail "failed to typecheck with HLS wrapper"
}
enter_test_package
create_cradle
case "$(uname -s)" in
MSYS_*|MINGW*)
test_all_hls "$(dirname "$(which ghcup)")"
;;
*)
test_all_hls "$(ghcup whereis bindir)"
;;
esac
;;
ghc)
ghc --version
ghc --info
ghc -prof main.hs
[[ $(./main +RTS -s) -eq 2 ]]
;;
cabal)
ghcup_fun install ghc --set "$(ghcup_fun list -t ghc -r -c available | tail -1 | awk '{ print $2 }')"
cabal --version
cabal update
[[ $(cabal --verbose=0 run --enable-profiling ./main.hs -- +RTS -s) -eq 2 ]]
;;
*)
$TOOL --version
;;
esac

6
.github/workflows/sigs vendored Normal file
View File

@@ -0,0 +1,6 @@
keys=(
7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C # Julian Ospald <maerwald@hasufell.de>
FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD # Ben Gamari <ben@well-typed.com>
88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 # Zubin Duggal <zubin@well-typed.com>
EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF # Hécate <hecate@glitchbra.in>
)

27
.github/workflows/test-sigs.sh vendored Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -x
set -eo pipefail
. .github/workflows/common.sh
get_key() {
local key=$1
local server=$2
gpg --batch --keyserver "${server}" --recv-keys "${key}"
echo -e "${key}:6:" | gpg --import-ownertrust
}
# verify signature
. .github/workflows/sigs
for key in "${keys[@]}" ; do
get_key "${key}" keys.openpgp.org || get_key "${key}" keyserver.ubuntu.com
done
unset key
gpg --verify "${METADATA_FILE}.sig"
for f in ghcup-*.json ghcup-*.yaml hls-metadata-*.json ; do
gpg --verify "${f}.sig"
done

View File

@@ -2,28 +2,46 @@ name: Tests
on:
push:
branches: [ master ]
branches: [ master, develop ]
pull_request:
branches: [ master ]
branches: [ master, develop ]
jobs:
test:
name: Test metadata
runs-on: ${{ matrix.os }}
env:
YAML_VER: 0.0.6
YAML_VER: 0.0.7
strategy:
matrix:
ghc:
- '8.10.7'
cabal:
- '3.6.2.0'
os:
- ubuntu-latest
- ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- uses: haskell/actions/setup@v1.2
with:
ghc-version: 8.10.7
cabal-version: 3.6.2.0
ghc-version: ${{ matrix.ghc }}
cabal-version: ${{ matrix.cabal }}
- name: Cache Cabal
uses: actions/cache@v2
env:
cache-name: cache-cabal
with:
path: |
~/.cabal/store
~/.cabal/packages
key: v2-${{ runner.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-build-${{ hashFiles('cabal.project') }}
restore-keys: |
v2-${{ runner.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-build-${{ hashFiles('cabal.project') }}
v2-${{ runner.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-build-
v2-${{ runner.os }}-${{ matrix.ghc }}
- name: create ~/.local/bin
run: mkdir -p "$HOME/.local/bin"
@@ -33,18 +51,30 @@ jobs:
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
shell: bash
- name: install yamllint
run: pip install yamllint
- name: Update cabal cache
run: cabal update
shell: bash
- name: Install ghcup-gen
- name: Install some deps
run: |
cabal install --installdir="$HOME/.local/bin" --overwrite-policy=always --install-method=copy ghcup
export DEBIAN_FRONTEND=noninteractive
export TZ=Asia/Singapore
sudo apt install -y libarchive-dev
shell: bash
- name: Check
- name: Install ghcup-gen
run: |
cabal install --installdir="$HOME/.local/bin" --overwrite-policy=always --install-method=copy ghcup-gen
shell: bash
- name: Check yaml
run: |
ghcup-gen -- check -f ghcup-${{ env.YAML_VER }}.yaml
yamllint ghcup-${{ env.YAML_VER }}.yaml
python3 -c "import yaml ; stream = open('ghcup-${{ env.YAML_VER }}.yaml', 'r') ; yaml.safe_load(stream)"
shell: bash
- name: Check tarballs

17
.gitignore vendored Normal file
View File

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

5
.yamllint Normal file
View File

@@ -0,0 +1,5 @@
extends: default
rules:
line-length: disable
indentation: disable

View File

@@ -1,13 +1,54 @@
# GHCup metadata
## Adding a new GHC version
## For end users
### Metadata variants (distribution channels)
* `ghcup-A.B.C.yaml`: this is the main metadata and what ghcup uses by default
* `ghcup-vanilla-A.B.C.yaml`: this is similar to `ghcup-A.B.C.yaml`, but only uses upstream bindists (no patches/fixes are applied, no missing platforms added)
* `ghcup-prereleases-A.B.C.yaml`: this contains pre-releases of all tools
* `ghcup-cross-A.B.C.yaml`: this contains (usually experimental) cross compilers
### Using the metadata
If you want access to both pre-releases and cross compilers, run:
```
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
```
## For contributors
### Adding a new GHC version
1. open the latest `ghcup-<yaml-ver>.yaml`
2. find the latest ghc version (in yaml tree e.g. `ghcupDownloads -> GHC -> 8.10.7`)
3. copy-paste it
4. adjust the version, tags, changelog, source url
5. adjust the various bindist urls (make sure to also change the yaml anchors)
6. build the `ghcup-gen` binary from the [ghcup repo](https://gitlab.haskell.org/haskell/ghcup-hs)
7. run `ghcup-gen -- check -f ghcup-<yaml-ver>.yaml`
8. run `ghcup-gen -- check-tarballs -f ghcup-<yaml-ver>.yaml -u 'ghc-8\.10\.8'`
6. run `cabal run ghcup-gen -- check -f ghcup-<yaml-ver>.yaml`
7. run `cabal run ghcup-gen -- check-tarballs -f ghcup-<yaml-ver>.yaml -u 'ghc-8\.10\.8'`
8. run `cabal run ghcup-gen -- generate-hls-ghcs -f ghcup-<yaml-ver>.yaml --format json -o hls-metadata-0.0.1.json`
9. run `cabal run ghcup-gen -- generate-table -f ghcup-<yaml-ver>.yaml --stdout` and adjust [docs/install](https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/docs/install.md) tables
### During a pull request
* make sure to always add new versions to both `ghcup-A.B.C.yaml` and `ghcup-vanilla-A.B.C.yaml`
* make sure to run the bindist action to check tool installation on all platforms: https://github.com/haskell/ghcup-metadata/actions/workflows/bindists.yaml
- this is a manual pipeline
- set the appropriate parameters
* make sure to sign the yaml files you edited, e.g.: `gpg --detach-sign -u <your-email> ghcup-0.0.7.yaml` or ask a GHCup developer to sign
- PGP pubkeys need to be cross-signed by the GHCup team
- they need to be added to the CI: https://github.com/haskell/ghcup-metadata/blob/develop/.github/workflows/sigs
- and need to be documented on the homepage
* https://github.com/haskell/ghcup-hs/blob/master/docs/guide.md#gpg-verification
* https://github.com/haskell/ghcup-hs/blob/master/docs/install.md#unix
### Understanding tags
Tags are documented [here](https://github.com/haskell/ghcup-hs/blob/master/lib/GHCup/Types.hs). Search for `data Tag`.
Some tags are unique. Uniqueness is checked by `cabal run ghcup-gen -- check -f ghcup-<yaml-ver>.yaml`.
If you want to check prereleases, do: `cabal run ghcup-gen -- check -f ghcup-prereleases-<yaml-ver>.yaml --channel=prerelease`

28
cabal.project Normal file
View File

@@ -0,0 +1,28 @@
packages: ./ghcup-gen/ghcup-gen.cabal
package ghcup
tests: False
flags: +tui +no-exe
source-repository-package
type: git
location: https://github.com/haskell/ghcup-hs.git
tag: e27fed09f3eb4b0b72ce7825c65f16a4202a2399
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0
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

View File

@@ -2132,43 +2132,39 @@
}
},
"GHCup": {
"0.1.16.2": {
"0.1.19.0": {
"viTags": [
"Recommended",
"Latest"
],
"viChangeLog": "https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md",
"viChangeLog": "https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md",
"viSourceDL": null,
"viArch": {
"A_64": {
"Linux_UnknownLinux": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2",
"dlSubdir": null,
"dlHash": "d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0",
"dlHash": "33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12"
}
},
"Darwin": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2",
"dlSubdir": null,
"dlHash": "a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0",
"dlHash": "416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7"
}
},
"FreeBSD": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2",
"dlSubdir": null,
"dlHash": "92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0",
"dlHash": "dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62"
}
}
},
"A_32": {
"Linux_UnknownLinux": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2",
"dlSubdir": null,
"dlHash": "01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0",
"dlHash": "0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53"
}
}
}

Binary file not shown.

View File

@@ -2674,51 +2674,51 @@
}
},
"GHCup": {
"0.1.16.2": {
"0.1.19.0": {
"viTags": [
"Recommended",
"Latest"
],
"viChangeLog": "https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md",
"viChangeLog": "https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md",
"viSourceDL": null,
"viArch": {
"A_64": {
"Linux_UnknownLinux": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2",
"dlHash": "d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0",
"dlHash": "33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12"
}
},
"Darwin": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2",
"dlHash": "a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0",
"dlHash": "416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7"
}
},
"FreeBSD": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2",
"dlHash": "92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0",
"dlHash": "dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62"
}
},
"Linux_Alpine": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2",
"dlHash": "d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0",
"dlHash": "33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12"
}
}
},
"A_32": {
"Linux_UnknownLinux": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2",
"dlHash": "01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0",
"dlHash": "0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53"
}
},
"Linux_Alpine": {
"unknown_versioning": {
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2",
"dlHash": "01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38"
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0",
"dlHash": "0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53"
}
}
}

Binary file not shown.

View File

@@ -1384,32 +1384,32 @@ ghcupDownloads:
dlUri: https://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-freebsd-12.1-release.tar.xz
dlHash: 9705e16d03497b46be4ad477e6c64d10890af853eafa8a9adf6dba89aa9e05f7
GHCup:
0.1.16.2:
0.1.19.0:
viTags:
- Recommended
- Latest
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
viSourceDL:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &ghcup-64
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2
dlHash: d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2
dlHash: a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
FreeBSD:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2
dlHash: 92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
Linux_Alpine:
unknown_versioning: *ghcup-64
A_32:
Linux_UnknownLinux:
unknown_versioning: &ghcup-32
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2
dlHash: 01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
Linux_Alpine:
unknown_versioning: *ghcup-32

Binary file not shown.

View File

@@ -1451,33 +1451,33 @@ ghcupDownloads:
dlUri: https://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-freebsd-12.1-release.tar.xz
dlHash: 9705e16d03497b46be4ad477e6c64d10890af853eafa8a9adf6dba89aa9e05f7
GHCup:
0.1.16.2:
0.1.19.0:
viTags:
- Recommended
- Latest
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
viSourceDL:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &ghcup-64
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2
dlHash: d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2
dlHash: a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
FreeBSD:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2
dlHash: 92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
Linux_Alpine:
unknown_versioning: *ghcup-64
A_32:
Linux_UnknownLinux:
unknown_versioning: &ghcup-32
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2
dlHash: 01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
Linux_Alpine:
unknown_versioning: *ghcup-32
HLS:

Binary file not shown.

Binary file not shown.

View File

@@ -1868,49 +1868,49 @@ ghcupDownloads:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz
dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed
GHCup:
0.1.16.2:
0.1.19.0:
viTags:
- Recommended
- Latest
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
viSourceDL:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &ghcup-64
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2
dlHash: d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2
dlHash: a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
FreeBSD:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2
dlHash: 92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
Linux_Alpine:
unknown_versioning: *ghcup-64
A_32:
Linux_UnknownLinux:
unknown_versioning: &ghcup-32
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2
dlHash: 01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
Linux_Alpine:
unknown_versioning: *ghcup-32
A_ARM64:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/aarch64-linux-ghcup-0.1.16.2
dlHash: 0bdbfc724e0ddabb266156eea83c2c4e19c6ed79dd06db0c29b7d69df8d9fa8c
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-linux-ghcup-0.1.19.0
dlHash: a546dcd23a7e56f31bc4d6afad0276f88d3f0b850a3d3c36369721797dc3c3d5
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/aarch64-apple-darwin-ghcup-0.1.16.2
dlHash: 8854e991a2ba1350abda59dab96ce50ae7729d1ce99399d67929ef31e90f1da5
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-apple-darwin-ghcup-0.1.19.0
dlHash: 69bd8e37cd07606d928dca9215c066564a264e0def3c81171b76d5747dc6507c
A_ARM:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/armv7-linux-ghcup-0.1.16.2
dlHash: 983ebb5b584bfa600704216a63f94b40d36a02573834e90ef1042c8472d9ad57
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/armv7-linux-ghcup-0.1.19.0
dlHash: 58a170c1fb0b4e701ebb40f90a23f6ababe9e61291726aad82e18d4649aed908
HLS:
1.1.0:
viTags:

Binary file not shown.

View File

@@ -2025,53 +2025,53 @@ ghcupDownloads:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz
dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed
GHCup:
0.1.16.2:
0.1.19.0:
viTags:
- Recommended
- Latest
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
viSourceDL:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &ghcup-64
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2
dlHash: d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2
dlHash: a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
FreeBSD:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2
dlHash: 92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
Windows:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-mingw64-ghcup-0.1.16.2.exe
dlHash: ec78872a84213968c490675127b9aad2285980b747c68207801ae824b98c7948
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-mingw64-ghcup-0.1.19.0.exe
dlHash: c4e4a764b0844e351eb6939ff236452f33c34808aaca69f973ea82e18d3aa1ac
Linux_Alpine:
unknown_versioning: *ghcup-64
A_32:
Linux_UnknownLinux:
unknown_versioning: &ghcup-32
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2
dlHash: 01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
Linux_Alpine:
unknown_versioning: *ghcup-32
A_ARM64:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/aarch64-linux-ghcup-0.1.16.2
dlHash: 0bdbfc724e0ddabb266156eea83c2c4e19c6ed79dd06db0c29b7d69df8d9fa8c
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-linux-ghcup-0.1.19.0
dlHash: a546dcd23a7e56f31bc4d6afad0276f88d3f0b850a3d3c36369721797dc3c3d5
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/aarch64-apple-darwin-ghcup-0.1.16.2
dlHash: 8854e991a2ba1350abda59dab96ce50ae7729d1ce99399d67929ef31e90f1da5
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-apple-darwin-ghcup-0.1.19.0
dlHash: 69bd8e37cd07606d928dca9215c066564a264e0def3c81171b76d5747dc6507c
A_ARM:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.16.2/armv7-linux-ghcup-0.1.16.2
dlHash: 983ebb5b584bfa600704216a63f94b40d36a02573834e90ef1042c8472d9ad57
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/armv7-linux-ghcup-0.1.19.0
dlHash: 58a170c1fb0b4e701ebb40f90a23f6ababe9e61291726aad82e18d4649aed908
HLS:
1.1.0:
viTags: []

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

6256
ghcup-0.0.7.yaml Normal file

File diff suppressed because it is too large Load Diff

BIN
ghcup-0.0.7.yaml.sig Normal file

Binary file not shown.

6256
ghcup-0.0.8.yaml Normal file

File diff suppressed because it is too large Load Diff

BIN
ghcup-0.0.8.yaml.sig Normal file

Binary file not shown.

42
ghcup-cross-0.0.8.yaml Normal file
View File

@@ -0,0 +1,42 @@
---
globalTools:
ShimGen:
dlUri: https://downloads.haskell.org/~ghcup/shimgen/shim-2.exe
dlHash: 7c55e201f71860c5babea886007c8fa44b861abf50d1c07e5677eb0bda387a70
toolRequirements: {}
ghcupDownloads:
GHC:
javascript-unknown-ghcjs-9.6.2:
viTags:
- base-4.18.0.0
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning:
dlHash: 4e12b602869206830eef1aa6a17a5a00fa887d6c98c3a552269c418ee7f736f8
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-x86_64-linux-unknown.tar.xz
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-x86_64-apple-darwin.tar.xz
dlHash: dddb0ee68857a79e67a52c4ab9b7230023a8684a5e826e9afbb9c5820abf47e1
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
A_ARM64:
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-aarch64-apple-darwin.tar.xz
dlHash: 0d65bb3940a820d95b4b33ea0cd61bf39670d48c4d8f747153ded01a7ef34821
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
wasm32-wasi-9.6.2.20230523:
viTags:
- base-4.18.0.0
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &ghc-wasm32-wasi-64-static
dlHash: 85433ce296f2f95a5c60f78060cb4a3a8bf8b56bf83ddd75f1b23cb2e2378888
dlSubdir: ghc-9.6.2.20230523-wasm32-wasi
dlUri: https://gitlab.haskell.org/api/v4/projects/3223/jobs/1530829/artifacts/ghc-x86_64-linux-alpine3_12-cross_wasm32-wasi-release%2Bfully_static.tar.xz
dlOutput: ghc-9.6.2.20230523-x86_64-linux-alpine3_12-cross_wasm32-wasi-release+fully_static.tar.xz
Linux_Alpine:
unknown_versioning: *ghc-wasm32-wasi-64-static

BIN
ghcup-cross-0.0.8.yaml.sig Normal file

Binary file not shown.

6
ghcup-gen/CHANGELOG.md Normal file
View File

@@ -0,0 +1,6 @@
# Revision history for ghcup-gen
## 0.1.17.3 -- 2021-10-27
* First release (split from ghcup)

287
ghcup-gen/Generate.hs Normal file
View File

@@ -0,0 +1,287 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE LambdaCase #-}
module Generate where
import GHCup
import GHCup.Download
import GHCup.Requirements
import GHCup.Errors
import GHCup.Types
import GHCup.Types.Optics
import GHCup.Utils
import Codec.Archive
import Control.DeepSeq
import Control.Exception ( evaluate )
import Control.Exception.Safe hiding ( handle )
import Control.Monad
import Control.Monad.IO.Class
import Control.Monad.Reader.Class
import Control.Monad.Trans.Resource ( runResourceT
, MonadUnliftIO
)
import qualified Data.Aeson.Encode.Pretty as Aeson
import Data.ByteString ( ByteString )
import Data.Either
import Data.Maybe
import Data.List
import Data.Map.Strict ( Map )
import Data.Versions
import Haskus.Utils.Variant.Excepts
import System.Exit
import System.FilePath
import System.IO
import Text.Regex.Posix
import GHCup.Prelude.String.QQ
import qualified Data.ByteString.Lazy as BSL
import qualified Data.Map.Strict as M
import qualified Data.Text as T
import qualified Data.Yaml.Pretty as YAML
import qualified Text.Megaparsec as MP
import Data.Bifoldable (bifoldMap)
import Data.Foldable (traverse_)
import Data.Text (Text)
import Text.PrettyPrint.HughesPJClass (pPrint)
data Format = FormatJSON
| FormatYAML
data Output
= FileOutput FilePath -- optsparse-applicative doesn't handle ByteString correctly anyway
| StdOut
type HlsGhcVersions = Map Version (Map Architecture (Map Platform Version))
generateHLSGhc :: ( MonadFail m
, MonadMask m
, Monad m
, MonadReader env m
, HasSettings env
, HasDirs env
, HasLog env
, MonadThrow m
, MonadIO m
, MonadUnliftIO m
, HasGHCupInfo env
)
=> Format
-> Output
-> m ExitCode
generateHLSGhc format output = do
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
let hlses = dls M.! HLS
r <- forM hlses $ \(_viArch -> archs) ->
forM archs $ \plats ->
forM plats $ \(head . M.toList -> (_, dli)) -> do
VRight r <- runResourceT . runE
@'[DigestError
, GPGError
, DownloadFailed
, UnknownArchive
, ArchiveResult
, ContentLengthError
] $ do
fp <- liftE $ downloadCached dli Nothing
let subd = _dlSubdir dli
filesL <- liftE $ getArchiveFiles fp
files <- liftIO $ evaluate $ force filesL
case subd of
Just (RealDir d)
| d </> "GNUmakefile" `elem` files
-> do let regex = makeRegexOpts compExtended execBlank ([s|^haskell-language-server-([0-9]+\.)*([0-9]+)(\.in)$|] :: ByteString)
pure (rights $ MP.parse version' ""
. T.pack
. fromJust
. stripPrefix "haskell-language-server-"
. stripIn
<$> filter (match regex) (fromJust . stripPrefix (d <> "/") <$> files)
)
_ -> do let regex = makeRegexOpts compExtended execBlank ([s|^haskell-language-server-([0-9]+\.)*([0-9]+)(\.exe)?$|] :: ByteString)
pure (rights $ MP.parse version' ""
. T.pack
. fromJust
. stripPrefix "haskell-language-server-"
. stripExe
<$> filter (match regex) files
)
pure (sort r)
let w = case format of
FormatYAML -> BSL.fromStrict $ YAML.encodePretty YAML.defConfig r
FormatJSON -> Aeson.encodePretty r
case output of
StdOut -> liftIO $ BSL.putStr w
FileOutput f -> liftIO $ BSL.writeFile f w
pure ExitSuccess
where
stripExe :: String -> String
stripExe f = case reverse f of
('e':'x':'e':'.':r) -> reverse r
_ -> f
stripIn :: String -> String
stripIn f = case reverse f of
('n':'i':'.':r) -> reverse r
_ -> f
generateTable :: ( MonadFail m
, MonadMask m
, Monad m
, MonadReader env m
, HasSettings env
, HasDirs env
, HasLog env
, MonadThrow m
, MonadIO m
, HasPlatformReq env
, HasGHCupInfo env
, MonadUnliftIO m
)
=> Output
-> m ExitCode
generateTable output = do
handle <- case output of
StdOut -> pure stdout
FileOutput fp -> liftIO $ openFile fp WriteMode
forM_ [GHC,Cabal,HLS,Stack] $ \tool -> do
case tool of
GHC -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://www.haskell.org/ghc/'>GHC</a> versions</summary>"
Cabal -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://cabal.readthedocs.io/en/stable/'>cabal-install</a> versions</summary>"
HLS -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://haskell-language-server.readthedocs.io/en/stable/'>HLS</a> versions</summary>"
Stack -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://docs.haskellstack.org/en/stable/README/'>Stack</a> versions</summary>"
_ -> fail "no"
liftIO $ hPutStrLn handle $ "<table>"
liftIO $ hPutStrLn handle $ "<thead><tr><th>" <> show tool <> " Version</th><th>Tags</th></tr></thead>"
liftIO $ hPutStrLn handle $ "<tbody>"
vers <- reverse <$> listVersions (Just tool) [] False False (Nothing, Nothing)
forM_ (filter (\ListResult{..} -> not lStray) vers) $ \ListResult{..} -> do
liftIO $ hPutStrLn handle $
"<tr><td>"
<> T.unpack (prettyVer lVer)
<> "</td><td>"
<> intercalate ", " (filter (/= "") . fmap printTag $ sort lTag)
<> "</td></tr>"
pure ()
liftIO $ hPutStrLn handle $ "</tbody>"
liftIO $ hPutStrLn handle $ "</table>"
liftIO $ hPutStrLn handle $ "</details>"
liftIO $ hPutStrLn handle $ ""
pure ExitSuccess
where
printTag Recommended = "<span style=\"color:green\">recommended</span>"
printTag Latest = "<span style=\"color:blue\">latest</span>"
printTag Prerelease = "<span style=\"color:red\">prerelease</span>"
printTag (Base pvp'') = "base-" ++ T.unpack (prettyPVP pvp'')
printTag (UnknownTag t ) = t
printTag Old = ""
generateSystemInfo :: ( MonadFail m
, MonadMask m
, Monad m
, MonadReader env m
, HasSettings env
, HasDirs env
, HasLog env
, MonadThrow m
, MonadIO m
, HasPlatformReq env
, HasGHCupInfo env
, MonadUnliftIO m
)
=> Output
-> m ExitCode
generateSystemInfo output = do
handle <- case output of
StdOut -> pure stdout
FileOutput fp -> liftIO $ openFile fp WriteMode
forM_ [ Linux Debian
, Linux Ubuntu
, Linux Fedora
, Linux CentOS
, Linux Alpine
, Linux UnknownLinux
, Darwin
, FreeBSD
, Windows
] $ \plat -> do
GHCupInfo { .. } <- getGHCupInfo
(Just req) <- pure $ getCommonRequirements (PlatformResult plat Nothing) _toolRequirements
liftIO $ hPutStrLn handle $ "### " <> (prettyPlat plat) <> "\n"
liftIO $ hPutStrLn handle $ (T.unpack $ pretty' req) <> "\n"
pure ExitSuccess
where
pretty' Requirements {..} =
let d = if not . null $ _distroPKGs
then "The following distro packages are required: " <> "`" <> T.intercalate " " _distroPKGs <> "`"
else ""
n = if not . T.null $ _notes then _notes else ""
in if | T.null d -> n
| T.null n -> d
| otherwise -> d <> "\n" <> n
prettyPlat (Linux UnknownLinux) = "Linux (generic)"
prettyPlat p = show p
generateSystemInfoWithDistroVersion :: ( MonadFail m
, MonadMask m
, Monad m
, MonadReader env m
, HasSettings env
, HasDirs env
, HasLog env
, MonadThrow m
, MonadIO m
, HasPlatformReq env
, HasGHCupInfo env
, MonadUnliftIO m
)
=> Output
-> m ExitCode
generateSystemInfoWithDistroVersion output = do
handle <- case output of
StdOut -> pure stdout
FileOutput fp -> liftIO $ openFile fp WriteMode
GHCupInfo { _toolRequirements = tr } <- getGHCupInfo
let ghcInfo = M.lookup Nothing <$> M.lookup GHC tr
liftIO $ traverse_ (\(key, value) -> do
liftIO $ hPutStrLn handle $ "### " <> prettyPlat key <> "\n"
liftIO $ hPutStrLn handle $ T.unpack $ versionsAndRequirements value <> T.pack "\n")
$ M.toList $ fromJust (fromJust ghcInfo)
pure ExitSuccess
where
pretty' Requirements {..} =
let d = if not . null $ _distroPKGs
then "The following distro packages are required: " <> "`" <> T.intercalate " " _distroPKGs <> "`" <> "\n"
else ""
n = if not . T.null $ _notes then _notes else ""
in if | T.null d -> n
| T.null n -> d
| otherwise -> d <> "\n" <> n
versionsAndRequirements :: PlatformReqVersionSpec -> Text
versionsAndRequirements =
bifoldMap
( \case
Nothing -> T.pack $ "#### Generic" <> "\n"
Just verz -> T.pack "#### Version " <> T.pack (show $ pPrint verz) <> "\n"
)
pretty'
prettyPlat (Linux UnknownLinux) = "Linux (generic)"
prettyPlat p = show p

165
ghcup-gen/LICENSE Normal file
View File

@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

234
ghcup-gen/Main.hs Normal file
View File

@@ -0,0 +1,234 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Main where
import GHCup.Types
import GHCup.Errors
import GHCup.Platform
import GHCup.Utils.Dirs
import GHCup.Prelude.Logger
import GHCup.Types.JSON ( )
import Control.Exception ( displayException )
import Control.Monad.Trans.Reader ( runReaderT )
import Control.Monad.IO.Class
import Data.Char ( toLower )
import Data.Maybe
#if !MIN_VERSION_base(4,13,0)
import Data.Semigroup ( (<>) )
#endif
import Options.Applicative hiding ( style )
import Haskus.Utils.Variant.Excepts
import System.Console.Pretty
import System.Environment
import System.Exit
import System.IO ( stderr )
import Text.Regex.Posix
import Generate
import Validate
import Text.PrettyPrint.HughesPJClass ( prettyShow )
import qualified Data.Text.IO as T
import qualified Data.Text as T
import qualified Data.ByteString as B
import qualified Data.Yaml.Aeson as Y
data Options = Options
{ optCommand :: Command
}
formatParser :: Parser Format
formatParser =
option
(eitherReader formatP)
(long "format" <> metavar "FORMAT" <> help
"Which format to use (JSON | YAML). Yaml is default."
<> value FormatJSON
)
where
formatP :: String -> Either String Format
formatP s' | t == T.pack "json" = Right FormatJSON
| t == T.pack "yaml" = Right FormatYAML
| t == T.pack "yml" = Right FormatYAML
| otherwise = Left ("Unknown format value: " <> s')
where t = T.toLower (T.pack s')
data Command = ValidateYAML ValidateYAMLOpts
| ValidateTarballs ValidateYAMLOpts TarballFilter
| GenerateHlsGhc ValidateYAMLOpts Format Output
| GenerateToolTable ValidateYAMLOpts Output
| GenerateSystemDepsInfo ValidateYAMLOpts Output
fileOutput :: Parser Output
fileOutput =
FileOutput
<$> strOption
(long "output-file" <> short 'o' <> metavar "FILENAME" <> help
"Output file to write to"
)
stdOutput :: Parser Output
stdOutput = flag'
StdOut
(short 'o' <> long "stdout" <> help "Output to stdout (default)")
outputP :: Parser Output
outputP = fileOutput <|> stdOutput
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 ValidateYAMLOpts = ValidateYAMLOpts
{ vChannel :: DistributionChannel
, vInput :: Maybe Input
}
validateYAMLOpts :: Parser ValidateYAMLOpts
validateYAMLOpts = ValidateYAMLOpts <$> channelParser <*> optional inputP
channelParser :: Parser DistributionChannel
channelParser =
option
(eitherReader chanP)
(long "channel" <> metavar "CHANNEL" <> help
"Signal which distribution channel the YAML denotes: (main | prerelease | nightly). Main is defaul."
<> value MainChan
)
where
chanP :: String -> Either String DistributionChannel
chanP s' | t == T.pack "main" = Right MainChan
| t == T.pack "prerelease" = Right PrereleaseChan
| t == T.pack "prereleases" = Right PrereleaseChan
| t == T.pack "nightly" = Right NightlyChan
| t == T.pack "nightlies" = Right NightlyChan
| otherwise = Left ("Unknown channel value: " <> s')
where t = T.toLower (T.pack s')
tarballFilterP :: Parser TarballFilter
tarballFilterP = option readm $
long "tarball-filter" <> short 'u' <> metavar "<tool>-<version>" <> value def
<> help "Only check certain tarballs (format: <tool>-<version>)"
where
def = TarballFilter (Right Nothing) (makeRegex ("" :: String))
readm = do
s <- str
case span (/= '-') s of
(_, []) -> fail "invalid format, missing '-' after the tool name"
(t, v) | [tool] <- [ tool | tool <- [minBound..maxBound], low (show tool) == low t ] ->
pure (TarballFilter $ Right $ Just tool) <*> makeRegexOptsM compIgnoreCase execBlank (drop 1 v)
(t, v) | [tool] <- [ tool | tool <- [minBound..maxBound], low (show tool) == low t ] ->
pure (TarballFilter $ Left tool) <*> makeRegexOptsM compIgnoreCase execBlank (drop 1 v)
_ -> fail "invalid tool"
low = fmap toLower
opts :: Parser Options
opts = Options <$> com
com :: Parser Command
com = subparser
( command
"check"
( ValidateYAML
<$> info (validateYAMLOpts <**> helper)
(progDesc "Validate the YAML")
)
<> command
"check-tarballs"
(info
((ValidateTarballs <$> validateYAMLOpts <*> tarballFilterP) <**> helper)
(progDesc "Validate all tarballs (download and checksum)")
)
<> command
"generate-hls-ghcs"
(info
((GenerateHlsGhc <$> validateYAMLOpts <*> formatParser <*> outputP) <**> helper)
(progDesc "Generate a list of HLS-GHC support")
)
<> command
"generate-tool-table"
(info
((GenerateToolTable <$> validateYAMLOpts <*> outputP) <**> helper)
(progDesc "Generate a markdown table of available tool versions")
)
<> command
"generate-system-deps-info"
(info
((GenerateSystemDepsInfo <$> validateYAMLOpts <*> outputP) <**> helper)
(progDesc "Generate a markdown info for system dependencies")
)
)
main :: IO ()
main = do
no_color <- isJust <$> lookupEnv "NO_COLOR"
let loggerConfig = LoggerConfig { lcPrintDebug = True
, consoleOutter = T.hPutStr stderr
, fileOutter = \_ -> pure ()
, fancyColors = not no_color
}
dirs <- liftIO getAllDirs
let leanAppstate = LeanAppState (Settings True 0 Lax False Never Curl True GHCupURL False GPGNone True Nothing (DM mempty)) dirs defaultKeyBindings loggerConfig
pfreq <- (
flip runReaderT leanAppstate . runE @'[NoCompatiblePlatform, NoCompatibleArch, DistroNotFound] $ platformRequest
) >>= \case
VRight r -> pure r
VLeft e -> do
flip runReaderT leanAppstate $ logError $ T.pack $ prettyShow e
liftIO $ exitWith (ExitFailure 2)
let appstate = AppState (Settings True 0 Lax False Never Curl True GHCupURL False GPGNone True Nothing (DM mempty)) dirs defaultKeyBindings (GHCupInfo mempty mempty mempty) pfreq loggerConfig
let withValidateYamlOpts vopts f = case vopts of
ValidateYAMLOpts { vInput = Nothing } ->
B.getContents >>= valAndExit f
ValidateYAMLOpts { vInput = Just StdInput } ->
B.getContents >>= valAndExit f
ValidateYAMLOpts { vInput = Just (FileInput file) } ->
B.readFile file >>= valAndExit f
valAndExit f contents = do
ginfo <- case Y.decodeEither' contents of
Right r -> pure r
Left e -> die (color Red $ displayException e)
r <- flip runReaderT appstate { ghcupInfo = ginfo } f
exitWith r
_ <- customExecParser (prefs showHelpOnError) (info (opts <**> helper) idm)
>>= \Options {..} -> case optCommand of
ValidateYAML vopts@ValidateYAMLOpts{ .. } -> withValidateYamlOpts vopts (validate vChannel)
ValidateTarballs vopts tarballFilter -> withValidateYamlOpts vopts (validateTarballs tarballFilter)
GenerateHlsGhc vopts format output -> withValidateYamlOpts vopts (generateHLSGhc format output)
GenerateToolTable vopts output -> withValidateYamlOpts vopts (generateTable output)
GenerateSystemDepsInfo vopts output -> withValidateYamlOpts vopts (generateSystemInfoWithDistroVersion output)
pure ()
where

316
ghcup-gen/Validate.hs Normal file
View File

@@ -0,0 +1,316 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
module Validate where
import GHCup
import GHCup.Download
import GHCup.Errors
import GHCup.Types
import GHCup.Types.Optics
import GHCup.Utils
import GHCup.Prelude.Logger
import GHCup.Prelude.Version.QQ
import Codec.Archive
import Control.Applicative
import Control.Exception.Safe
import Control.Monad
import Control.Monad.IO.Class
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.Containers.ListUtils ( nubOrd )
import Data.IORef
import Data.List
import Data.Versions
import Haskus.Utils.Variant.Excepts
import Optics
import System.FilePath
import System.Exit
import Text.ParserCombinators.ReadP
import Text.PrettyPrint.HughesPJClass ( prettyShow )
import Text.Regex.Posix
import qualified Data.Map.Strict as M
import qualified Data.Text as T
import qualified Data.Version as V
data ValidationError = InternalError String
deriving Show
instance Exception ValidationError
data DistributionChannel = MainChan
| PrereleaseChan
| NightlyChan
deriving (Show, Eq)
addError :: (MonadReader (IORef Int) m, MonadIO m, Monad m) => m ()
addError = do
ref <- ask
liftIO $ modifyIORef ref (+ 1)
validate :: ( Monad m
, MonadReader env m
, HasLog env
, MonadThrow m
, MonadIO m
, MonadUnliftIO m
, HasGHCupInfo env
)
=> DistributionChannel
-> m ExitCode
validate distroChannel = do
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
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 (_tvVersion v) (_viTags vi) arch (M.keys pspecs)
checkGHCVerIsValid
forM_ (M.toList dls) $ \(t, _) -> checkMandatoryTags t
_ <- checkGHCHasBaseVersion
-- exit
e <- liftIO $ readIORef ref
if e > 0
then pure $ ExitFailure e
else do
lift $ logInfo "All good"
pure ExitSuccess
where
checkHasRequiredPlatforms t v tags arch pspecs
-- relax requirements for prerelease and nightly channels
| distroChannel `elem` [PrereleaseChan, NightlyChan] = pure ()
| otherwise = do
let v' = prettyVer v
arch' = prettyShow arch
when (Linux UnknownLinux `notElem` pspecs) $ do
lift $ logError $
"Linux UnknownLinux missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
addError
when ((Darwin `notElem` pspecs) && arch == A_64) $ do
lift $ logError $ "Darwin missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
addError
when ((FreeBSD `notElem` pspecs) && arch == A_64) $ lift $ logWarn $
"FreeBSD missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
when (Windows `notElem` pspecs && arch == A_64) $ do
lift $ logError $ "Windows missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
addError
-- alpine needs to be set explicitly, because
-- we cannot assume that "Linux UnknownLinux" runs on Alpine
-- (although it could be static)
when (Linux Alpine `notElem` pspecs) $
case t of
GHCup | arch `elem` [A_64, A_32] -> lift (logError $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch)) >> addError
Cabal | v > [vver|2.4.1.0|]
, arch `elem` [A_64, A_32] -> lift (logError $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch)) >> addError
GHC | Latest `elem` tags || Recommended `elem` tags
, arch `elem` [A_64, A_32] -> lift (logError $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch))
_ -> lift $ logWarn $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch)
checkUniqueTags tool = do
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
let allTags = _viTags =<< M.elems (availableToolVersions dls tool)
let nonUnique =
fmap fst
. filter (\(_, b) -> not b)
<$> ( mapM
(\case
[] -> throwM $ InternalError "empty inner list"
(t : ts) ->
pure $ (t, ) (not (isUniqueTag t) || null ts)
)
. group
. sort
$ allTags
)
case join nonUnique of
[] -> pure ()
xs -> do
lift $ logError $ "Tags not unique for " <> T.pack (prettyShow tool) <> ": " <> T.pack (prettyShow xs)
addError
where
isUniqueTag Latest = True
isUniqueTag Recommended = True
isUniqueTag Old = False
isUniqueTag Prerelease = False
isUniqueTag LatestPrerelease = True
isUniqueTag Nightly = False
isUniqueTag LatestNightly = True
isUniqueTag (Base _) = False
isUniqueTag (UnknownTag _) = False
checkGHCVerIsValid = do
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
let ghcVers = toListOf (ix GHC % to M.keys % to (map _tvVersion) % folded) dls
forM_ ghcVers $ \v ->
case [ x | (x,"") <- readP_to_S V.parseVersion (T.unpack . prettyVer $ v) ] of
[_] -> pure ()
_ -> do
lift $ logError $ "GHC version " <> prettyVer v <> " is not valid"
addError
-- a tool must have at least one of each mandatory tags
checkMandatoryTags tool = do
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
let allTags = _viTags =<< M.elems (availableToolVersions dls tool)
forM_ (mandatoryTags tool) $ \t -> case t `elem` allTags of
False -> do
lift $ logError $ "Tag " <> T.pack (prettyShow t) <> " missing from " <> T.pack (prettyShow tool)
addError
True -> pure ()
mandatoryTags tool
-- due to a quirk, even for ghcup prereleases we need the 'latest' tag
-- https://github.com/haskell/ghcup-hs/issues/891
| tool == GHCup = [Latest, Recommended]
| otherwise = case distroChannel of
MainChan -> [Latest, Recommended]
PrereleaseChan -> [LatestPrerelease]
NightlyChan -> [LatestNightly]
-- all GHC versions must have a base tag
checkGHCHasBaseVersion = do
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
let allTags = M.toList $ availableToolVersions dls GHC
forM allTags $ \(ver, _viTags -> tags) -> case any isBase tags of
False -> do
lift $ logError $ "Base tag missing from GHC ver " <> prettyVer (_tvVersion ver)
addError
True -> pure ()
isBase (Base _) = True
isBase _ = False
data TarballFilter = TarballFilter
{ tfTool :: Either GlobalTool (Maybe Tool)
, tfVersion :: Regex
}
validateTarballs :: ( Monad m
, MonadReader env m
, HasLog env
, HasDirs env
, HasSettings env
, MonadThrow m
, MonadIO m
, MonadUnliftIO m
, MonadMask m
, Alternative m
, MonadFail m
, HasGHCupInfo env
)
=> TarballFilter
-> m ExitCode
validateTarballs (TarballFilter etool versionRegex) = do
GHCupInfo { _ghcupDownloads = dls, _globalTools = gt } <- getGHCupInfo
ref <- liftIO $ newIORef 0
-- download/verify all tarballs
let dlis = either (const []) (\tool -> nubOrd $ dls ^.. each %& indices (maybe (const True) (==) tool)
%> each %& indices (matchTest versionRegex . T.unpack . prettyVer . _tvVersion)
% (viTestDL % _Just `summing` viSourceDL % _Just `summing` viArch % each % each % each)
)
etool
let gdlis = nubOrd $ gt ^.. each
let allDls = either (const gdlis) (const dlis) etool
when (null allDls) $ logError "no tarballs selected by filter" *> runReaderT addError ref
forM_ allDls (downloadAll ref)
-- exit
e <- liftIO $ readIORef ref
if e > 0
then pure $ ExitFailure e
else do
logInfo "All good"
pure ExitSuccess
where
downloadAll :: ( MonadUnliftIO m
, MonadIO m
, MonadReader env m
, HasLog env
, HasDirs env
, HasSettings env
, MonadCatch m
, MonadMask m
, MonadThrow m
)
=> IORef Int
-> DownloadInfo
-> m ()
downloadAll ref dli = do
r <- runResourceT
. runE @'[DigestError
, GPGError
, DownloadFailed
, UnknownArchive
, ArchiveResult
, ContentLengthError
]
$ do
case etool of
Right (Just GHCup) -> do
tmpUnpack <- lift mkGhcupTmpDir
_ <- liftE $ download (_dlUri dli) Nothing (Just (_dlHash dli)) Nothing (fromGHCupPath tmpUnpack) Nothing False
pure Nothing
Right _ -> do
p <- liftE $ downloadCached dli Nothing
fmap Just $ liftE
. getArchiveFiles
$ p
Left ShimGen -> do
tmpUnpack <- lift mkGhcupTmpDir
_ <- liftE $ download (_dlUri dli) Nothing (Just (_dlHash dli)) Nothing (fromGHCupPath tmpUnpack) Nothing False
pure Nothing
case r of
VRight (Just entries) -> do
case _dlSubdir dli of
Just (RealDir prel) -> do
logInfo
$ " verifying subdir: " <> T.pack prel
when (normalise prel `notElem` fmap (normalise . takeDirectory) entries) $ do
logError $
"Subdir doesn't match: expected " <> T.pack prel
runReaderT addError ref
Just (RegexDir regexString) -> do
logInfo $
"verifying subdir (regex): " <> T.pack regexString
let regex = makeRegexOpts
compIgnoreCase
execBlank
regexString
unless (or $ fmap (match regex. normalise) entries) $ do
logError $
"Subdir doesn't match: expected regex " <> T.pack regexString
runReaderT addError ref
Nothing -> pure ()
VRight Nothing -> pure ()
VLeft e -> do
logError $
"Could not download (or verify hash) of " <> T.pack (show dli) <> ", Error was: " <> T.pack (prettyShow e)
runReaderT addError ref

69
ghcup-gen/ghcup-gen.cabal Normal file
View File

@@ -0,0 +1,69 @@
cabal-version: 3.0
name: ghcup-gen
version: 0.1.17.3
license: LGPL-3.0-only
license-file: LICENSE
copyright: Julian Ospald 2020
maintainer: hasufell@posteo.de
author: Julian Ospald
homepage: https://github.com/haskell/ghcup-metadata
bug-reports: https://github.com/haskell/ghcup-metadata/issues
synopsis: ghcup-gen dev tool
description: Dev tool for handling ghcup metadata
category: System
build-type: Simple
extra-doc-files:
CHANGELOG.md
source-repository head
type: git
location: https://github.com/haskell/ghcup-metadata.git
executable ghcup-gen
main-is: Main.hs
other-modules: Validate
Generate
default-language: Haskell2010
default-extensions:
DeriveGeneric
LambdaCase
MultiWayIf
NamedFieldPuns
PackageImports
QuasiQuotes
RecordWildCards
ScopedTypeVariables
StrictData
TupleSections
TypeApplications
TypeFamilies
ViewPatterns
ghc-options:
-Wall -fwarn-tabs -fwarn-incomplete-uni-patterns
-fwarn-incomplete-record-updates -threaded
build-depends:
, aeson-pretty ^>=0.8.9
, base >=4.13 && <5
, bytestring ^>=0.11
, containers ^>=0.6
, deepseq ^>=1.4
, filepath ^>=1.4.2.1
, ghcup ^>=0.1.19.0
, haskus-utils-variant ^>=3.2
, libarchive ^>=3.0.3.0
, megaparsec >=8.0.0 && <9.3
, mtl ^>=2.2
, optics ^>=0.4
, optparse-applicative >=0.15.1.0 && <0.17
, pretty ^>=1.1.3.1
, pretty-terminal ^>=0.1.0.0
, regex-posix ^>=0.96
, resourcet ^>=1.2.2
, safe-exceptions ^>=0.1
, text ^>=2.0
, transformers ^>=0.5
, versions >=4.0.1 && <5.1
, yaml-streamly ^>=0.12.0

1581
ghcup-prereleases-0.0.7.yaml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

5868
ghcup-vanilla-0.0.7.yaml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

5868
ghcup-vanilla-0.0.8.yaml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

1435
hls-metadata-0.0.1.json Normal file

File diff suppressed because it is too large Load Diff

BIN
hls-metadata-0.0.1.json.sig Normal file

Binary file not shown.