From 192c0da8312d68f7c1286b6cdad6e3016d911d75 Mon Sep 17 00:00:00 2001
From: Tomas Janousek <tomi@nomi.cz>
Date: Sun, 12 Nov 2023 23:34:53 +0000
Subject: [PATCH] ci: Only build haddock for hackage with the latest GHC

Cabal 3.10.2.0 exposes a bug in Haddock shipped with GHC 9.0 and 9.2, so
we need to work around it by bumping the version of GHC/Haddock we use
for building/uploading docs to Hackage, and to prevent build failures we
don't ever try to build haddocks for Hackage with older versions of
GHC/Haddock.

Related: https://github.com/haskell/haddock/issues/1582#issuecomment-1611412223
Related: https://github.com/haskell/cabal/issues/8326
Related: https://github.com/haskell/cabal/issues/9060
Related: https://github.com/haskell/cabal/pull/9073
Related: https://github.com/haskell/cabal/pull/9049
---
 .github/workflows/haskell-ci-hackage.patch | 18 ++++++++++--------
 .github/workflows/haskell-ci.yml           |  6 +++++-
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/haskell-ci-hackage.patch b/.github/workflows/haskell-ci-hackage.patch
index af35032696..34d1cdf625 100644
--- a/.github/workflows/haskell-ci-hackage.patch
+++ b/.github/workflows/haskell-ci-hackage.patch
@@ -37,24 +37,26 @@ set in GitHub repository secrets.
  jobs:
    linux:
      name: Haskell-CI - Linux - ${{ matrix.compiler }}
-@@ -31,6 +38,7 @@
-             compilerVersion: 9.0.2
+@@ -33,6 +40,7 @@
+             compilerVersion: 9.8.1
              setup-method: ghcup
              allow-failure: false
 +            upload: true
-           - compiler: ghc-8.10.7
+           - compiler: ghc-9.6.3
              compilerKind: ghc
-             compilerVersion: 8.10.7
-@@ -237,7 +237,7 @@
-           ${CABAL} -vnormal check
+             compilerVersion: 9.6.3
+@@ -257,6 +265,10 @@
        - name: haddock
          run: |
--          $CABAL v2-haddock --disable-documentation $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
+           $CABAL v2-haddock --disable-documentation $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
++      - name: haddock for hackage
++        if: matrix.upload
++        run: |
 +          $CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH --haddock-for-hackage --builddir $GITHUB_WORKSPACE/haddock all
        - name: unconstrained build
          run: |
            rm -f cabal.project.local
-@@ -248,3 +248,75 @@
+@@ -267,3 +279,75 @@
          with:
            key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
            path: ~/.cabal/store
diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml
index a10d68eccb..5605f90ae9 100644
--- a/.github/workflows/haskell-ci.yml
+++ b/.github/workflows/haskell-ci.yml
@@ -40,6 +40,7 @@ jobs:
             compilerVersion: 9.8.1
             setup-method: ghcup
             allow-failure: false
+            upload: true
           - compiler: ghc-9.6.3
             compilerKind: ghc
             compilerVersion: 9.6.3
@@ -60,7 +61,6 @@ jobs:
             compilerVersion: 9.0.2
             setup-method: ghcup
             allow-failure: false
-            upload: true
           - compiler: ghc-8.10.7
             compilerKind: ghc
             compilerVersion: 8.10.7
@@ -251,6 +251,10 @@ jobs:
           cd ${PKGDIR_xmonad_contrib} || false
           ${CABAL} -vnormal check
       - name: haddock
+        run: |
+          $CABAL v2-haddock --disable-documentation $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
+      - name: haddock for hackage
+        if: matrix.upload
         run: |
           $CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH --haddock-for-hackage --builddir $GITHUB_WORKSPACE/haddock all
       - name: unconstrained build