diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000000000000000000000000000000000000..8c09121f8107cbba7dcd8886dc353c4821881a2c --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,26 @@ +# ~*~ auto-generated by haskell-ci with config : 38018d70f0eae470b08e5cbec7eca488e57e227627db463c3999acfaa8b2fb30 ~*~ + +version: "{build}" +clone_folder: C:\project +build: off +cache: + - "C:\\SR -> .appveyor.yml" + +environment: + global: + STACK_ROOT: "C:\\SR" + +matrix: + fast_finish: true + +install: + - set PATH=C:\Program Files\Git\mingw64\bin;%PATH% + - curl -ostack.zip -L %STACKURL% + - 7z x stack.zip stack.exe + - refreshenv +test_script: + - echo %STACKCFG% > stack.yaml + - stack setup > nul + - echo "" | %STACKCMD% + + diff --git a/.haskell-ci b/.haskell-ci new file mode 100644 index 0000000000000000000000000000000000000000..0b2182f7e99bda30e3c1ce52e26e71243bbfa170 --- /dev/null +++ b/.haskell-ci @@ -0,0 +1,29 @@ +# compiler supported and their equivalent LTS +compiler: ghc-8.0 lts-9.21 +compiler: ghc-8.2 lts-11.22 +compiler: ghc-8.4 lts-12.7 + +# gitdep: name location commit + +# options +# option: alias x=y z=v + +# builds +# recognized simple options: nohaddock allow-newer allowed-failure +# kvs options: flag=pkg:flagname extradep=package-version gitdep=name +build: ghc-8.2 +build: ghc-8.0 +build: ghc-8.0 os=osx +build: ghc-8.4 extradep=patience-0.1.1 + +# packages +package: '.' + +# extra builds +hlint: allowed-failure +weeder: allowed-failure +coverall: false + +# travis extra +# travis-apt-addon: packagename +# travis-tests: post-script diff --git a/.travis.yml b/.travis.yml index e38fc6d17cad49362a88d8b0b756cd5da38c3736..a3023cf4ad4854ee469a55422c8a1751b187748e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,161 +1,78 @@ +# ~*~ auto-generated by haskell-ci with config : 38018d70f0eae470b08e5cbec7eca488e57e227627db463c3999acfaa8b2fb30 ~*~ + # Use new container infrastructure to enable caching sudo: false -# Choose a lightweight base image; we provide our own build tools. -language: c - # Caching so the next build will be fast too. cache: directories: - $HOME/.ghc - - $HOME/.cabal - $HOME/.stack + - $HOME/.local -# The different configurations we want to test. We have BUILD=cabal which uses -# cabal-install, and BUILD=stack which uses Stack. More documentation on each -# of those below. -# -# We set the compiler values here to tell Travis to use a different -# cache file per set of arguments. -# -# If you need to have different apt packages for each combination in the -# matrix, you can use a line such as: -# addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}} matrix: include: - - env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.18 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.8.4" - addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.22 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.10.3" - addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=8.0.2 CABALVER=1.22 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 8.0.2" - addons: {apt: {packages: [cabal-install-1.22,ghc-8.0.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - # Build with the newest GHC and cabal-install. This is an accepted failure, - # see below. - - env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC HEAD" - addons: {apt: {packages: [cabal-install-head,ghc-head,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - # The Stack builds. We can pass in arbitrary Stack arguments via the ARGS - # variable, such as using --stack-yaml to point to a different file. - #- env: BUILD=stack ARGS="" - # compiler: ": #stack default" - # addons: {apt: {packages: [ghc-7.10.3], sources: [hvr-ghc]}} - - #- env: BUILD=stack ARGS="--resolver lts-2" - # compiler: ": #stack 7.8.4" - # addons: {apt: {packages: [ghc-7.8.4], sources: [hvr-ghc]}} - - #- env: BUILD=stack ARGS="--resolver lts-3" - # compiler: ": #stack 7.10.2" - # addons: {apt: {packages: [ghc-7.10.2], sources: [hvr-ghc]}} - - #- env: BUILD=stack ARGS="--resolver lts-5" - # compiler: ": #stack 7.10.3" - # addons: {apt: {packages: [ghc-7.10.3], sources: [hvr-ghc]}} - - # Nightly builds are allowed to fail - #- env: BUILD=stack ARGS="--resolver nightly" - # compiler: ": #stack nightly" - # addons: {apt: {packages: [libgmp,libgmp-dev]}} - - # Build on OS X in addition to Linux - #- env: BUILD=stack ARGS="" - # compiler: ": #stack default osx" - # os: osx - - #- env: BUILD=stack ARGS="--resolver lts-2" - # compiler: ": #stack 7.8.4 osx" - # os: osx - - #- env: BUILD=stack ARGS="--resolver lts-3" - # compiler: ": #stack 7.10.2 osx" - # os: osx - - #- env: BUILD=stack ARGS="--resolver lts-5" - # compiler: ": #stack 7.10.3 osx" - # os: osx - - #- env: BUILD=stack ARGS="--resolver nightly" - # compiler: ": #stack nightly osx" - # os: osx - + - { env: BUILD=stack RESOLVER=ghc-8.2, compiler: ghc-8.2, language: generic, addons: { apt: { packages: [ libgmp-dev ] } } } + - { env: BUILD=stack RESOLVER=ghc-8.0, compiler: ghc-8.0, language: generic, addons: { apt: { packages: [ libgmp-dev ] } } } + - { env: BUILD=stack RESOLVER=ghc-8.0, compiler: ghc-8.0, language: generic, addons: { apt: { packages: [ libgmp-dev ] } }, os: osx } + - { env: BUILD=stack RESOLVER=ghc-8.4, compiler: ghc-8.4, language: generic, addons: { apt: { packages: [ libgmp-dev ] } } } + - { env: BUILD=hlint, compiler: hlint, language: generic } + - { env: BUILD=weeder, compiler: weeder, language: generic, addons: { apt: { packages: [ libgmp-dev ] } } } allow_failures: - - env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7 - - env: BUILD=stack ARGS="--resolver nightly" - -before_install: -# Using compiler above sets CC to an invalid value, so unset it -- unset CC - -# We want to always allow newer versions of packages when building on GHC HEAD -- CABALARGS="" -- if [ "x$GHCVER" = "xhead" ]; then CABALARGS=--allow-newer; fi - -# Download and unpack the stack executable -- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:/opt/alex/$ALEXVER/bin:/opt/happy/$HAPPYVER/bin:$HOME/.cabal/bin:$PATH -- mkdir -p ~/.local/bin -- | - if [ `uname` = "Darwin" ] - then - travis_retry curl --insecure -L https://www.stackage.org/stack/osx-x86_64 | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin - else - travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' - fi - - # Use the more reliable S3 mirror of Hackage - mkdir -p $HOME/.cabal - echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config - echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config - - if [ "$CABALVER" != "1.16" ] - then - echo 'jobs: $ncpus' >> $HOME/.cabal/config - fi - -# Get the list of packages from the stack.yaml file -- PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@') + - { env: BUILD=hlint, compiler: hlint, language: generic } + - { env: BUILD=weeder, compiler: weeder, language: generic, addons: { apt: { packages: [ libgmp-dev ] } } } install: -- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" -- if [ -f configure.ac ]; then autoreconf -i; fi -- | - set -ex - case "$BUILD" in - stack) - stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies + - export PATH=$HOME/.local/bin::$HOME/.cabal/bin:$PATH + - mkdir -p ~/.local/bin + - | + case "$BUILD" in + stack|weeder) + if [ `uname` = "Darwin" ] + then + travis_retry curl --insecure -L https://www.stackage.org/stack/osx-x86_64 | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin + else + travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' + fi ;; cabal) - cabal --version - travis_retry cabal update - cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES ;; - esac - set +ex + esac script: - | set -ex + if [ "x${RUNTEST}" = "xfalse" ]; then exit 0; fi case "$BUILD" in stack) - stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps + # create the build stack.yaml + case "$RESOLVER" in + ghc-8.2) + echo "{ resolver: lts-10.7, packages: [ '.' ], extra-deps: [], flags: {} }" > stack.yaml + stack --no-terminal build --install-ghc --coverage --test --bench --no-run-benchmarks --haddock --no-haddock-deps + ;; + ghc-8.0) + echo "{ resolver: lts-9.21, packages: [ '.' ], extra-deps: [], flags: {} }" > stack.yaml + stack --no-terminal build --install-ghc --coverage --test --bench --no-run-benchmarks --haddock --no-haddock-deps + ;; + ghc-8.0) + echo "{ resolver: lts-9.21, packages: [ '.' ], extra-deps: [], flags: {} }" > stack.yaml + stack --no-terminal build --install-ghc --coverage --test --bench --no-run-benchmarks --haddock --no-haddock-deps + ;; + ghc-8.4) + echo "{ resolver: lts-12.1, packages: [ '.' ], extra-deps: [ patience-0.1.1 ], flags: {} }" > stack.yaml + stack --no-terminal build --install-ghc --coverage --test --bench --no-run-benchmarks --haddock --no-haddock-deps + ;; + esac ;; - cabal) - cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES - - ORIGDIR=$(pwd) - for dir in $PACKAGES - do - cd $dir - cabal check || [ "$CABALVER" == "1.16" ] - cabal sdist - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && \ - (cd dist && cabal install --force-reinstalls "$SRC_TGZ") - cd $ORIGDIR - done + hlint) + curl -sL https://raw.github.com/ndmitchell/hlint/master/misc/travis.sh | sh -s . --cpp-define=__GLASGOW_HASKELL__=800 --cpp-define=x86_64_HOST_ARCH=1 --cpp-define=mingw32_HOST_OS=1 + ;; + weeder) + stack --no-terminal build --install-ghc + curl -sL https://raw.github.com/ndmitchell/weeder/master/misc/travis.sh | sh -s . ;; esac set +ex + + diff --git a/stack.yaml b/stack.yaml index 4c515c94d860dd55bb7f2e5a4d3dadc8c41088a7..6fba68376537630ad4b0229f3fc0e5fe6bc0d78f 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,3 +1,5 @@ -resolver: lts-9.17 +resolver: lts-12.7 packages: - . +extra-deps: +- patience-0.1.1