|  | 
|  | 1 | +# This GitHub workflow config has been generated by a script via | 
|  | 2 | +# | 
|  | 3 | +#   haskell-ci 'github' 'matrix-client.cabal' | 
|  | 4 | +# | 
|  | 5 | +# To regenerate the script (for example after adjusting tested-with) run | 
|  | 6 | +# | 
|  | 7 | +#   haskell-ci regenerate | 
|  | 8 | +# | 
|  | 9 | +# For more information, see https://github.com/haskell-CI/haskell-ci | 
|  | 10 | +# | 
|  | 11 | +# version: 0.18.1 | 
|  | 12 | +# | 
|  | 13 | +# REGENDATA ("0.18.1",["github","matrix-client.cabal"]) | 
|  | 14 | +# | 
|  | 15 | +name: Haskell-CI | 
|  | 16 | +on: | 
|  | 17 | +  - push | 
|  | 18 | +  - pull_request | 
|  | 19 | +jobs: | 
|  | 20 | +  linux: | 
|  | 21 | +    name: Haskell-CI - Linux - ${{ matrix.compiler }} | 
|  | 22 | +    runs-on: ubuntu-20.04 | 
|  | 23 | +    timeout-minutes: | 
|  | 24 | +      60 | 
|  | 25 | +    container: | 
|  | 26 | +      image: buildpack-deps:bionic | 
|  | 27 | +    continue-on-error: ${{ matrix.allow-failure }} | 
|  | 28 | +    strategy: | 
|  | 29 | +      matrix: | 
|  | 30 | +        include: | 
|  | 31 | +          - compiler: ghc-9.6.4 | 
|  | 32 | +            compilerKind: ghc | 
|  | 33 | +            compilerVersion: 9.6.4 | 
|  | 34 | +            setup-method: ghcup | 
|  | 35 | +            allow-failure: false | 
|  | 36 | +      fail-fast: false | 
|  | 37 | +    steps: | 
|  | 38 | +      - name: apt | 
|  | 39 | +        run: | | 
|  | 40 | +          apt-get update | 
|  | 41 | +          apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 | 
|  | 42 | +          mkdir -p "$HOME/.ghcup/bin" | 
|  | 43 | +          curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup" | 
|  | 44 | +          chmod a+x "$HOME/.ghcup/bin/ghcup" | 
|  | 45 | +          "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false) | 
|  | 46 | +          "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false) | 
|  | 47 | +        env: | 
|  | 48 | +          HCKIND: ${{ matrix.compilerKind }} | 
|  | 49 | +          HCNAME: ${{ matrix.compiler }} | 
|  | 50 | +          HCVER: ${{ matrix.compilerVersion }} | 
|  | 51 | +      - name: Set PATH and environment variables | 
|  | 52 | +        run: | | 
|  | 53 | +          echo "$HOME/.cabal/bin" >> $GITHUB_PATH | 
|  | 54 | +          echo "LANG=C.UTF-8" >> "$GITHUB_ENV" | 
|  | 55 | +          echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV" | 
|  | 56 | +          echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV" | 
|  | 57 | +          HCDIR=/opt/$HCKIND/$HCVER | 
|  | 58 | +          HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER") | 
|  | 59 | +          HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#') | 
|  | 60 | +          HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#') | 
|  | 61 | +          echo "HC=$HC" >> "$GITHUB_ENV" | 
|  | 62 | +          echo "HCPKG=$HCPKG" >> "$GITHUB_ENV" | 
|  | 63 | +          echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV" | 
|  | 64 | +          echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV" | 
|  | 65 | +          HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))') | 
|  | 66 | +          echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV" | 
|  | 67 | +          echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV" | 
|  | 68 | +          echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV" | 
|  | 69 | +          echo "HEADHACKAGE=false" >> "$GITHUB_ENV" | 
|  | 70 | +          echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" | 
|  | 71 | +          echo "GHCJSARITH=0" >> "$GITHUB_ENV" | 
|  | 72 | +        env: | 
|  | 73 | +          HCKIND: ${{ matrix.compilerKind }} | 
|  | 74 | +          HCNAME: ${{ matrix.compiler }} | 
|  | 75 | +          HCVER: ${{ matrix.compilerVersion }} | 
|  | 76 | +      - name: env | 
|  | 77 | +        run: | | 
|  | 78 | +          env | 
|  | 79 | +      - name: write cabal config | 
|  | 80 | +        run: | | 
|  | 81 | +          mkdir -p $CABAL_DIR | 
|  | 82 | +          cat >> $CABAL_CONFIG <<EOF | 
|  | 83 | +          remote-build-reporting: anonymous | 
|  | 84 | +          write-ghc-environment-files: never | 
|  | 85 | +          remote-repo-cache: $CABAL_DIR/packages | 
|  | 86 | +          logs-dir:          $CABAL_DIR/logs | 
|  | 87 | +          world-file:        $CABAL_DIR/world | 
|  | 88 | +          extra-prog-path:   $CABAL_DIR/bin | 
|  | 89 | +          symlink-bindir:    $CABAL_DIR/bin | 
|  | 90 | +          installdir:        $CABAL_DIR/bin | 
|  | 91 | +          build-summary:     $CABAL_DIR/logs/build.log | 
|  | 92 | +          store-dir:         $CABAL_DIR/store | 
|  | 93 | +          install-dirs user | 
|  | 94 | +            prefix: $CABAL_DIR | 
|  | 95 | +          repository hackage.haskell.org | 
|  | 96 | +            url: http://hackage.haskell.org/ | 
|  | 97 | +          EOF | 
|  | 98 | +          cat >> $CABAL_CONFIG <<EOF | 
|  | 99 | +          program-default-options | 
|  | 100 | +            ghc-options: $GHCJOBS +RTS -M3G -RTS | 
|  | 101 | +          EOF | 
|  | 102 | +          cat $CABAL_CONFIG | 
|  | 103 | +      - name: versions | 
|  | 104 | +        run: | | 
|  | 105 | +          $HC --version || true | 
|  | 106 | +          $HC --print-project-git-commit-id || true | 
|  | 107 | +          $CABAL --version || true | 
|  | 108 | +      - name: update cabal index | 
|  | 109 | +        run: | | 
|  | 110 | +          $CABAL v2-update -v | 
|  | 111 | +      - name: install cabal-plan | 
|  | 112 | +        run: | | 
|  | 113 | +          mkdir -p $HOME/.cabal/bin | 
|  | 114 | +          curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.7.3.0/cabal-plan-0.7.3.0-x86_64-linux.xz > cabal-plan.xz | 
|  | 115 | +          echo 'f62ccb2971567a5f638f2005ad3173dba14693a45154c1508645c52289714cb2  cabal-plan.xz' | sha256sum -c - | 
|  | 116 | +          xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan | 
|  | 117 | +          rm -f cabal-plan.xz | 
|  | 118 | +          chmod a+x $HOME/.cabal/bin/cabal-plan | 
|  | 119 | +          cabal-plan --version | 
|  | 120 | +      - name: checkout | 
|  | 121 | +        uses: actions/checkout@v3 | 
|  | 122 | +        with: | 
|  | 123 | +          path: source | 
|  | 124 | +      - name: initial cabal.project for sdist | 
|  | 125 | +        run: | | 
|  | 126 | +          touch cabal.project | 
|  | 127 | +          echo "packages: $GITHUB_WORKSPACE/source/." >> cabal.project | 
|  | 128 | +          cat cabal.project | 
|  | 129 | +      - name: sdist | 
|  | 130 | +        run: | | 
|  | 131 | +          mkdir -p sdist | 
|  | 132 | +          $CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist | 
|  | 133 | +      - name: unpack | 
|  | 134 | +        run: | | 
|  | 135 | +          mkdir -p unpacked | 
|  | 136 | +          find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \; | 
|  | 137 | +      - name: generate cabal.project | 
|  | 138 | +        run: | | 
|  | 139 | +          PKGDIR_matrix_client="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/matrix-client-[0-9.]*')" | 
|  | 140 | +          echo "PKGDIR_matrix_client=${PKGDIR_matrix_client}" >> "$GITHUB_ENV" | 
|  | 141 | +          rm -f cabal.project cabal.project.local | 
|  | 142 | +          touch cabal.project | 
|  | 143 | +          touch cabal.project.local | 
|  | 144 | +          echo "packages: ${PKGDIR_matrix_client}" >> cabal.project | 
|  | 145 | +          echo "package matrix-client" >> cabal.project | 
|  | 146 | +          echo "    ghc-options: -Werror=missing-methods" >> cabal.project | 
|  | 147 | +          cat >> cabal.project <<EOF | 
|  | 148 | +          EOF | 
|  | 149 | +          $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(matrix-client)$/; }' >> cabal.project.local | 
|  | 150 | +          cat cabal.project | 
|  | 151 | +          cat cabal.project.local | 
|  | 152 | +      - name: dump install plan | 
|  | 153 | +        run: | | 
|  | 154 | +          $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all | 
|  | 155 | +          cabal-plan | 
|  | 156 | +      - name: restore cache | 
|  | 157 | +        uses: actions/cache/restore@v3 | 
|  | 158 | +        with: | 
|  | 159 | +          key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} | 
|  | 160 | +          path: ~/.cabal/store | 
|  | 161 | +          restore-keys: ${{ runner.os }}-${{ matrix.compiler }}- | 
|  | 162 | +      - name: install dependencies | 
|  | 163 | +        run: | | 
|  | 164 | +          $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all | 
|  | 165 | +          $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all | 
|  | 166 | +      - name: build w/o tests | 
|  | 167 | +        run: | | 
|  | 168 | +          $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all | 
|  | 169 | +      - name: build | 
|  | 170 | +        run: | | 
|  | 171 | +          $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always | 
|  | 172 | +      - name: tests | 
|  | 173 | +        run: | | 
|  | 174 | +          $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct | 
|  | 175 | +      - name: cabal check | 
|  | 176 | +        run: | | 
|  | 177 | +          cd ${PKGDIR_matrix_client} || false | 
|  | 178 | +          ${CABAL} -vnormal check | 
|  | 179 | +      - name: haddock | 
|  | 180 | +        run: | | 
|  | 181 | +          $CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all | 
|  | 182 | +      - name: unconstrained build | 
|  | 183 | +        run: | | 
|  | 184 | +          rm -f cabal.project.local | 
|  | 185 | +          $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all | 
|  | 186 | +      - name: save cache | 
|  | 187 | +        uses: actions/cache/save@v3 | 
|  | 188 | +        if: always() | 
|  | 189 | +        with: | 
|  | 190 | +          key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} | 
|  | 191 | +          path: ~/.cabal/store | 
0 commit comments