-
Notifications
You must be signed in to change notification settings - Fork 74
Missing GHC 8.10.4 #474
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I wonder if we should do something similar to what |
Well, I hope that hvr will soon make GHC-8.10.4 and GHC-9.0.1 into his ppa. I'm not keen maintaining separate installations methods in CI setup. If ppa becomes unmaintained, I'd rather then drop it completely in favor of |
BTW, I cannot find which GHC versions ghcup supports. Does anyone know where to look for them? |
Here is what
As far as I can tell, this information is scraped from this file. |
So GHC-7.10.3 is the oldest. Well, that is not that bad. |
An option would be to have either EDIT: because when haskell-ci is updated the GHC may be installed differently. That shouldn't matter, but if it does, that would be a head scratcher. |
👍 for supporting GHC installation via |
I'm not sure that we need to go that far. Why not have the ability to specify certain sources for particular GHC versions? I'm thinking of something like this: strategy:
matrix:
include:
- ghc: 9.0.1
source: ghcup
- ghc: 8.10.4
source: ghcup
...
- ghc: 7.0.4
source: ppa This would address your concern about the version of GHC mysteriously changing when This will become even more important in a world where |
@RyanGlScott recall, the workflow file is generated completely from So one would need to specify which versions of GHC comes from ghcup in I'm not particularly excited to have to maintain two lists of GHC versions: which are available in hvr-ppa and which in ghcup. Have anyone tried to contact Herbert about the future of his PPA? If its future is unclear, then I'm ready (though unhappy) to pull the plug on pre-GHC-7.10.3 releases. Herberts PPA is afaik the only sane way to get these ancient releases to work on modern Ubuntus. |
Does anyone know whether |
If you want to use different sources for different versions of GHC, then yes. For many projects, I could imagine just having
I worry that if we don't have the ability to specify multiple sources, then we'll end up in a situation where it becomes impossible to maintain a working CI setup for projects like |
An alternative is to trust |
is it? Maybe it should have manual CI setup then. Why make |
Yes.
To be clear, I recognize the fact that most packages will only use the latest versions of GHC, and that configurations like What I'm trying to avoid is a situation where |
I feel I'm not understood. So I'll wait for a concrete implementation, maybe it will make it easier for me to comment. |
I'm somewhat afraid to dive into implementing this, as we don't appear to agree on a specification for this feature yet. As I understand it, there are two competing proposals being discussed here:
Each option would also have a default source in the event that not enough information is provided via the command-line flags. My personal preference is towards proposal (2), as it makes it possible to support pre-7.10 versions of GHC out of the box with In light of this, I'm slowly coming around to the idea of proposal (1), as long as there is a way that I can somewhat straightforwardly patch a
The first part should be straightforward. The second part is what I'm worried about. Is |
Here is a basic proof-of-concept diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml
index b356f14..9457fc3 100644
--- a/.github/workflows/haskell-ci.yml
+++ b/.github/workflows/haskell-ci.yml
@@ -26,19 +26,28 @@ jobs:
strategy:
matrix:
include:
- - ghc: 8.10.3
+ - ghc: 8.10.4
allow-failure: false
+ ghc-source: ghcup
- ghc: 8.8.4
allow-failure: false
+ ghc-source: ppa
fail-fast: false
steps:
- name: apt
run: |
apt-get update
- apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common
- apt-add-repository -y 'ppa:hvr/ghc'
- apt-get update
- apt-get install -y ghc-$GHC_VERSION cabal-install-3.2
+ apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libnuma-dev
+ if [ "${{ matrix.ghc-source }}" = "ghcup" ]; then
+ curl -sL https://downloads.haskell.org/ghcup/0.1.12/x86_64-linux-ghcup-0.1.12 > ghcup
+ chmod a+x ghcup
+ ./ghcup install ghc $GHC_VERSION
+ ./ghcup install cabal 3.2.0.0
+ else
+ apt-add-repository -y 'ppa:hvr/ghc'
+ apt-get update
+ apt-get install -y ghc-$GHC_VERSION cabal-install-3.2
+ fi
env:
GHC_VERSION: ${{ matrix.ghc }}
- name: Set PATH and environment variables
@@ -47,17 +56,25 @@ jobs:
echo "LANG=C.UTF-8" >> $GITHUB_ENV
echo "CABAL_DIR=$HOME/.cabal" >> $GITHUB_ENV
echo "CABAL_CONFIG=$HOME/.cabal/config" >> $GITHUB_ENV
- HC=/opt/ghc/$GHC_VERSION/bin/ghc
- echo "HC=$HC" >> $GITHUB_ENV
- echo "HCPKG=/opt/ghc/$GHC_VERSION/bin/ghc-pkg" >> $GITHUB_ENV
- echo "HADDOCK=/opt/ghc/$GHC_VERSION/bin/haddock" >> $GITHUB_ENV
- echo "CABAL=/opt/cabal/3.2/bin/cabal -vnormal+nowrap" >> $GITHUB_ENV
+ if [ "${{ matrix.ghc-source }}" = "ghcup" ]; then
+ HC=$HOME/.ghcup/bin/ghc-$GHC_VERSION
+ echo "HC=$HC" >> $GITHUB_ENV
+ echo "HCPKG=$HOME/.ghcup/bin/ghc-pkg-$GHC_VERSION" >> $GITHUB_ENV
+ echo "HADDOCK=$HOME/.ghcup/bin/haddock-$GHC_VERSION" >> $GITHUB_ENV
+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.2.0.0 -vnormal+nowrap" >> $GITHUB_ENV
+ else
+ HC=/opt/ghc/$GHC_VERSION/bin/ghc
+ echo "HC=$HC" >> $GITHUB_ENV
+ echo "HCPKG=/opt/ghc/$GHC_VERSION/bin/ghc-pkg" >> $GITHUB_ENV
+ echo "HADDOCK=/opt/ghc/$GHC_VERSION/bin/haddock" >> $GITHUB_ENV
+ echo "CABAL=/opt/cabal/3.2/bin/cabal -vnormal+nowrap" >> $GITHUB_ENV
+ fi
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
echo "HCNUMVER=$HCNUMVER" >> $GITHUB_ENV
echo "ARG_TESTS=--enable-tests" >> $GITHUB_ENV
echo "ARG_BENCH=--enable-benchmarks" >> $GITHUB_ENV
echo "HEADHACKAGE=false" >> $GITHUB_ENV
- echo "ARG_COMPILER=--ghc --with-compiler=/opt/ghc/$GHC_VERSION/bin/ghc" >> $GITHUB_ENV
+ echo "ARG_COMPILER=--ghc --with-compiler=$HC" >> $GITHUB_ENV
echo "GHCJSARITH=0" >> $GITHUB_ENV
env:
GHC_VERSION: ${{ matrix.ghc }} Overall, the changes are not quite as invasive as I had feared, as they're mostly confined to two particular steps. In fact, I could confine the changes needed for the (Note that I needed to explicitly install |
This is in preparation for some changes that require GHC 9.0 as the minimum GHC version. See #439. This requires some hacky _post hoc_ patching of the `haskell-ci`–generated GitHub Actions YAML file in order to work around haskell-CI/haskell-ci#474.
This is in preparation for some changes that require GHC 9.0 as the minimum GHC version. See #439. This requires some hacky _post hoc_ patching of the `haskell-ci`–generated GitHub Actions YAML file in order to work around haskell-CI/haskell-ci#474.
Resolved by #481 for now. |
GHC 8.10.4 is missing from https://launchpad.net/~hvr/+archive/ubuntu/ghc.
Blocking agda/agda#5185.
The text was updated successfully, but these errors were encountered: