| 
 | 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