diff --git a/.travis.yml b/.travis.yml index bcc0f04b..8eb2bca1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,53 +20,53 @@ cache: - $HOME/.cabal/store before_cache: - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log + - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log # remove files that are regenerated by 'cabal update' - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.* - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx + - 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 $HOME/.cabal/packages/head.hackage + - rm -rfv $CABALHOME/packages/head.hackage matrix: include: - compiler: "ghc-8.6.3" - # env: TEST=--disable-tests BENCH=--disable-benchmarks + # env: FOO=bar addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3], sources: [hvr-ghc]}} - compiler: "ghc-8.4.4" - # env: TEST=--disable-tests BENCH=--disable-benchmarks + # env: FOO=bar addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.4.4], sources: [hvr-ghc]}} - compiler: "ghc-8.2.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks + # env: FOO=bar addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.2.2], sources: [hvr-ghc]}} - compiler: "ghc-8.0.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks + # env: FOO=bar addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.0.2], sources: [hvr-ghc]}} before_install: - - HC=${CC} + - HC=/opt/ghc/bin/${CC} - HCPKG=${HC/ghc/ghc-pkg} - unset CC + - CABAL=/opt/ghc/bin/cabal + - CABALHOME=$HOME/.cabal + - "export PATH=\"$CABALHOME/bin:$PATH\"" - ROOTDIR=$(pwd) - - mkdir -p $HOME/.local/bin - - "PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH" - HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') )) - echo $HCNUMVER install: - - cabal --version + - ${CABAL} --version - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]" - - BENCH=${BENCH---enable-benchmarks} - - TEST=${TEST---enable-tests} - - UNCONSTRAINED=${UNCONSTRAINED-true} + - TEST=--enable-tests + - BENCH=--enable-benchmarks - GHCHEAD=${GHCHEAD-false} - - travis_retry cabal update -v - - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config" + - travis_retry ${CABAL} update -v + - "sed -i.bak 's/^jobs:/-- jobs:/' $CABALHOME/config" - rm -fv cabal.project cabal.project.local - - "sed -i.bak 's/-- ghc-options:.*/ghc-options: -j2/' ${HOME}/.cabal/config" - - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$' + - "sed -i.bak 's/-- ghc-options:.*/ghc-options: -j2/' $CABALHOME/config" + - grep -Ev -- '^\s*--' $CABALHOME/config | grep -Ev '^\s*$' - rm -f cabal.project - touch cabal.project - "printf 'packages: \"servant\"\\n' >> cabal.project" @@ -92,7 +92,6 @@ install: - "if [ $HCNUMVER -eq 80404 ] || [ $HCNUMVER -eq 80603 ] ; then printf 'packages: \"doc/cookbook/structuring-apis\"\\n' >> cabal.project ; fi" - "if [ $HCNUMVER -eq 80404 ] || [ $HCNUMVER -eq 80603 ] ; then printf 'packages: \"doc/cookbook/using-custom-monad\"\\n' >> cabal.project ; fi" - "if [ $HCNUMVER -eq 80404 ] || [ $HCNUMVER -eq 80603 ] ; then printf 'packages: \"doc/cookbook/using-free-client\"\\n' >> cabal.project ; fi" - - "printf 'write-ghc-environment-files: always\\n' >> cabal.project" - "echo 'constraints: foundation >=0.0.14' >> cabal.project" - "echo 'constraints: memory <0.14.12 || >0.14.12' >> cabal.project" - "echo 'allow-newer: servant-js:base' >> cabal.project" @@ -112,6 +111,7 @@ install: - "echo 'allow-newer: servant-quickcheck:http-client' >> cabal.project" - "echo 'reorder-goals: True' >> cabal.project" - "echo 'optimization: False' >> cabal.project " + - "printf 'write-ghc-environment-files: always\\n' >> cabal.project" - touch cabal.project.local - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-db-sqlite-simple|cookbook-file-upload|cookbook-generic|cookbook-https|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" - cat cabal.project || true @@ -147,10 +147,10 @@ install: # any command which exits with a non-zero exit code causes the build to fail. script: # test that source-distributions can be generated - - echo Packaging... && echo -en 'travis_fold:start:sdist\\r' - - cabal new-sdist all - - echo -en 'travis_fold:end:sdist\\r' - - echo Unpacking... && echo -en 'travis_fold:start:unpack\\r' + - "echo Packaging... && echo -en 'travis_fold:start:sdist\\\\r'" + - ${CABAL} new-sdist all + - "echo -en 'travis_fold:end:sdist\\\\r'" + - "echo Unpacking... && echo -en 'travis_fold:start:unpack\\\\r'" - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/ - cd ${DISTDIR} || false - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \; @@ -179,7 +179,6 @@ script: - "if [ $HCNUMVER -eq 80404 ] || [ $HCNUMVER -eq 80603 ] ; then printf 'packages: \"cookbook-structuring-apis-*/*.cabal\"\\n' >> cabal.project ; fi" - "if [ $HCNUMVER -eq 80404 ] || [ $HCNUMVER -eq 80603 ] ; then printf 'packages: \"cookbook-using-custom-monad-*/*.cabal\"\\n' >> cabal.project ; fi" - "if [ $HCNUMVER -eq 80404 ] || [ $HCNUMVER -eq 80603 ] ; then printf 'packages: \"cookbook-using-free-client-*/*.cabal\"\\n' >> cabal.project ; fi" - - "printf 'write-ghc-environment-files: always\\n' >> cabal.project" - "echo 'constraints: foundation >=0.0.14' >> cabal.project" - "echo 'constraints: memory <0.14.12 || >0.14.12' >> cabal.project" - "echo 'allow-newer: servant-js:base' >> cabal.project" @@ -199,22 +198,23 @@ script: - "echo 'allow-newer: servant-quickcheck:http-client' >> cabal.project" - "echo 'reorder-goals: True' >> cabal.project" - "echo 'optimization: False' >> cabal.project " + - "printf 'write-ghc-environment-files: always\\n' >> cabal.project" - touch cabal.project.local - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-db-sqlite-simple|cookbook-file-upload|cookbook-generic|cookbook-https|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" - cat cabal.project || true - cat cabal.project.local || true - - echo -en 'travis_fold:end:unpack\\r' + - "echo -en 'travis_fold:end:unpack\\\\r'" - - echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r' + - "echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\\\r'" # build & run tests, build benchmarks - - cabal new-build -w ${HC} ${TEST} ${BENCH} all - - echo -en 'travis_fold:end:build-everything\\r' - - if [ "x$TEST" = "x--enable-tests" ]; then cabal new-test -w ${HC} ${TEST} ${BENCH} all; fi + - ${CABAL} new-build -w ${HC} ${TEST} ${BENCH} all + - "echo -en 'travis_fold:end:build-everything\\\\r'" + - if [ "x$TEST" = "x--enable-tests" ]; then ${CABAL} new-test -w ${HC} ${TEST} ${BENCH} all; fi - - echo Haddock... && echo -en 'travis_fold:start:haddock\\r' + - "echo Haddock... && echo -en 'travis_fold:start:haddock\\\\r'" # haddock - - cabal new-haddock -w ${HC} ${TEST} ${BENCH} all + - ${CABAL} new-haddock -w ${HC} ${TEST} ${BENCH} all - - echo -en 'travis_fold:end:haddock\\r' + - "echo -en 'travis_fold:end:haddock\\\\r'" # REGENDATA ["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"] # EOF