From b05ee20efd6345c0c7ae6470ffa3e67710196fc4 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Fri, 28 Mar 2025 20:44:26 -0700 Subject: [PATCH 1/2] Update CI script --- .github/workflows/haskell-ci.yml | 196 ++++++++++++++++++------------- 1 file changed, 114 insertions(+), 82 deletions(-) diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml index bcc5ec6a..a222c0fb 100644 --- a/.github/workflows/haskell-ci.yml +++ b/.github/workflows/haskell-ci.yml @@ -8,9 +8,9 @@ # # For more information, see https://github.com/haskell-CI/haskell-ci # -# version: 0.17.20231203 +# version: 0.19.20250327 # -# REGENDATA ("0.17.20231203",["github","--distribution","jammy","--jobs-selection","any","--submodules","cabal.project"]) +# REGENDATA ("0.19.20250327",["github","--distribution","jammy","--jobs-selection","any","--submodules","cabal.project"]) # name: Haskell-CI on: @@ -19,7 +19,7 @@ on: jobs: linux: name: Haskell-CI - Linux - ${{ matrix.compiler }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 timeout-minutes: 60 container: @@ -28,42 +28,96 @@ jobs: strategy: matrix: include: + - compiler: ghc-9.10.1 + compilerKind: ghc + compilerVersion: 9.10.1 + setup-method: ghcup + allow-failure: false - compiler: ghc-9.8.2 compilerKind: ghc compilerVersion: 9.8.2 setup-method: ghcup allow-failure: false + - compiler: ghc-9.6.6 + compilerKind: ghc + compilerVersion: 9.6.6 + setup-method: ghcup + allow-failure: false - compiler: ghc-9.4.8 compilerKind: ghc compilerVersion: 9.4.8 setup-method: ghcup allow-failure: false + - compiler: ghc-9.2.8 + compilerKind: ghc + compilerVersion: 9.2.8 + setup-method: ghcup + allow-failure: false - compiler: ghc-9.0.2 compilerKind: ghc compilerVersion: 9.0.2 setup-method: ghcup allow-failure: false + - compiler: ghc-8.10.7 + compilerKind: ghc + compilerVersion: 8.10.7 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.10.2 + compilerKind: ghc + compilerVersion: 8.10.2 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.8.4 + compilerKind: ghc + compilerVersion: 8.8.4 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.6.5 + compilerKind: ghc + compilerVersion: 8.6.5 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.4.4 + compilerKind: ghc + compilerVersion: 8.4.4 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.2.2 + compilerKind: ghc + compilerVersion: 8.2.2 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.0.2 + compilerKind: ghc + compilerVersion: 8.0.2 + setup-method: ghcup + allow-failure: false fail-fast: false steps: - - name: apt + - name: apt-get install run: | apt-get update - apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 - if [ "${{ matrix.setup-method }}" = ghcup ]; then - mkdir -p "$HOME/.ghcup/bin" - curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup" - chmod a+x "$HOME/.ghcup/bin/ghcup" - "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false) - "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false) - else - apt-add-repository -y 'ppa:hvr/ghc' - apt-get update - apt-get install -y "$HCNAME" - mkdir -p "$HOME/.ghcup/bin" - curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup" - chmod a+x "$HOME/.ghcup/bin/ghcup" - "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false) - fi + apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 libnuma-dev + - name: Install GHCup + run: | + mkdir -p "$HOME/.ghcup/bin" + curl -sL https://downloads.haskell.org/ghcup/0.1.50.1/x86_64-linux-ghcup-0.1.50.1 > "$HOME/.ghcup/bin/ghcup" + chmod a+x "$HOME/.ghcup/bin/ghcup" + - name: Install cabal-install + run: | + "$HOME/.ghcup/bin/ghcup" install cabal 3.12.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false) + echo "CABAL=$HOME/.ghcup/bin/cabal-3.12.1.0 -vnormal+nowrap" >> "$GITHUB_ENV" + - name: Install GHC (GHCup) + if: matrix.setup-method == 'ghcup' + run: | + "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false) + HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER") + HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#') + HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#') + echo "HC=$HC" >> "$GITHUB_ENV" + echo "HCPKG=$HCPKG" >> "$GITHUB_ENV" + echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV" env: HCKIND: ${{ matrix.compilerKind }} HCNAME: ${{ matrix.compiler }} @@ -74,30 +128,12 @@ jobs: echo "LANG=C.UTF-8" >> "$GITHUB_ENV" echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV" echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV" - HCDIR=/opt/$HCKIND/$HCVER - if [ "${{ matrix.setup-method }}" = ghcup ]; then - HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER") - HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#') - HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#') - echo "HC=$HC" >> "$GITHUB_ENV" - echo "HCPKG=$HCPKG" >> "$GITHUB_ENV" - echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV" - echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV" - else - HC=$HCDIR/bin/$HCKIND - echo "HC=$HC" >> "$GITHUB_ENV" - echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV" - echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV" - echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -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=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" - echo "GHCJSARITH=0" >> "$GITHUB_ENV" env: HCKIND: ${{ matrix.compilerKind }} HCNAME: ${{ matrix.compiler }} @@ -147,19 +183,19 @@ jobs: chmod a+x $HOME/.cabal/bin/cabal-plan cabal-plan --version - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: source submodules: "true" - name: initial cabal.project for sdist run: | touch cabal.project - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/lib" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/hookup" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/bot" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/." >> cabal.project ; fi - if [ $((HCNUMVER < 90000)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/config-schema" >> cabal.project ; fi - if [ $((HCNUMVER < 90002)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/config-value" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/lib" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/hookup" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/bot" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/." >> cabal.project ; fi + if [ $((HCNUMVER < 81007)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/config-schema" >> cabal.project ; fi + if [ $((HCNUMVER >= 81007)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/config-value" >> cabal.project ; fi cat cabal.project - name: sdist run: | @@ -186,27 +222,27 @@ jobs: rm -f cabal.project cabal.project.local touch cabal.project touch cabal.project.local - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: ${PKGDIR_irc_core}" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: ${PKGDIR_hookup}" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: ${PKGDIR_irc_core_bot}" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "packages: ${PKGDIR_glirc}" >> cabal.project ; fi - if [ $((HCNUMVER < 90000)) -ne 0 ] ; then echo "packages: ${PKGDIR_config_schema}" >> cabal.project ; fi - if [ $((HCNUMVER < 90002)) -ne 0 ] ; then echo "packages: ${PKGDIR_config_value}" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "package irc-core" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "package hookup" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "package irc-core-bot" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo "package glirc" >> cabal.project ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi - if [ $((HCNUMVER >= 80200 && HCNUMVER < 90000)) -ne 0 ] ; then echo "package config-schema" >> cabal.project ; fi - if [ $((HCNUMVER >= 80200 && HCNUMVER < 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi - if [ $((HCNUMVER >= 80200 && HCNUMVER < 90002)) -ne 0 ] ; then echo "package config-value" >> cabal.project ; fi - if [ $((HCNUMVER >= 80200 && HCNUMVER < 90002)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: ${PKGDIR_irc_core}" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: ${PKGDIR_hookup}" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: ${PKGDIR_irc_core_bot}" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "packages: ${PKGDIR_glirc}" >> cabal.project ; fi + if [ $((HCNUMVER < 81007)) -ne 0 ] ; then echo "packages: ${PKGDIR_config_schema}" >> cabal.project ; fi + if [ $((HCNUMVER >= 81007)) -ne 0 ] ; then echo "packages: ${PKGDIR_config_value}" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "package irc-core" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "package hookup" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "package irc-core-bot" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo "package glirc" >> cabal.project ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi + if [ $((HCNUMVER >= 80200 && HCNUMVER < 81007)) -ne 0 ] ; then echo "package config-schema" >> cabal.project ; fi + if [ $((HCNUMVER >= 80200 && HCNUMVER < 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi + if [ $((HCNUMVER >= 81007)) -ne 0 ] ; then echo "package config-value" >> cabal.project ; fi + if [ $((HCNUMVER >= 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi cat >> cabal.project <> cabal.project.local + $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(config-schema|config-value|glirc|hookup|irc-core|irc-core-bot)$/; }' >> cabal.project.local cat cabal.project cat cabal.project.local - name: dump install plan @@ -214,15 +250,11 @@ jobs: $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all cabal-plan - name: restore cache - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} path: ~/.cabal/store restore-keys: ${{ runner.os }}-${{ matrix.compiler }}- - - name: install dependencies - run: | - $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all - $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all - name: build w/o tests run: | $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all @@ -234,25 +266,25 @@ jobs: $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct - name: cabal check run: | - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then cd ${PKGDIR_irc_core} || false ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then cd ${PKGDIR_hookup} || false ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then cd ${PKGDIR_irc_core_bot} || false ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then cd ${PKGDIR_glirc} || false ; fi - if [ $((HCNUMVER >= 90002)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_config_schema} || false ; fi - if [ $((HCNUMVER < 90000)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - if [ $((HCNUMVER < 90002)) -ne 0 ] ; then cd ${PKGDIR_config_value} || false ; fi - if [ $((HCNUMVER < 90002)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then cd ${PKGDIR_irc_core} || false ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then cd ${PKGDIR_hookup} || false ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then cd ${PKGDIR_irc_core_bot} || false ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then cd ${PKGDIR_glirc} || false ; fi + if [ $((HCNUMVER >= 90000 && HCNUMVER < 90200 || HCNUMVER >= 90400 && HCNUMVER < 90600 || HCNUMVER >= 90800 && HCNUMVER < 91000)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi + if [ $((HCNUMVER < 81007)) -ne 0 ] ; then cd ${PKGDIR_config_schema} || false ; fi + if [ $((HCNUMVER < 81007)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi + if [ $((HCNUMVER >= 81007)) -ne 0 ] ; then cd ${PKGDIR_config_value} || false ; fi + if [ $((HCNUMVER >= 81007)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi - name: unconstrained build run: | rm -f cabal.project.local $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all - name: save cache - uses: actions/cache/save@v3 if: always() + uses: actions/cache/save@v4 with: key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} path: ~/.cabal/store From 64130d2ccb0fd13ee2d18e1ef02c0644d77e3728 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Fri, 28 Mar 2025 17:37:33 -0700 Subject: [PATCH 2/2] Use newer autogenModules approach --- .github/workflows/haskell-ci.yml | 35 ------------------------ Setup.hs | 46 +++++++++++++++++++++----------- bot/irc-core-bot.cabal | 6 ++--- glirc.cabal | 10 ++++--- hookup/hookup.cabal | 2 +- 5 files changed, 41 insertions(+), 58 deletions(-) diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml index a222c0fb..3930b006 100644 --- a/.github/workflows/haskell-ci.yml +++ b/.github/workflows/haskell-ci.yml @@ -58,41 +58,6 @@ jobs: compilerVersion: 9.0.2 setup-method: ghcup allow-failure: false - - compiler: ghc-8.10.7 - compilerKind: ghc - compilerVersion: 8.10.7 - setup-method: ghcup - allow-failure: false - - compiler: ghc-8.10.2 - compilerKind: ghc - compilerVersion: 8.10.2 - setup-method: ghcup - allow-failure: false - - compiler: ghc-8.8.4 - compilerKind: ghc - compilerVersion: 8.8.4 - setup-method: ghcup - allow-failure: false - - compiler: ghc-8.6.5 - compilerKind: ghc - compilerVersion: 8.6.5 - setup-method: ghcup - allow-failure: false - - compiler: ghc-8.4.4 - compilerKind: ghc - compilerVersion: 8.4.4 - setup-method: ghcup - allow-failure: false - - compiler: ghc-8.2.2 - compilerKind: ghc - compilerVersion: 8.2.2 - setup-method: ghcup - allow-failure: false - - compiler: ghc-8.0.2 - compilerKind: ghc - compilerVersion: 8.0.2 - setup-method: ghcup - allow-failure: false fail-fast: false steps: - name: apt-get install diff --git a/Setup.hs b/Setup.hs index 86125011..c399bed3 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,3 +1,4 @@ +{-# Language CPP #-} {-| Module : Main Description : Custom setup script @@ -22,11 +23,19 @@ import Distribution.Simple import Distribution.Simple.LocalBuildInfo (LocalBuildInfo, installedPkgs, withLibLBI) import Distribution.Simple.PackageIndex (allPackages) import Distribution.Simple.Setup (configVerbosity, fromFlag) -import Distribution.Simple.Utils (createDirectoryIfMissingVerbose, rewriteFileEx) import Distribution.Verbosity (Verbosity) import System.FilePath ((), (<.>)) +#if MIN_VERSION_Cabal(3,14,0) +import Distribution.Simple.Build (AutogenFile(AutogenModule), writeAutogenFiles) +import Distribution.Simple.Utils (Suffix(..)) +import qualified Data.ByteString.Lazy.Char8 as B +import qualified Data.Map as Map +import qualified Distribution.ModuleName as M +#else import Distribution.Simple.BuildPaths (autogenComponentModulesDir) +import Distribution.Simple.Utils (createDirectoryIfMissingVerbose, rewriteFileEx) +#endif -- | Default Setup main extended to generate a Build module and to validate @@ -63,22 +72,29 @@ generateBuildModule :: IO () generateBuildModule verbosity pkg lbi pkgs = withLibLBI pkg lbi $ \_lib clbi -> - do let dir = autogenComponentModulesDir lbi clbi - modname = buildModuleName pkg + do let modname = buildModuleName pkg + +#if MIN_VERSION_Cabal(3,14,0) + writeAutogenFiles verbosity lbi clbi $ + Map.singleton (AutogenModule (M.fromString modname) (Suffix "hs")) $ + B.pack $ +#else + let dir = autogenComponentModulesDir lbi clbi file = dir modname <.> "hs" createDirectoryIfMissingVerbose verbosity True dir - rewriteFileEx verbosity file - $ unlines - [ "{-|" - , "Module : " ++ modname - , "Description : Dynamically generated configuration module" - , "-}" - , "module " ++ modname ++ " (deps) where" - , "" - , "-- | Transitive dependencies for this package computed at configure-time" - , "deps :: [(String,[Int])] -- ^ package name, version number" - , "deps = " ++ renderDeps pkgs - ] + rewriteFileEx verbosity file $ +#endif + unlines + [ "{-|" + , "Module : " ++ modname + , "Description : Dynamically generated configuration module" + , "-}" + , "module " ++ modname ++ " (deps) where" + , "" + , "-- | Transitive dependencies for this package computed at configure-time" + , "deps :: [(String,[Int])] -- ^ package name, version number" + , "deps = " ++ renderDeps pkgs + ] -- | Render the transitive package dependencies as a Haskell expression diff --git a/bot/irc-core-bot.cabal b/bot/irc-core-bot.cabal index 736cb4a2..2725c10f 100644 --- a/bot/irc-core-bot.cabal +++ b/bot/irc-core-bot.cabal @@ -28,10 +28,10 @@ executable irc-core-bot Bot.Config build-depends: - base >=4.9 && <4.21, + base >=4.9 && <4.22, bytestring >=0.10 && <0.13, hookup ^>=0.8, irc-core ^>=2.13, - random >=1.1 && <1.3, + random >=1.1 && <1.4, text >=1.2 && <2.2, - containers ^>={0.6, 0.7}, + containers ^>={0.6, 0.7, 0.8}, diff --git a/glirc.cabal b/glirc.cabal index ff85826a..3f8b1fa4 100644 --- a/glirc.cabal +++ b/glirc.cabal @@ -24,7 +24,9 @@ tested-with: GHC == 9.0.2, GHC == 9.4.8, GHC == 9.8.2 custom-setup setup-depends: base >=4.12 && <4.22, filepath >=1.4 && <1.6, - Cabal >=2.2 && <4 + Cabal >=2.2 && <4, + bytestring, + containers, source-repository head type: git @@ -177,7 +179,7 @@ library bytestring >=0.10.8 && <0.13, config-schema ^>=1.3.0.0, config-value ^>=0.8, - containers >=0.5.7 && <0.8, + containers >=0.5.7 && <0.9, curve25519 ^>=0.2.5, directory >=1.2.6 && <1.4, filepath >=1.4.1 && <1.6, @@ -188,7 +190,7 @@ library irc-core ^>=2.13, kan-extensions >=5.0 && <5.3, lens >=4.14 && <5.4, - random >=1.1 && <1.3, + random >=1.1 && <1.4, network >=2.6.2 && <3.3, typed-process ^>=0.2.10, psqueues >=0.2.7 && <0.3, @@ -203,7 +205,7 @@ library unix >=2.7 && <2.9, unordered-containers >=0.2.11 && <0.3, vector >=0.11 && <0.14, - vty ^>=6.2, + vty ^>=6.4, test-suite test type: exitcode-stdio-1.0 diff --git a/hookup/hookup.cabal b/hookup/hookup.cabal index 8df733c9..dd191706 100644 --- a/hookup/hookup.cabal +++ b/hookup/hookup.cabal @@ -38,7 +38,7 @@ library cbits/pem_password_cb.c build-depends: - base >=4.11 && <4.21, + base >=4.11 && <4.22, async ^>=2.2, stm ^>=2.5, network >=3.0 && <3.3,