From 234f37702834ef6f3d946dd11dbe0a98c33765d4 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Wed, 3 Aug 2016 12:35:01 +0300 Subject: [PATCH 1/9] Travis stack test --- .travis.yml | 71 ++++++++++++++++++++++------------------------------- 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1328b81..ff4294e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,59 +1,46 @@ -language: haskell -ghc: - - 7.6 - - 7.8 - +language: c sudo: false -addons: - apt: - packages: - - zlib1g-dev - cache: apt: true directories: - - ~/.cabal - - ~/.ghc - - ~/.stack + - $HOME/.stack + - $HOME/.ghc-mod + - $TRAVIS_BUILD_DIR/.stack-work/install -before_cache: - - rm -f $HOME/.cabal/logs $HOME/.cabal/packages/*/build-reports.log +addons: + apt: + packages: + - libfcgi-dev + - libgmp-dev before_install: - - wget https://github.com/commercialhaskell/stack/releases/download/v0.1.3.1/stack-0.1.3.1-x86_64-linux.gz - - mkdir stack-bin - - gunzip stack-0.1.3.1-x86_64-linux.gz - - mv stack-0.1.3.1-x86_64-linux stack-bin/stack - - chmod +x stack-bin/stack - - export PATH=$(pwd)/stack-bin:$PATH + - unset CC + - mkdir -p ~/.local/bin + - export PATH=$HOME/.local/bin:$PATH + - travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' - stack --version install: - - export CABAL_VER="$(ghc-pkg describe ghc | sed -n '/^depends:/,/^[a-z]/p' | head -n-1 | sed '1{s/^depends://}' | grep " *Cabal" | tr -d "[:space:]" | sed 's/^Cabal-\([0-9.]*\)-.*/\1/g')" - - echo $CABAL_VER + #- git clone --depth=1 https://github.com/DanielG/cabal-helper.git + - stack setup --resolver=ghc-$GHCVER + - stack install cabal-install --resolver=$RES - cabal update - - cabal install happy - - happy --version - - git clone --depth=1 https://github.com/DanielG/cabal-helper.git - - cabal install cabal-helper/ --constraint "Cabal == ${CABAL_VER}" - - cabal install -j --only-dependencies --enable-tests - + - stack install happy --resolver=$RES + #- stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ cabal-helper/ + - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ script: - - touch ChangeLog # Create ChangeLog if we're not on the release branch - cabal check - - cabal sdist - - export SRC_TGZ="$PWD/dist/$(cabal info . | awk '{print $2 ".tar.gz";exit}')" - - rm -rf /tmp/test && mkdir -p /tmp/test - - cd /tmp/test - - tar -xf $SRC_TGZ && cd ghc-mod*/ -# - if [ -n "$(ghc --version | awk '{ print $8 }' | sed -n '/^7.8/p')" ]; then export WERROR="--ghc-option=-Werror"; fi - - cabal configure --enable-tests - - cabal build - - export ghc_mod_datadir=$PWD - - cabal test + - stack build + - stack test ghc-mod:spec matrix: - allow_failures: - - env: GHCVER=head + matrix: + include: + - env: GHCVER=7.8.4 RES=lts-2.22 + compiler: ': #GHC 7.8.4' + - env: GHCVER=7.10.3 RES=lts-6.9 + compiler: ': #GHC 7.10.3' + - env: GHCVER=8.0.1 RES=nightly-2016-08-01 + compiler: ': #GHC 8.0.1' From d4283e78ec5b7f32cc5d4092efcc13743c8a6871 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Wed, 3 Aug 2016 16:10:53 +0300 Subject: [PATCH 2/9] Try using custom resolvers to ease caching load --- .travis.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index ff4294e..1894ea7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ cache: directories: - $HOME/.stack - $HOME/.ghc-mod - - $TRAVIS_BUILD_DIR/.stack-work/install addons: apt: @@ -22,13 +21,24 @@ before_install: - stack --version install: - #- git clone --depth=1 https://github.com/DanielG/cabal-helper.git + # - git clone --depth=1 https://github.com/DanielG/cabal-helper.git - stack setup --resolver=ghc-$GHCVER - stack install cabal-install --resolver=$RES - cabal update - stack install happy --resolver=$RES - #- stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ cabal-helper/ - - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ + # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ cabal-helper/ + # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ + - | + resf="ghc-$GHCVER.yaml" + echo "resolver: ghc-$GHCVER" > "$resf" + stack solver --update-config --stack-yaml="$resf" + sed -i 's/^resolver:/compiler:/;s/^extra-deps:/packages:/' "$resf" + echo "resolver: { name: 'ghc-$GHCVER', location: './$resf' }" > stack.yaml + ir=$( stack path --snapshot-install-root ) + ls -d ${ir%/custom-ghc-*}/custom-ghc-* | grep -v "${ir%/*}" | while read i; do + rm -rfv "$i" + done + script: - cabal check From 93d23762b3a627717b7cd1a74c99ee2a0385c47d Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Wed, 3 Aug 2016 16:43:48 +0300 Subject: [PATCH 3/9] Add --no-terminal to stack invocations --- .travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1894ea7..48eb43f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,16 +22,16 @@ before_install: install: # - git clone --depth=1 https://github.com/DanielG/cabal-helper.git - - stack setup --resolver=ghc-$GHCVER - - stack install cabal-install --resolver=$RES + - stack --no-terminal setup --resolver=ghc-$GHCVER + - stack --no-terminal install cabal-install --resolver=$RES - cabal update - - stack install happy --resolver=$RES + - stack --no-terminal install happy --resolver=$RES # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ cabal-helper/ # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ - | resf="ghc-$GHCVER.yaml" echo "resolver: ghc-$GHCVER" > "$resf" - stack solver --update-config --stack-yaml="$resf" + stack --no-terminal solver --update-config --stack-yaml="$resf" sed -i 's/^resolver:/compiler:/;s/^extra-deps:/packages:/' "$resf" echo "resolver: { name: 'ghc-$GHCVER', location: './$resf' }" > stack.yaml ir=$( stack path --snapshot-install-root ) @@ -42,8 +42,8 @@ install: script: - cabal check - - stack build - - stack test ghc-mod:spec + - stack --no-terminal build --test --no-run-tests + - stack --no-terminal test ghc-mod:spec matrix: matrix: From 99e64b03077a402f9cf623e383f07e1d3965e2d4 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Wed, 3 Aug 2016 17:23:37 +0300 Subject: [PATCH 4/9] travis_retry cabal update --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 48eb43f..6c53d0f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ install: # - git clone --depth=1 https://github.com/DanielG/cabal-helper.git - stack --no-terminal setup --resolver=ghc-$GHCVER - stack --no-terminal install cabal-install --resolver=$RES - - cabal update + - travis_retry cabal update - stack --no-terminal install happy --resolver=$RES # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ cabal-helper/ # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ From c5c86c4ec189c248173256618960fe1e57dfdec1 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Wed, 3 Aug 2016 18:57:35 +0300 Subject: [PATCH 5/9] Test sdist If ChangeLog is present --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index 6c53d0f..ae2d848 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,6 +44,16 @@ script: - cabal check - stack --no-terminal build --test --no-run-tests - stack --no-terminal test ghc-mod:spec + - | + if [ -r "$TRAVIS_BUILD_DIR/ChangeLog" ]; then + sdistdir="$TRAVIS_BUILD_DIR/../sdist-test" + mkdir -p "$sdistdir" + tar zvxf $(stack sdist 2>&1 | tail -n1 | sed 's/.* //') --strip-components=1 -C "$sdistdir" + cp "ghc-$GHCVER.yaml" stack.yaml "$sdistdir" + cd "$sdistdir" + stack --no-terminal build --test --no-run-tests + stack --no-terminal test ghc-mod:spec + fi matrix: matrix: From 98ac91dd72fa00adf47516c4cffc6512e5f1cc9c Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Thu, 4 Aug 2016 06:37:21 +0300 Subject: [PATCH 6/9] Test sdist on release* branch. Directly otherwise --- .travis.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index ae2d848..3ac89cf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,18 +42,19 @@ install: script: - cabal check + - | + case "$TRAVIS_BRANCH" of + "release"*) + touch ChangeLog + sdistdir="$TRAVIS_BUILD_DIR/../sdist-test" + mkdir -p "$sdistdir" + tar zvxf $(stack sdist 2>&1 | tail -n1 | sed 's/.* //') --strip-components=1 -C "$sdistdir" + cp "ghc-$GHCVER.yaml" stack.yaml "$sdistdir" + cd "$sdistdir" + ;; + esac - stack --no-terminal build --test --no-run-tests - stack --no-terminal test ghc-mod:spec - - | - if [ -r "$TRAVIS_BUILD_DIR/ChangeLog" ]; then - sdistdir="$TRAVIS_BUILD_DIR/../sdist-test" - mkdir -p "$sdistdir" - tar zvxf $(stack sdist 2>&1 | tail -n1 | sed 's/.* //') --strip-components=1 -C "$sdistdir" - cp "ghc-$GHCVER.yaml" stack.yaml "$sdistdir" - cd "$sdistdir" - stack --no-terminal build --test --no-run-tests - stack --no-terminal test ghc-mod:spec - fi matrix: matrix: From e1685a0c7340c932ed56a8b5943394929e54d303 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Thu, 4 Aug 2016 06:42:30 +0300 Subject: [PATCH 7/9] Add `packages: ['.']` to travis stack.yaml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3ac89cf..109fd05 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,14 +26,14 @@ install: - stack --no-terminal install cabal-install --resolver=$RES - travis_retry cabal update - stack --no-terminal install happy --resolver=$RES - # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ cabal-helper/ - # - stack init --ignore-subdirs --resolver=ghc-$GHCVER ./ - | resf="ghc-$GHCVER.yaml" echo "resolver: ghc-$GHCVER" > "$resf" + echo "packages: ['.']" >> "$resf" stack --no-terminal solver --update-config --stack-yaml="$resf" sed -i 's/^resolver:/compiler:/;s/^extra-deps:/packages:/' "$resf" echo "resolver: { name: 'ghc-$GHCVER', location: './$resf' }" > stack.yaml + echo "packages: ['.']" >> stack.yaml ir=$( stack path --snapshot-install-root ) ls -d ${ir%/custom-ghc-*}/custom-ghc-* | grep -v "${ir%/*}" | while read i; do rm -rfv "$i" From e82c1be1cb662ed11521c2ddeea25a70f5a6ce11 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Thu, 4 Aug 2016 06:43:59 +0300 Subject: [PATCH 8/9] Indent fix --- .travis.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 109fd05..126ab74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,16 +43,16 @@ install: script: - cabal check - | - case "$TRAVIS_BRANCH" of - "release"*) - touch ChangeLog - sdistdir="$TRAVIS_BUILD_DIR/../sdist-test" - mkdir -p "$sdistdir" - tar zvxf $(stack sdist 2>&1 | tail -n1 | sed 's/.* //') --strip-components=1 -C "$sdistdir" - cp "ghc-$GHCVER.yaml" stack.yaml "$sdistdir" - cd "$sdistdir" - ;; - esac + case "$TRAVIS_BRANCH" of + "release"*) + touch ChangeLog + sdistdir="$TRAVIS_BUILD_DIR/../sdist-test" + mkdir -p "$sdistdir" + tar zvxf $(stack sdist 2>&1 | tail -n1 | sed 's/.* //') --strip-components=1 -C "$sdistdir" + cp "ghc-$GHCVER.yaml" stack.yaml "$sdistdir" + cd "$sdistdir" + ;; + esac - stack --no-terminal build --test --no-run-tests - stack --no-terminal test ghc-mod:spec From d57cd06de8ce281ba62ee8eb5e363572c7a3d3d4 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Thu, 4 Aug 2016 06:48:10 +0300 Subject: [PATCH 9/9] Syntax fix --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 126ab74..1ee4e70 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,7 @@ install: script: - cabal check - | - case "$TRAVIS_BRANCH" of + case "$TRAVIS_BRANCH" in "release"*) touch ChangeLog sdistdir="$TRAVIS_BUILD_DIR/../sdist-test"