summaryrefslogtreecommitdiffstats
path: root/src/zstd/.travis.yml
blob: a4046287feab309e8c1c8e4b97a8938f8247fa26 (plain)
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
# Medium Tests: Run on all commits/PRs to dev branch

language: c

git:
  depth: 1

branches:
  only:
  - dev
  - master
  - travisTest

addons:
  apt:
    update: true

env:
  global:
    - FUZZERTEST=-T2mn
      ZSTREAM_TESTTIME=-T2mn
      DECODECORPUS_TESTTIME=-T1mn


matrix:
  fast_finish: true
  include:
    - name: icc
      compiler: icc
      env:
      - C_COMPILER=icc
      - CXX_COMPILER=icpc
      install:
      - source /opt/intel/inteloneapi/compiler/latest/env/vars.sh
      addons:
        apt:
          sources:
          - sourceline: 'deb https://apt.repos.intel.com/oneapi all main'
            key_url: 'https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB'
          packages:
          - intel-oneapi-icc
      script: make check

    - name: arm64    # ~2.5 mn
      os: linux
      arch: arm64
      script:
        - make check

    - name: make benchmarking
      script:
        - make benchmarking

    - name: make test (complete)
      script:
        # DEVNULLRIGHTS : will request sudo rights to test permissions on /dev/null
        - DEVNULLRIGHTS=test make test

    - name: gcc-6 + gcc-7 + libzstdmt compilation   # ~ 6mn
      script:
        - make gcc6install gcc7install
        - CC=gcc-6 CFLAGS=-Werror make -j all
        - make clean
        - CC=gcc-7 CFLAGS=-Werror make -j all
        - make clean
        - LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt
        - make -C tests zbufftest-dll
        # LDFLAGS=-Wl,--no-undefined : will make the linker fail if dll is underlinked
        # zbufftest-dll : test that a user program can link to multi-threaded libzstd without specifying -pthread

    - name: gcc-8 + ASan + UBSan + Test Zstd   # ~6.5mn
      script:
        - make gcc8install
        - CC=gcc-8 CFLAGS="-Werror" make -j all
        - make clean
        - CC=gcc-8 make -j uasan-test-zstd </dev/null   # test when stdin is not a tty

    - name: gcc-6 + ASan + UBSan + Test Zstd, 32bit mode    # ~4mn
      script:
        - make gcc6install libc6install
        - CC=gcc-6 CFLAGS="-Werror -m32" make -j all32
        - make clean
        - CC=gcc-6 make -j uasan-test-zstd32   # note : can complain about pointer overflow

    - name: clang-3.8 + MSan + Test Zstd    # ~3.5mn
      script:
        - make clang38install
        # External libraries must be turned off when using MSAN tests,
        # because they are not msan-instrumented,
        # so any data coming from these libraries is always considered "uninitialized"
        - CC=clang-3.8 make clean msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0

    - name: Minimal Decompressor Macros    # ~5mn
      script:
        - make clean
        - make -j all check ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
        - make clean
        - make -j all check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
        - make clean
        - make -j all check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
        - make clean
        - make -j all check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"

    - name: cmake build and test check    # ~6mn
      script:
        - make cmakebuild

    - name: static analyzer scanbuild    # ~26mn
      dist: trusty  # note : it's important to pin down a version of static analyzer, since different versions report different false positives
      script:
        - make staticAnalyze

    - name: gcc-8 + ASan + UBSan + Fuzz Test    # ~19mn
      script:
        - make gcc8install
        - CC=gcc-8 make clean uasan-fuzztest

    - name: gcc-6 + ASan + UBSan + Fuzz Test 32bit    # ~15.5mn
      script:
        - make gcc6install libc6install
        - CC=gcc-6 CFLAGS="-O2 -m32" make uasan-fuzztest   # can complain about pointer overflow

    - name: clang-3.8 + MSan + Fuzz Test     # ~14.5mn
      script:
        - make clang38install
        - CC=clang-3.8 make clean msan-fuzztest

    - name: ASan + UBSan + MSan + Regression Test    # ~ 4.5mn
      script:
        - make -j uasanregressiontest
        - make clean
        - make -j msanregressiontest

    - name: C++, gnu90 and c99 compatibility   # ~3mn
      script:
        - make cxxtest
        - make clean
        - make gnu90build
        - make clean
        - make c99build
        - make clean
        - make travis-install    # just ensures `make install` works

    - name: mingw cross-compilation
      script :
        - sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix;
        - CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CFLAGS="-Werror -O1" make zstd

    - name: Valgrind + Fuzz Test Stack Mode    # ~ 7mn
      script:
        - make valgrindinstall
        - make -C tests clean valgrindTest
        - make clean
        - make -C tests test-fuzzer-stackmode

    - name: Qemu ARM emulation + Fuzz Test    # ~13.5mn
      script:
        - make arminstall
        - make armfuzz

    # Introduced to check compat with old toolchains, to prevent e.g. #1872
    - name: ARM Build Test (on Trusty)
      dist: trusty
      script:
        - make arminstall
        - make armbuild

    - name: Qemu PPC + Fuzz Test    # ~13mn
      dist: trusty   # it seems ppc cross-compilation fails on "current"
      script:
        - make ppcinstall
        - make ppcfuzz

    # check release number (release only)
    - name: Tag-Specific Test
      if: tag =~ ^v[0-9]\.[0-9]
      script:
        - make -C tests checkTag
        - tests/checkTag "$TRAVIS_BRANCH"

    # tests for master branch and cron job only
    - name: OS-X    # ~13mn
      if: branch = master
      os: osx
      script:
        - make test
        - make -C lib all

    - name: zbuff test
      if: branch = master
      script:
        - make -C tests test-zbuff

    - name: Versions Compatibility Test   # 11.5mn
      if: branch = master
      script:
        - make -C tests versionsTest

    - name: thread sanitizer   # ~29mn
      if: branch = master
      script:
        - make clang38install
        - CC=clang-3.8 make tsan-test-zstream
        - CC=clang-3.8 make tsan-fuzztest

    - name: PPC64LE + Fuzz test  # ~13mn
      if: branch = master
      arch: ppc64le
      script:
        - cat /proc/cpuinfo
        - make test

    - name: Qemu PPC64 + Fuzz test  # ~13mn, presumed Big-Endian (?)
      dist: trusty  # note : PPC64 cross-compilation for Qemu tests seems broken on Xenial
      if: branch = master
      script:
        - make ppcinstall
        - make ppc64fuzz

    # note : we already have aarch64 tests on hardware
    - name: Qemu aarch64 + Fuzz Test (on Xenial)    # ~14mn
      if: branch = master
      dist: xenial
      script:
        - make arminstall
        - make aarch64fuzz

    - name: zlib wrapper test    # ~7.5mn
      if: branch = master
      script:
        - make gpp6install valgrindinstall
        - make -C zlibWrapper test
        - make -C zlibWrapper valgrindTest

    - name: LZ4, thread pool, and partial libs tests    # ~2mn
      if: branch = master
      script:
        - make lz4install
        - make -C tests test-lz4
        - make clean
        - make -C tests test-pool
        - make clean
        - bash tests/libzstd_partial_builds.sh

    # meson dedicated test
    - name: Xenial (Meson + clang)    # ~15mn
      if: branch = master
      dist: xenial
      language: cpp
      compiler: clang
      install:
        - sudo apt-get install -qq liblz4-dev valgrind tree
        - |
          travis_retry curl -o ~/ninja.zip -L 'https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip' &&
          unzip ~/ninja.zip -d ~/.local/bin
        - |
          travis_retry curl -o ~/get-pip.py -L 'https://bootstrap.pypa.io/get-pip.py' &&
          python3 ~/get-pip.py --user &&
          pip3 install --user meson
      script:
        - |
          meson setup \
            --buildtype=debugoptimized \
            -Db_lundef=false \
            -Dauto_features=enabled \
            -Dbin_programs=true \
            -Dbin_tests=true \
            -Dbin_contrib=true \
            -Ddefault_library=both \
             build/meson builddir
        - pushd builddir
        - ninja
        - meson test --verbose --no-rebuild
        - DESTDIR=./staging ninja install
        - tree ./staging
      after_failure:
        - cat "$TRAVIS_BUILD_DIR"/builddir/meson-logs/testlog.txt

  allow_failures:
    - env: ALLOW_FAILURES=true