aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Biehl <alexbiehl@gmail.com>2020-12-08 23:08:23 +0100
committerGitHub <noreply@github.com>2020-12-08 23:08:23 +0100
commit1dbbe6cd32c609fce0857cc77ef367820eb88359 (patch)
treef830f87cc99cb0b18f880fb4ca130bfc66789117
parentc4291bfc06211c9f60c9d43b4ada5c75ab8b41f8 (diff)
Move to GitHub CI (#1266)
* Initial version of ci.yml This is a straight copy from Dmitrii Kovanikov's blog post at https://kodimensional.dev/github-actions. Will adapt to haddock in successive commits. * Delete .travis.yml * Modify to only test on ghc-8.10.{1,2} * Use actions/setup-haskell@v1.1.4 * Relax QuickCheck bound on haddock-api * Remove stack matrix for now * Nail down to ghc-8.10 branch for now * Pin index state to 2020-12-08T20:13:44Z for now * Disable macOS and Windows tests for now for speed up
-rw-r--r--.github/workflows/ci.yml49
-rw-r--r--.travis.yml157
-rw-r--r--cabal.project3
-rw-r--r--haddock-api/haddock-api.cabal2
4 files changed, 53 insertions, 158 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..d5b1bae2
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,49 @@
+name: CI
+
+# Trigger the workflow on push or pull request, but only for the master branch
+on:
+ pull_request:
+ push:
+ branches: ["ghc-8.10"]
+
+jobs:
+ cabal:
+ name: ${{ matrix.os }} / ghc ${{ matrix.ghc }}
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest]
+ cabal: ["3.2"]
+ ghc:
+ - "8.10.1"
+ - "8.10.2"
+
+ steps:
+ - uses: actions/checkout@v2
+ if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/ghc-8.10'
+
+ - uses: actions/setup-haskell@v1.1.4
+ id: setup-haskell-cabal
+ name: Setup Haskell
+ with:
+ ghc-version: ${{ matrix.ghc }}
+ cabal-version: ${{ matrix.cabal }}
+
+ - name: Freeze
+ run: |
+ cabal freeze
+
+ - uses: actions/cache@v1
+ name: Cache ~/.cabal/store
+ with:
+ path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }}
+ key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}
+
+ - name: Build
+ run: |
+ cabal configure --enable-tests --enable-benchmarks --test-show-details=direct
+ cabal build all
+
+ - name: Test
+ run: |
+ cabal test all
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 32ac3065..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,157 +0,0 @@
-# This Travis job script has been generated by a script via
-#
-# haskell-ci 'cabal.project' '--output=.travis.yml'
-#
-# For more information, see https://github.com/haskell-CI/haskell-ci
-#
-# version: 0.9.20200321
-#
-version: ~> 1.0
-language: c
-os: linux
-dist: xenial
-git:
- # whether to recursively clone submodules
- submodules: false
-cache:
- directories:
- - $HOME/.cabal/packages
- - $HOME/.cabal/store
- - $HOME/.hlint
-before_cache:
- - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
- # remove files that are regenerated by 'cabal update'
- - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
- - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
- - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
- - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
- - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
- - rm -rfv $CABALHOME/packages/head.hackage
-jobs:
- include:
- - compiler: ghc-8.10.1
- addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.10.1","cabal-install-3.2"]}}
- os: linux
- allow_failures:
- - compiler: ghc-8.10.1
-before_install:
- - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
- - WITHCOMPILER="-w $HC"
- - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')
- - HCPKG="$HC-pkg"
- - unset CC
- - CABAL=/opt/ghc/bin/cabal
- - CABALHOME=$HOME/.cabal
- - export PATH="$CABALHOME/bin:$PATH"
- - TOP=$(pwd)
- - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
- - echo $HCNUMVER
- - CABAL="$CABAL -vnormal+nowrap"
- - set -o pipefail
- - TEST=--enable-tests
- - BENCH=--enable-benchmarks
- - HEADHACKAGE=false
- - HEADHACKAGE=true
- - rm -f $CABALHOME/config
- - |
- echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
- echo "remote-build-reporting: anonymous" >> $CABALHOME/config
- echo "write-ghc-environment-files: always" >> $CABALHOME/config
- echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
- echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
- echo "world-file: $CABALHOME/world" >> $CABALHOME/config
- echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
- echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
- echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
- echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
- echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
- echo "install-dirs user" >> $CABALHOME/config
- echo " prefix: $CABALHOME" >> $CABALHOME/config
- echo "repository hackage.haskell.org" >> $CABALHOME/config
- echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
- - |
- if $HEADHACKAGE; then
- echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config
- echo "repository head.hackage.ghc.haskell.org" >> $CABALHOME/config
- echo " url: https://ghc.gitlab.haskell.org/head.hackage/" >> $CABALHOME/config
- echo " secure: True" >> $CABALHOME/config
- echo " root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d" >> $CABALHOME/config
- echo " 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329" >> $CABALHOME/config
- echo " f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89" >> $CABALHOME/config
- echo " key-threshold: 3" >> $CABALHOME/config
- fi
-install:
- - ${CABAL} --version
- - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- - |
- echo "program-default-options" >> $CABALHOME/config
- echo " ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config
- - cat $CABALHOME/config
- - rm -fv cabal.project cabal.project.local cabal.project.freeze
- - travis_retry ${CABAL} v2-update -v
- # Generate cabal.project
- - rm -rf cabal.project cabal.project.local cabal.project.freeze
- - touch cabal.project
- - |
- echo "packages: ." >> cabal.project
- echo "packages: ./haddock-api" >> cabal.project
- echo "packages: ./haddock-library" >> cabal.project
- echo "packages: ./haddock-test" >> cabal.project
- - |
- - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(haddock|haddock-api|haddock-library|haddock-test)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
- - cat cabal.project || true
- - cat cabal.project.local || true
- - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
- - if [ -f "./haddock-api/configure.ac" ]; then (cd "./haddock-api" && autoreconf -i); fi
- - if [ -f "./haddock-library/configure.ac" ]; then (cd "./haddock-library" && autoreconf -i); fi
- - if [ -f "./haddock-test/configure.ac" ]; then (cd "./haddock-test" && autoreconf -i); fi
- - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH}
- - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
- - rm cabal.project.freeze
- - travis_wait 40 ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all
- - travis_wait 40 ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --dep -j2 all
-script:
- - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
- # Packaging...
- - ${CABAL} v2-sdist all
- # Unpacking...
- - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
- - cd ${DISTDIR} || false
- - find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;
- - find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \;
- - PKGDIR_haddock="$(find . -maxdepth 1 -type d -regex '.*/haddock-[0-9.]*')"
- - PKGDIR_haddock_api="$(find . -maxdepth 1 -type d -regex '.*/haddock-api-[0-9.]*')"
- - PKGDIR_haddock_library="$(find . -maxdepth 1 -type d -regex '.*/haddock-library-[0-9.]*')"
- - PKGDIR_haddock_test="$(find . -maxdepth 1 -type d -regex '.*/haddock-test-[0-9.]*')"
- # Generate cabal.project
- - rm -rf cabal.project cabal.project.local cabal.project.freeze
- - touch cabal.project
- - |
- echo "packages: ${PKGDIR_haddock}" >> cabal.project
- echo "packages: ${PKGDIR_haddock_api}" >> cabal.project
- echo "packages: ${PKGDIR_haddock_library}" >> cabal.project
- echo "packages: ${PKGDIR_haddock_test}" >> cabal.project
- - |
- - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(haddock|haddock-api|haddock-library|haddock-test)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
- - cat cabal.project || true
- - cat cabal.project.local || true
- # Building...
- # this builds all libraries and executables (without tests/benchmarks)
- - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
- # Building with tests and benchmarks...
- # build & run tests, build benchmarks
- - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all
- # Testing...
- - ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all
- # cabal check...
- - (cd ${PKGDIR_haddock} && ${CABAL} -vnormal check)
- - (cd ${PKGDIR_haddock_api} && ${CABAL} -vnormal check)
- - (cd ${PKGDIR_haddock_library} && ${CABAL} -vnormal check)
- # haddock...
- - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all
- # Building without installed constraints for packages in global-db...
- - rm -f cabal.project.local
- - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
-
-# REGENDATA ("0.9.20200321",["cabal.project","--output=.travis.yml"])
-# EOF
diff --git a/cabal.project b/cabal.project
index ba925e3d..7330a775 100644
--- a/cabal.project
+++ b/cabal.project
@@ -2,3 +2,6 @@ packages: ./
./haddock-api
./haddock-library
./haddock-test
+
+-- Pinning the index-state helps to make reasonably CI deterministic
+index-state: 2020-12-08T20:13:44Z
diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddock-api.cabal
index 5fa51905..982d6145 100644
--- a/haddock-api/haddock-api.cabal
+++ b/haddock-api/haddock-api.cabal
@@ -177,7 +177,7 @@ test-suite spec
, haddock-library ^>= 1.9.0
, xhtml ^>= 3000.2.2
, hspec >= 2.4.4 && < 2.8
- , QuickCheck >= 2.11 && < 2.14
+ , QuickCheck >= 2.11 && ^>= 2.14
-- Versions for the dependencies below are transitively pinned by
-- the non-reinstallable `ghc` package and hence need no version