Skip to content

Commit

Permalink
Simplify CI workflow to standard haskell-ci workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
sgraf812 committed Jul 15, 2024
1 parent fa06571 commit 29818c3
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 56 deletions.
5 changes: 1 addition & 4 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ jobs:
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
HCDIR=/opt/$HCKIND/$HCVER
HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
echo "$HOME/.ghcup/bin" >> "$GITHUB_PATH"
HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
echo "HC=$HC" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -263,9 +262,7 @@ jobs:
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
- name: tests
run: |
export HAPPY=$HOME/.cabal/bin/happy
export HC
export CABAL
export HAPPY=$($CABAL list-bin happy)
$CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
- name: cabal check
run: |
Expand Down
52 changes: 2 additions & 50 deletions DEVELOPER.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,57 +3,9 @@ This document holds some useful information for developing Happy.
CI on GitHub Actions
====================

2021-07-14
2024-07-15
----------

The GHC workflow file `.github/workflows/haskell-ci.yml` is generated by:

haskell-ci regenerate
patch --input=.github/haskell-ci.patch .github/workflows/haskell-ci.yml

The patch introduces happy specifics to the build and test process that
are not covered by a vanilla instance of the haskell-ci workflow.

When new GHC versions become available, CI can be updated by

- adding these versions to the `tested-with` field in `happy.cabal`
(possibly removing obsolete minor versions)

- generate the `haskell-ci.yml` by the steps above.

This should work as long as `haskell-ci` does not change its generated
workflow too much. Otherwise, the patch might not apply cleanly and
the workflow has to be patched manually.

2023-02-06 Updating to a new version of Haskell-CI
--------------------------------------------------

1. Install Haskell-CI from its source repo:

pushd /tmp
git clone https://github.com/haskell-CI/haskell-ci.git
cd haskell-ci
cabal install
popd

2. Update the `tested-with` fields in the `.cabal` files.

3. Follow the instructions to regenerate the Haskell CI workflow, which are:

haskell-ci regenerate
patch --input=.github/haskell-ci.patch .github/workflows/haskell-ci.yml

If some hunks fail to apply in the last step, the patch as to be updated.

4. Apply the remaining hunks manually.

5. Save the patched workflow, regenerate the original workflow, regenerate the patch

cp .github/workflows/haskell-ci.yml .github/workflows/haskell-ci.yml-patched
haskell-ci regenerate
diff -u .github/workflows/haskell-ci.yml .github/workflows/haskell-ci.yml-patched > .github/haskell-ci.patch

6. Now the patch will apply cleanly.

patch --input=.github/haskell-ci.patch .github/workflows/haskell-ci.yml

7. Commit the updated files (no extra files need to be committed).
4 changes: 2 additions & 2 deletions tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
# [2021-07-14, PR #196](https://github.com/haskell/happy/pull/196)
#
ifndef HAPPY
HAPPY=$(shell which happy)
HAPPY=$(shell cabal list-bin happy)
ifeq "$(filter $(dir $(shell pwd))%,$(HAPPY))" ""
HAPPY=../dist/build/happy/happy
$(error Environment variable $$HAPPY not set and `cabal list-bin happy` did not succeed. Cannot run testsuite.)
endif
endif

Expand Down

0 comments on commit 29818c3

Please sign in to comment.