# SUCCESS # *INFO* Generating GitHub config for testing for GHC versions: ghc-head 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1 8.8.2 8.8.3 8.8.4 8.10.1 8.10.2 8.10.3 8.10.4 8.10.5 8.10.6 8.10.7 # This GitHub workflow config has been generated by a script via # # haskell-ci '--ghc-head' '--apt=fftw3-dev' '--installed=-all +deepseq' 'github' 'messy.project' # # To regenerate the script (for example after adjusting tested-with) run # # haskell-ci regenerate # # For more information, see https://github.com/haskell-CI/haskell-ci # # REGENDATA ["--ghc-head","--apt=fftw3-dev","--installed=-all +deepseq","github","messy.project"] # name: Haskell-CI on: - push - pull_request jobs: linux: name: Haskell-CI - Linux - ${{ matrix.compiler }} runs-on: ubuntu-20.04 timeout-minutes: 60 container: image: buildpack-deps:bionic continue-on-error: ${{ matrix.allow-failure }} strategy: matrix: include: - compiler: ghc-8.10.7 compilerKind: ghc compilerVersion: 8.10.7 setup-method: ghcup allow-failure: false - compiler: ghc-8.10.6 compilerKind: ghc compilerVersion: 8.10.6 setup-method: ghcup allow-failure: false - compiler: ghc-8.10.5 compilerKind: ghc compilerVersion: 8.10.5 setup-method: ghcup allow-failure: false - compiler: ghc-8.10.4 compilerKind: ghc compilerVersion: 8.10.4 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.10.3 compilerKind: ghc compilerVersion: 8.10.3 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.10.2 compilerKind: ghc compilerVersion: 8.10.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.10.1 compilerKind: ghc compilerVersion: 8.10.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.8.4 compilerKind: ghc compilerVersion: 8.8.4 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.8.3 compilerKind: ghc compilerVersion: 8.8.3 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.8.2 compilerKind: ghc compilerVersion: 8.8.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.8.1 compilerKind: ghc compilerVersion: 8.8.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.6.5 compilerKind: ghc compilerVersion: 8.6.5 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.6.4 compilerKind: ghc compilerVersion: 8.6.4 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.6.3 compilerKind: ghc compilerVersion: 8.6.3 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.6.2 compilerKind: ghc compilerVersion: 8.6.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.6.1 compilerKind: ghc compilerVersion: 8.6.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.4.4 compilerKind: ghc compilerVersion: 8.4.4 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.4.3 compilerKind: ghc compilerVersion: 8.4.3 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.4.2 compilerKind: ghc compilerVersion: 8.4.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.4.1 compilerKind: ghc compilerVersion: 8.4.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.2.2 compilerKind: ghc compilerVersion: 8.2.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.2.1 compilerKind: ghc compilerVersion: 8.2.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.0.2 compilerKind: ghc compilerVersion: 8.0.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-8.0.1 compilerKind: ghc compilerVersion: 8.0.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.10.3 compilerKind: ghc compilerVersion: 7.10.3 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.10.2 compilerKind: ghc compilerVersion: 7.10.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.10.1 compilerKind: ghc compilerVersion: 7.10.1 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.8.4 compilerKind: ghc compilerVersion: 7.8.4 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.8.3 compilerKind: ghc compilerVersion: 7.8.3 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.8.2 compilerKind: ghc compilerVersion: 7.8.2 setup-method: hvr-ppa allow-failure: false - compiler: ghc-7.8.1 compilerKind: ghc compilerVersion: 7.8.1 setup-method: hvr-ppa allow-failure: false fail-fast: false steps: - name: apt 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" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml; "$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) apt-get update apt-get install -y fftw3-dev else apt-add-repository -y 'ppa:hvr/ghc' apt-get update apt-get install -y "$HCNAME" fftw3-dev 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" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml; "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false) fi env: HCKIND: ${{ matrix.compilerKind }} HCNAME: ${{ matrix.compiler }} HCVER: ${{ matrix.compilerVersion }} - name: Set PATH and environment variables run: | echo "$HOME/.cabal/bin" >> $GITHUB_PATH 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" if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" echo "GHCJSARITH=0" >> "$GITHUB_ENV" env: HCKIND: ${{ matrix.compilerKind }} HCNAME: ${{ matrix.compiler }} HCVER: ${{ matrix.compilerVersion }} - name: env run: | env - name: write cabal config run: | mkdir -p $CABAL_DIR cat >> $CABAL_CONFIG <> $CABAL_CONFIG <> $CABAL_CONFIG < cabal-plan.xz echo 'f62ccb2971567a5f638f2005ad3173dba14693a45154c1508645c52289714cb2 cabal-plan.xz' | sha256sum -c - xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan rm -f cabal-plan.xz chmod a+x $HOME/.cabal/bin/cabal-plan cabal-plan --version - name: checkout uses: actions/checkout@v3 with: path: source - name: initial cabal.project for sdist run: | touch cabal.project echo "packages: $GITHUB_WORKSPACE/source/servant" >> cabal.project echo "packages: $GITHUB_WORKSPACE/source/servant-client" >> cabal.project echo "packages: $GITHUB_WORKSPACE/source/servant-docs" >> cabal.project echo "packages: $GITHUB_WORKSPACE/source/servant-server" >> cabal.project cat cabal.project - name: sdist run: | mkdir -p sdist $CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist - name: unpack run: | mkdir -p unpacked find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \; - name: generate cabal.project run: | PKGDIR_servant="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-[0-9.]*')" echo "PKGDIR_servant=${PKGDIR_servant}" >> "$GITHUB_ENV" PKGDIR_servant_client="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-client-[0-9.]*')" echo "PKGDIR_servant_client=${PKGDIR_servant_client}" >> "$GITHUB_ENV" PKGDIR_servant_docs="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-docs-[0-9.]*')" echo "PKGDIR_servant_docs=${PKGDIR_servant_docs}" >> "$GITHUB_ENV" PKGDIR_servant_server="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-server-[0-9.]*')" echo "PKGDIR_servant_server=${PKGDIR_servant_server}" >> "$GITHUB_ENV" rm -f cabal.project cabal.project.local touch cabal.project touch cabal.project.local echo "packages: ${PKGDIR_servant}" >> cabal.project echo "packages: ${PKGDIR_servant_client}" >> cabal.project echo "packages: ${PKGDIR_servant_docs}" >> cabal.project echo "packages: ${PKGDIR_servant_server}" >> cabal.project if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant-client" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant-docs" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant-server" >> cabal.project ; fi if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi cat >> cabal.project <> cabal.project fi cat >> cabal.project.local <