|
1 | | -# This file has been generated -- see https://github.com/hvr/multi-ghc-travis |
2 | | -language: c |
3 | | -sudo: false |
| 1 | +sudo: required |
| 2 | + |
| 3 | +language: generic |
4 | 4 |
|
5 | 5 | cache: |
6 | 6 | directories: |
7 | | - - $HOME/.cabsnap |
8 | | - - $HOME/.cabal/packages |
9 | | - |
10 | | -before_cache: |
11 | | - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log |
12 | | - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar |
| 7 | + - $HOME/.ghc |
| 8 | + - $HOME/.cabal |
| 9 | + - $HOME/.stack |
| 10 | + - $HOME/.local/bin |
| 11 | + - $TRAVIS_BUILD_DIR/.stack-work |
13 | 12 |
|
14 | 13 | matrix: |
15 | 14 | include: |
16 | | - - env: CABALVER=1.24 GHCVER=8.0.1 DEPLOY_GITHUB_RELEASE=true |
17 | | - compiler: ": #GHC 8.0.1" |
18 | | - addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}} |
19 | | - - env: CABALVER=1.24 GHCVER=8.0.1 DEPLOY_GITHUB_RELEASE=true |
20 | | - compiler: ": #GHC 8.0.1" |
21 | | - os: osx |
| 15 | + # Build only on macOS |
| 16 | + - env: BUILD=stack |
| 17 | + compiler: ": #stack default osx" |
| 18 | + os: osx |
| 19 | + |
| 20 | +# Build only master and release tags |
| 21 | +branches: |
| 22 | + only: |
| 23 | + - master |
| 24 | + - /^\d+\.\d+\.\d+(\.\d+)?$/ |
| 25 | + |
22 | 26 |
|
23 | 27 | before_install: |
24 | | - - unset CC |
25 | | - - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH |
26 | | - # Work around travis issue by updating Homebrew: https://github.com/travis-ci/travis-ci/issues/8552 |
27 | | - - if [ "$TRAVIS_OS_NAME" = osx ]; |
28 | | - then |
29 | | - brew update; |
30 | | - brew install cabal-install; |
31 | | - brew install gnu-sed --with-default-names; |
32 | | - fi |
| 28 | + # Using compiler above sets CC to an invalid value, so unset it |
| 29 | + - unset CC |
| 30 | + - CABALARGS="" |
| 31 | + - 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 |
| 32 | + - | # Install stack |
| 33 | + mkdir -p ~/.local/bin |
| 34 | + travis_retry curl -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin |
| 35 | + # Use the more reliable S3 mirror of Hackage |
| 36 | + mkdir -p $HOME/.cabal |
| 37 | + echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config |
| 38 | + echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config |
33 | 39 |
|
34 | | -install: |
35 | | - - cabal --version |
36 | | - - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" |
37 | | - - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ]; |
38 | | - then |
39 | | - zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz > |
40 | | - $HOME/.cabal/packages/hackage.haskell.org/00-index.tar; |
41 | | - fi |
42 | | - - travis_retry cabal update -v |
43 | | - - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config |
44 | | - - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt |
45 | | - - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt |
46 | 40 |
|
47 | | -# check whether current requested install-plan matches cached package-db snapshot |
48 | | - - if diff -u $HOME/.cabsnap/installplan.txt installplan.txt; |
49 | | - then |
50 | | - echo "cabal build-cache HIT"; |
51 | | - rm -rfv .ghc; |
52 | | - cp -a $HOME/.cabsnap/ghc $HOME/.ghc; |
53 | | - cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/; |
54 | | - else |
55 | | - echo "cabal build-cache MISS"; |
56 | | - rm -rf $HOME/.cabsnap; |
57 | | - mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin; |
58 | | - cabal install --only-dependencies --enable-tests --enable-benchmarks; |
59 | | - fi |
| 41 | +install: |
| 42 | + - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" |
| 43 | + - SAVED_OPTIONS=$(set +o) |
| 44 | + - set -ex |
| 45 | + - stack --no-terminal --install-ghc build --only-dependencies |
| 46 | + - eval "$SAVED_OPTIONS" |
60 | 47 |
|
61 | | -# snapshot package-db on cache miss |
62 | | - - if [ ! -d $HOME/.cabsnap ]; |
63 | | - then |
64 | | - echo "snapshotting package-db to build-cache"; |
65 | | - mkdir $HOME/.cabsnap; |
66 | | - cp -a $HOME/.ghc $HOME/.cabsnap/ghc; |
67 | | - cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/; |
68 | | - fi |
69 | 48 |
|
70 | | -# Here starts the actual work to be performed for the package under test; |
71 | | -# any command which exits with a non-zero exit code causes the build to fail. |
72 | 49 | script: |
73 | | - - if [ -f configure.ac ]; then autoreconf -i; fi |
74 | | - - cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging |
75 | | - - cabal build # this builds all libraries and executables (including tests/benchmarks) |
76 | | - - cabal test |
77 | | - - cabal check |
78 | | - - cabal sdist # tests that a source-distribution can be generated |
| 50 | + - export PATH="${PATH}:$(pwd)/bin" |
| 51 | + - stack build --copy-bins --local-bin-path ./bin |
| 52 | + - source .travis-functions.sh |
| 53 | + - tar -jcvf $(mk_release_name dhall) bin/dhall |
| 54 | + - tar -jcvf $(mk_release_name dhall-json) bin/dhall-to-json bin/dhall-to-yaml bin/json-to-dhall bin/yaml-to-dhall |
| 55 | + - tar -jcvf $(mk_release_name dhall-bash) bin/dhall-to-bash |
| 56 | + - tar -jcvf $(mk_release_name dhall-lsp-server) bin/dhall-lsp-server |
| 57 | + - mkdir -p uploads |
| 58 | + - mv *.tar.bz2 uploads/ |
79 | 59 |
|
80 | | -# Check that the resulting source distribution can be built & installed. |
81 | | -# If there are no other `.tar.gz` files in `dist`, this can be even simpler: |
82 | | -# `cabal install --force-reinstalls dist/*-*.tar.gz` |
83 | | - - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && |
84 | | - (cd dist && cabal install --force-reinstalls "$SRC_TGZ") |
85 | | - |
86 | | -before_deploy: |
87 | | - - tar --create --file "$TRAVIS_OS_NAME.tar" --files-from /dev/null |
88 | | - - tar --append --file "$TRAVIS_OS_NAME.tar" --directory dist/build/dhall dhall |
89 | | - - gzip "$TRAVIS_OS_NAME.tar" |
90 | 60 |
|
91 | 61 | deploy: |
92 | | - provider: releases |
93 | | - api_key: "$GITHUB_OAUTH_TOKEN" |
94 | | - file: "$TRAVIS_OS_NAME.tar.gz" |
95 | | - on: |
96 | | - condition: $DEPLOY_GITHUB_RELEASE = true |
97 | | - tags: true |
98 | | - skip_cleanup: true |
99 | | - |
100 | | -# EOF |
| 62 | + - provider: releases |
| 63 | + api_key: $GITHUB_OAUTH_TOKEN |
| 64 | + file_glob: true |
| 65 | + file: uploads/* |
| 66 | + skip_cleanup: true |
| 67 | + on: |
| 68 | + tags: true |
| 69 | + script: |
| 70 | + - echo 'done' |
0 commit comments