File: .travis.yml

package info (click to toggle)
agda-stdlib 1.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 5,500 kB
  • sloc: haskell: 246; sh: 30; makefile: 21; lisp: 1
file content (165 lines) | stat: -rw-r--r-- 5,064 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
language: c
branches:
  only:
  - master
  - experimental

dist: xenial

cache:
  directories:
    - $HOME/.cabsnap

matrix:
  include:
    - env:
        GHC_VER=8.4.4
        CABAL_VER=2.2
        ALEX_VER=3.2.5
        HAPPY_VER=1.19.12
      addons:
        apt:
          packages:
            - cabal-install-2.2
            - ghc-8.4.4
          sources:
            - hvr-ghc

before_install:
  - export PATH=/opt/ghc/$GHC_VER/bin:/opt/cabal/$CABAL_VER/bin:/opt/alex/$ALEX_VER/bin:/opt/happy/$HAPPY_VER/bin:~/.cabal/bin/:$PATH;

install:
  - cabal update
  - sed -i 's/^jobs:/-- jobs:/' $HOME/.cabal/config

  # installing dependencies
  - cabal install alex-$ALEX_VER happy-$HAPPY_VER cpphs

  # installing Agda
  # Even if there seems to be duplicated code for master & experimental,
  # DO NOT refactor: they regularly get out of sync (typically master
  # builds with the released version while experimental uses some dev
  # version).

  # No matter the path, we should generate a $HOME/installplan.txt to
  # check whether the cache needs updating.

  - if [[ $TRAVIS_BRANCH = "master" ]]; then
       cd ../ &&
       git clone https://github.com/agda/agda &&
       cd agda &&
       git checkout 08dd23df8dd894737af98463f0b3f69d616e7b48 &&
       cabal install --only-dependencies --dry -v > $HOME/installplan.txt ;
    fi

  - if [[ $TRAVIS_BRANCH = "experimental" ]]; then
       cd ../ &&
       git clone https://github.com/agda/agda &&
       cd agda &&
       git checkout c2d5ec4b2403c68d615b81258d6131774e492797 &&
       cabal install --only-dependencies --dry -v > $HOME/installplan.txt ;
    fi

  # checking whether .ghc is still valid
  - sed -i -e '1,/^Resolving /d' $HOME/installplan.txt; cat $HOME/installplan.txt
  - touch $HOME/.cabsnap/installplan.txt
  - mkdir -p $HOME/.cabsnap/ghc $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin
  - if diff -u $HOME/.cabsnap/installplan.txt $HOME/installplan.txt;
    then
      echo "cabal build-cache HIT";
      rm -rfv .ghc;
      cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
      cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
    else
      echo "cabal build-cache MISS";
      rm -rf $HOME/.cabsnap;
      mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
    fi

  - if [[ $TRAVIS_BRANCH = "master" ]]; then
      cabal install ;
    fi

  - if [[ $TRAVIS_BRANCH = "experimental" ]]; then
      cabal install ;
    fi

  # snapshot package-db on cache miss
  - echo "snapshotting package-db to build-cache";
    mkdir $HOME/.cabsnap;
    cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
    cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin $HOME/installplan.txt $HOME/.cabsnap/;

  - if [[ $TRAVIS_BRANCH = "master" ]]; then
      cd ../ ;
    fi

  - if [[ $TRAVIS_BRANCH = "experimental" ]]; then
      cd ../ ;
    fi

  # installing fix-whitespace
  - git clone https://github.com/agda/fix-whitespace --depth=1
  - cd fix-whitespace
  - cabal install fix-whitespace.cabal
  - cd ../

  # generating Everything.agda
  - cd agda-stdlib
  - cabal install lib.cabal
  - runghc GenerateEverything.hs

  # setting up travis-specific scripts and files
  - cp travis/* .

before_script:
  - export RTS_OPTIONS="+RTS -M3.5G -H3.5G -A128M -RTS"

script:
  # generating index.agda
  - ./index.sh
  # detecting whitespace violations
  - fix-whitespace --check
  # expose the value of RTS_OPTIONS
  - echo $RTS_OPTIONS
  # checking safe modules build with --safe
  - agda $RTS_OPTIONS -i . -i src/ --safe EverythingSafeGuardedness.agda
  - agda $RTS_OPTIONS -i . -i src/ --safe EverythingSafeSizedTypes.agda
  # detecting basic compilation errors
  - agda $RTS_OPTIONS -i . -i src/ -c --no-main Everything.agda
  # compiling & running the examples using the FFI
  - agda $RTS_OPTIONS -i . -i src/ -c README/Foreign/Haskell.agda && ./Haskell
  # building the docs
  - agda $RTS_OPTIONS -i . -i src/ --html safe.agda
  - agda $RTS_OPTIONS -i . -i src/ --html index.agda

  # moving everything to the appropriate directory
  - if [[ $TRAVIS_BRANCH = "master" ]]; then
      mv html/* . ;
    fi
  - if [[ $TRAVIS_BRANCH = "experimental" ]]; then
      mv html/* experimental/ ;
    fi

after_success:
  # uploading to gh-pages
  - git init
  - git config --global user.name "Travis CI bot"
  - git config --global user.email "travis-ci-bot@travis.fake"
  - git remote add upstream https://$GH_TOKEN@github.com/agda/agda-stdlib.git &>/dev/null
  - git fetch upstream && git reset upstream/gh-pages
  - if [[ $TRAVIS_BRANCH = "master" ]]; then
      git checkout HEAD -- v0.16/ v0.17/ v1.0/ v1.1/ v1.2/ experimental/ ;
    fi
  - if [[ $TRAVIS_BRANCH = "experimental" ]]; then
      git checkout HEAD -- *.html v0.16/ v0.17/ v1.0/ v1.1/ v1.2/ ;
    fi
  - git add -f \*.html
  - git commit -m "Automatic HTML update via Travis"
  - if [[ $TRAVIS_PULL_REQUEST = "false" && ($TRAVIS_BRANCH = "master" || $TRAVIS_BRANCH = "experimental") ]]; then
       git push -q upstream HEAD:gh-pages &>/dev/null;
    fi

notifications:
  email: false