.travis.yml 20.1 KB
Newer Older
O
Olli-Pekka Heinisuo 已提交
1 2
env:
    global:
3 4
        - "PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'"
        # pip dependencies to _test_ your project
5
        - TEST_DEPENDS="numpy==1.11.1"
6
        # params to bdist_wheel. used to set osx build target.
7
        - CONFIG_PATH="travis_config.sh"
8
        - USE_CCACHE=1
O
Olli-Pekka Heinisuo 已提交
9
        - UNICODE_WIDTH=32
O
Olli-Pekka Heinisuo 已提交
10
        - SDIST=0
11 12 13 14 15 16

# Save some time, we and setup check them out on demand instead
# https://docs.travis-ci.com/user/customizing-the-build/#Git-Clone-Depth
git:
    submodules: false

17 18 19
# https://docs.travis-ci.com/user/caching
cache:
  directories:
I
Ivan Pozdeev 已提交
20 21
    # `cache: ccache: true` has no effect if `language:` is not `c` or `cpp`
    - $HOME/.ccache
I
Ivan Pozdeev 已提交
22

I
Ivan Pozdeev 已提交
23 24 25 26 27
# Add more cache stages (s2 etc) and corresponding OSX jobs like s1
# if brew builds start to take longer than one Travis time limit
stages:
  - s1
  - final
28

29
jobs:
30
  fast_finish: true
O
Olli-Pekka Heinisuo 已提交
31
  # Travis exclude is buggy, this seems to be the only way to disable default build
32 33
  exclude:
    - language: ruby
34
  include:
N
native-api 已提交
35
    - os: osx
36 37
      env:
        - MB_PYTHON_VERSION=3.8
O
Olli-Pekka Heinisuo 已提交
38
      language: generic
O
Olli-Pekka Heinisuo 已提交
39
      osx_image: xcode9.4
N
native-api 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
      stage: s1
      workspaces:
        create:
          name: brew_cache
          paths:
            # https://stackoverflow.com/questions/39930171/cache-brew-builds-with-travis-ci
            - $HOME/Library/Caches/Homebrew
            - /usr/local/Homebrew/
            # used in OSX custom build script dealing with local bottle caching
            - $HOME/local_bottle_metadata
      #workspaces share within the same build, cache shares between builds
      cache:
        directories:
          # `cache: ccache: true` has no effect if `language:` is not `c` or `cpp`
          - $HOME/.ccache
          # https://stackoverflow.com/questions/39930171/cache-brew-builds-with-travis-ci
          - $HOME/Library/Caches/Homebrew
          - /usr/local/Homebrew/
          # used in OSX custom build script dealing with local bottle caching
          - $HOME/local_bottle_metadata

O
Olli-Pekka Heinisuo 已提交
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
    # source distributions
    - os: linux
      env:
        - SDIST=1
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
      python: "3.8"
      language: python
      dist: xenial
    - os: linux
      env:
        - SDIST=1
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
      python: "3.8"
      language: python
      dist: xenial
    - os: linux
      env:
        - SDIST=1
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
      python: "3.8"
      language: python
      dist: xenial
    - os: linux
      env:
        - SDIST=1
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
      python: "3.8"
      language: python
      dist: xenial

O
Olli-Pekka Heinisuo 已提交
95
    # default builds for MacOS
N
native-api 已提交
96 97 98
      #further jobs in the list will use the same stage until the next assignment
    - stage: final
    - os: osx
99
      language: generic
O
Olli-Pekka Heinisuo 已提交
100
      osx_image: xcode9.4
101 102 103
      env:
        - MB_PYTHON_VERSION=3.5
        - ENABLE_CONTRIB=0
O
Olli-Pekka Heinisuo 已提交
104
        - ENABLE_HEADLESS=0
N
native-api 已提交
105 106 107
      workspaces:
        use: brew_cache
    - os: osx
108
      language: generic
O
Olli-Pekka Heinisuo 已提交
109
      osx_image: xcode9.4
110 111 112
      env:
        - MB_PYTHON_VERSION=3.6
        - ENABLE_CONTRIB=0
O
Olli-Pekka Heinisuo 已提交
113
        - ENABLE_HEADLESS=0
N
native-api 已提交
114 115 116
      workspaces:
        use: brew_cache
    - os: osx
117
      language: generic
O
Olli-Pekka Heinisuo 已提交
118
      osx_image: xcode9.4
119 120 121 122
      env:
        - MB_PYTHON_VERSION=3.7
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
123
        - TEST_DEPENDS=numpy==1.14.5
N
native-api 已提交
124 125
      workspaces:
        use: brew_cache
O
Olli-Pekka Heinisuo 已提交
126
    - os: osx
127
      language: generic
O
Olli-Pekka Heinisuo 已提交
128
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
129 130 131 132 133 134 135
      env:
        - MB_PYTHON_VERSION=3.8
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.17.3
      workspaces:
        use: brew_cache
O
Olli-Pekka Heinisuo 已提交
136 137

    # headless builds for MacOS
N
native-api 已提交
138
    - os: osx
139
      language: generic
O
Olli-Pekka Heinisuo 已提交
140
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
141 142 143 144
      env:
        - MB_PYTHON_VERSION=3.5
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
N
native-api 已提交
145 146 147
      workspaces:
        use: brew_cache
    - os: osx
148
      language: generic
O
Olli-Pekka Heinisuo 已提交
149
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
150 151 152 153
      env:
        - MB_PYTHON_VERSION=3.6
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
N
native-api 已提交
154 155 156
      workspaces:
        use: brew_cache
    - os: osx
157
      language: generic
O
Olli-Pekka Heinisuo 已提交
158
      osx_image: xcode9.4
159 160 161 162
      env:
        - MB_PYTHON_VERSION=3.7
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
163
        - TEST_DEPENDS=numpy==1.14.5
N
native-api 已提交
164 165
      workspaces:
        use: brew_cache
O
Olli-Pekka Heinisuo 已提交
166
    - os: osx
167
      language: generic
O
Olli-Pekka Heinisuo 已提交
168
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
169 170 171 172 173 174 175
      env:
        - MB_PYTHON_VERSION=3.8
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
        - TEST_DEPENDS=numpy==1.17.3
      workspaces:
        use: brew_cache
176

O
Olli-Pekka Heinisuo 已提交
177
    # Contrib builds for MacOS
N
native-api 已提交
178
    - os: osx
179
      language: generic
O
Olli-Pekka Heinisuo 已提交
180
      osx_image: xcode9.4
181 182
      env:
        - MB_PYTHON_VERSION=3.5
183
        - ENABLE_CONTRIB=1
O
Olli-Pekka Heinisuo 已提交
184
        - ENABLE_HEADLESS=0
N
native-api 已提交
185 186 187
      workspaces:
        use: brew_cache
    - os: osx
188
      language: generic
O
Olli-Pekka Heinisuo 已提交
189
      osx_image: xcode9.4
190 191
      env:
        - MB_PYTHON_VERSION=3.6
192
        - ENABLE_CONTRIB=1
O
Olli-Pekka Heinisuo 已提交
193
        - ENABLE_HEADLESS=0
N
native-api 已提交
194 195 196
      workspaces:
        use: brew_cache
    - os: osx
197
      language: generic
O
Olli-Pekka Heinisuo 已提交
198
      osx_image: xcode9.4
199 200 201 202
      env:
        - MB_PYTHON_VERSION=3.7
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
203
        - TEST_DEPENDS=numpy==1.14.5
N
native-api 已提交
204 205
      workspaces:
        use: brew_cache
O
Olli-Pekka Heinisuo 已提交
206
    - os: osx
207
      language: generic
O
Olli-Pekka Heinisuo 已提交
208
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
209 210 211 212 213 214 215
      env:
        - MB_PYTHON_VERSION=3.8
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.17.3
      workspaces:
        use: brew_cache
O
Olli-Pekka Heinisuo 已提交
216 217

    # headless contrib builds for MacOS
N
native-api 已提交
218
    - os: osx
219
      language: generic
O
Olli-Pekka Heinisuo 已提交
220
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
221 222 223 224
      env:
        - MB_PYTHON_VERSION=3.5
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
N
native-api 已提交
225 226 227
      workspaces:
        use: brew_cache
    - os: osx
228
      language: generic
O
Olli-Pekka Heinisuo 已提交
229
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
230 231 232 233
      env:
        - MB_PYTHON_VERSION=3.6
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
N
native-api 已提交
234 235 236
      workspaces:
        use: brew_cache
    - os: osx
237
      language: generic
O
Olli-Pekka Heinisuo 已提交
238
      osx_image: xcode9.4
239 240 241 242
      env:
        - MB_PYTHON_VERSION=3.7
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
243
        - TEST_DEPENDS=numpy==1.14.5
N
native-api 已提交
244 245
      workspaces:
        use: brew_cache
O
Olli-Pekka Heinisuo 已提交
246
    - os: osx
247
      language: generic
O
Olli-Pekka Heinisuo 已提交
248
      osx_image: xcode9.4
O
Olli-Pekka Heinisuo 已提交
249 250 251 252 253 254 255
      env:
        - MB_PYTHON_VERSION=3.8
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
        - TEST_DEPENDS=numpy==1.17.3
      workspaces:
        use: brew_cache
256

O
Olli-Pekka Heinisuo 已提交
257
    # default builds for Linux
O
Olli-Pekka Heinisuo 已提交
258
    - os: linux
259 260 261
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
262 263 264 265
      env:
        - MB_PYTHON_VERSION=3.5
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
I
Ivan Pozdeev 已提交
266 267
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
268
    - os: linux
269 270 271
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
272 273 274 275 276
      env:
        - MB_PYTHON_VERSION=3.5
        - PLAT=i686
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
O
Olli-Pekka Heinisuo 已提交
277
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
278 279
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
280
    - os: linux
281 282 283
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
284 285 286 287 288
      env:
        - MB_PYTHON_VERSION=3.6
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.11.3
I
Ivan Pozdeev 已提交
289 290
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
291
    - os: linux
292 293 294
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
295 296 297 298 299 300
      env:
        - MB_PYTHON_VERSION=3.6
        - PLAT=i686
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.11.3
O
Olli-Pekka Heinisuo 已提交
301
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
302 303
      cache:
        directories: $HOME/.ccache
304
    - os: linux
305 306 307
      language: generic
      dist: xenial
      services: docker
308 309 310 311 312
      env:
        - MB_PYTHON_VERSION=3.7
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.14.5
I
Ivan Pozdeev 已提交
313 314
      cache:
        directories: $HOME/.ccache
315
    - os: linux
316 317 318
      language: generic
      dist: xenial
      services: docker
319 320 321 322 323 324
      env:
        - MB_PYTHON_VERSION=3.7
        - PLAT=i686
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.14.5
O
Olli-Pekka Heinisuo 已提交
325
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
326 327
      cache:
        directories: $HOME/.ccache
328
    - os: linux
329 330 331
      language: generic
      dist: xenial
      services: docker
332 333 334 335 336 337 338 339
      env:
        - MB_PYTHON_VERSION=3.8
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.17.3
      cache:
        directories: $HOME/.ccache
    - os: linux
340 341 342
      language: generic
      dist: xenial
      services: docker
343 344 345 346 347 348
      env:
        - MB_PYTHON_VERSION=3.8
        - PLAT=i686
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=0
        - TEST_DEPENDS=numpy==1.17.3
O
Olli-Pekka Heinisuo 已提交
349
        - USE_CCACHE=0
350 351
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
352 353

    # headless builds for Linux
354
    - os: linux
355 356 357
      language: generic
      dist: xenial
      services: docker
358 359 360
      env:
        - MB_PYTHON_VERSION=3.5
        - ENABLE_CONTRIB=0
O
Olli-Pekka Heinisuo 已提交
361
        - ENABLE_HEADLESS=1
I
Ivan Pozdeev 已提交
362 363
      cache:
        directories: $HOME/.ccache
364
    - os: linux
365 366 367
      language: generic
      dist: xenial
      services: docker
368 369 370 371
      env:
        - MB_PYTHON_VERSION=3.5
        - PLAT=i686
        - ENABLE_CONTRIB=0
O
Olli-Pekka Heinisuo 已提交
372
        - ENABLE_HEADLESS=1
O
Olli-Pekka Heinisuo 已提交
373
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
374 375
      cache:
        directories: $HOME/.ccache
376
    - os: linux
377 378 379
      language: generic
      dist: xenial
      services: docker
380 381 382
      env:
        - MB_PYTHON_VERSION=3.6
        - ENABLE_CONTRIB=0
O
Olli-Pekka Heinisuo 已提交
383
        - ENABLE_HEADLESS=1
384
        - TEST_DEPENDS=numpy==1.11.3
I
Ivan Pozdeev 已提交
385 386
      cache:
        directories: $HOME/.ccache
387
    - os: linux
388 389 390
      language: generic
      dist: xenial
      services: docker
391 392 393 394
      env:
        - MB_PYTHON_VERSION=3.6
        - PLAT=i686
        - ENABLE_CONTRIB=0
O
Olli-Pekka Heinisuo 已提交
395
        - ENABLE_HEADLESS=1
396
        - TEST_DEPENDS=numpy==1.11.3
O
Olli-Pekka Heinisuo 已提交
397
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
398 399
      cache:
        directories: $HOME/.ccache
400
    - os: linux
401 402 403
      language: generic
      dist: xenial
      services: docker
404 405 406 407 408
      env:
        - MB_PYTHON_VERSION=3.7
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
        - TEST_DEPENDS=numpy==1.14.5
I
Ivan Pozdeev 已提交
409 410
      cache:
        directories: $HOME/.ccache
411
    - os: linux
412 413 414
      language: generic
      dist: xenial
      services: docker
415 416 417 418 419 420
      env:
        - MB_PYTHON_VERSION=3.7
        - PLAT=i686
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
        - TEST_DEPENDS=numpy==1.14.5
O
Olli-Pekka Heinisuo 已提交
421
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
422 423
      cache:
        directories: $HOME/.ccache
424
    - os: linux
425 426 427
      language: generic
      dist: xenial
      services: docker
428 429 430 431 432 433 434 435
      env:
        - MB_PYTHON_VERSION=3.8
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
        - TEST_DEPENDS=numpy==1.17.3
      cache:
        directories: $HOME/.ccache
    - os: linux
436 437 438
      language: generic
      dist: xenial
      services: docker
439 440 441 442 443 444
      env:
        - MB_PYTHON_VERSION=3.8
        - PLAT=i686
        - ENABLE_CONTRIB=0
        - ENABLE_HEADLESS=1
        - TEST_DEPENDS=numpy==1.17.3
O
Olli-Pekka Heinisuo 已提交
445
        - USE_CCACHE=0
446 447
      cache:
        directories: $HOME/.ccache
448 449

    # contrib builds for Linux
O
Olli-Pekka Heinisuo 已提交
450
    - os: linux
451 452 453
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
454 455 456 457
      env:
        - MB_PYTHON_VERSION=3.5
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
I
Ivan Pozdeev 已提交
458 459
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
460
    - os: linux
461 462 463
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
464 465 466 467 468
      env:
        - MB_PYTHON_VERSION=3.5
        - PLAT=i686
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
O
Olli-Pekka Heinisuo 已提交
469
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
470 471
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
472
    - os: linux
473 474 475
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
476 477 478 479 480
      env:
        - MB_PYTHON_VERSION=3.6
        - TEST_DEPENDS=numpy==1.11.3
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
I
Ivan Pozdeev 已提交
481 482
      cache:
        directories: $HOME/.ccache
O
Olli-Pekka Heinisuo 已提交
483
    - os: linux
484 485 486
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
487 488 489 490 491 492
      env:
        - MB_PYTHON_VERSION=3.6
        - PLAT=i686
        - TEST_DEPENDS=numpy==1.11.3
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
O
Olli-Pekka Heinisuo 已提交
493
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
494 495
      cache:
        directories: $HOME/.ccache
496
    - os: linux
497 498 499
      language: generic
      dist: xenial
      services: docker
500 501 502 503 504
      env:
        - MB_PYTHON_VERSION=3.7
        - TEST_DEPENDS=numpy==1.14.5
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
I
Ivan Pozdeev 已提交
505 506
      cache:
        directories: $HOME/.ccache
507
    - os: linux
508 509 510
      language: generic
      dist: xenial
      services: docker
511 512 513 514 515 516
      env:
        - MB_PYTHON_VERSION=3.7
        - PLAT=i686
        - TEST_DEPENDS=numpy==1.14.5
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
O
Olli-Pekka Heinisuo 已提交
517
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
518 519
      cache:
        directories: $HOME/.ccache
520
    - os: linux
521 522 523
      language: generic
      dist: xenial
      services: docker
524 525 526 527 528 529 530 531
      env:
        - MB_PYTHON_VERSION=3.8
        - TEST_DEPENDS=numpy==1.17.3
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
      cache:
        directories: $HOME/.ccache
    - os: linux
532 533 534
      language: generic
      dist: xenial
      services: docker
535 536 537 538 539 540
      env:
        - MB_PYTHON_VERSION=3.8
        - PLAT=i686
        - TEST_DEPENDS=numpy==1.17.3
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=0
O
Olli-Pekka Heinisuo 已提交
541
        - USE_CCACHE=0
542 543
      cache:
        directories: $HOME/.ccache
544

O
Olli-Pekka Heinisuo 已提交
545 546

    # headless contrib builds for Linux
547
    - os: linux
548 549 550
      language: generic
      dist: xenial
      services: docker
551 552
      env:
        - MB_PYTHON_VERSION=3.5
553
        - ENABLE_CONTRIB=1
O
Olli-Pekka Heinisuo 已提交
554
        - ENABLE_HEADLESS=1
I
Ivan Pozdeev 已提交
555 556
      cache:
        directories: $HOME/.ccache
557
    - os: linux
558 559 560
      language: generic
      dist: xenial
      services: docker
O
Olli-Pekka Heinisuo 已提交
561 562
      env:
        - MB_PYTHON_VERSION=3.5
563
        - PLAT=i686
564
        - ENABLE_CONTRIB=1
O
Olli-Pekka Heinisuo 已提交
565
        - ENABLE_HEADLESS=1
O
Olli-Pekka Heinisuo 已提交
566
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
567 568
      cache:
        directories: $HOME/.ccache
569
    - os: linux
570 571 572
      language: generic
      dist: xenial
      services: docker
573 574
      env:
        - MB_PYTHON_VERSION=3.6
575
        - TEST_DEPENDS=numpy==1.11.3
576
        - ENABLE_CONTRIB=1
O
Olli-Pekka Heinisuo 已提交
577
        - ENABLE_HEADLESS=1
I
Ivan Pozdeev 已提交
578 579
      cache:
        directories: $HOME/.ccache
580
    - os: linux
581 582 583
      language: generic
      dist: xenial
      services: docker
584 585 586
      env:
        - MB_PYTHON_VERSION=3.6
        - PLAT=i686
587
        - TEST_DEPENDS=numpy==1.11.3
588
        - ENABLE_CONTRIB=1
O
Olli-Pekka Heinisuo 已提交
589
        - ENABLE_HEADLESS=1
O
Olli-Pekka Heinisuo 已提交
590
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
591 592
      cache:
        directories: $HOME/.ccache
593
    - os: linux
594 595 596
      language: generic
      dist: xenial
      services: docker
597 598 599 600 601
      env:
        - MB_PYTHON_VERSION=3.7
        - TEST_DEPENDS=numpy==1.14.5
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
I
Ivan Pozdeev 已提交
602 603
      cache:
        directories: $HOME/.ccache
604
    - os: linux
605 606 607
      language: generic
      dist: xenial
      services: docker
608 609 610 611 612 613
      env:
        - MB_PYTHON_VERSION=3.7
        - PLAT=i686
        - TEST_DEPENDS=numpy==1.14.5
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
O
Olli-Pekka Heinisuo 已提交
614
        - USE_CCACHE=0
I
Ivan Pozdeev 已提交
615 616
      cache:
        directories: $HOME/.ccache
617
    - os: linux
618 619 620
      language: generic
      dist: xenial
      services: docker
621 622 623 624 625 626 627 628
      env:
        - MB_PYTHON_VERSION=3.8
        - TEST_DEPENDS=numpy==1.17.3
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
      cache:
        directories: $HOME/.ccache
    - os: linux
629 630 631
      language: generic
      dist: xenial
      services: docker
632 633 634 635 636 637
      env:
        - MB_PYTHON_VERSION=3.8
        - PLAT=i686
        - TEST_DEPENDS=numpy==1.17.3
        - ENABLE_CONTRIB=1
        - ENABLE_HEADLESS=1
O
Olli-Pekka Heinisuo 已提交
638
        - USE_CCACHE=0
639 640
      cache:
        directories: $HOME/.ccache
641

642 643 644
# The first line is printed in the folding header in Travis output
before_install: |
    set -e
I
Ivan Pozdeev 已提交
645

O
Olli-Pekka Heinisuo 已提交
646
    if [ -n "$SDIST" ]; then
O
Olli-Pekka Heinisuo 已提交
647 648 649 650 651 652
        echo "sdist build"
    else
        # Check out and prepare the source
        # Multibuild doesn't have releases, so --depth would break eventually (see
        # https://superuser.com/questions/1240216/server-does-not-allow-request-for-unadvertised)
        git submodule update --init multibuild
I
Ivan Pozdeev 已提交
653

O
Olli-Pekka Heinisuo 已提交
654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681
        source multibuild/common_utils.sh

        # https://github.com/matthew-brett/multibuild/issues/116
        if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export ARCH_FLAGS=" "; fi

        source multibuild/travis_steps.sh
        # This sets -x

        source travis_multibuild_customize.sh
        echo $ENABLE_CONTRIB > contrib.enabled
        echo $ENABLE_HEADLESS > headless.enabled

        if [ -n "$IS_OSX" ]; then
            echo "homebrew"
            TAPS="$(brew --repository)/Library/Taps"
            if [ -e "$TAPS/caskroom/homebrew-cask" -a -e "$TAPS/homebrew/homebrew-cask" ]; then
                rm -rf "$TAPS/caskroom/homebrew-cask"
            fi
            find "$TAPS" -type d -name .git -exec \
                    bash -xec '
                        cd $(dirname '\''{}'\'') || echo "status: $?"
                        git clean -fxd || echo "status: $?"
                        sleep 1 || echo "status: $?"
                        git status || echo "status: $?"' \; || echo "status: $?"
            brew_cache_cleanup
        fi
        echo "end"
        # Not interested in travis internal scripts' output
682
    fi
O
Olli-Pekka Heinisuo 已提交
683

684 685 686 687 688
    set +x

install: |
    # Build and package
    set -x
O
Olli-Pekka Heinisuo 已提交
689

O
Olli-Pekka Heinisuo 已提交
690 691 692
    if [ -n "$SDIST" ]; then
        python -m pip install --upgrade pip
        python -m pip install scikit-build
O
Olli-Pekka Heinisuo 已提交
693 694 695 696 697
        python setup.py sdist
    else
        build_wheel $REPO_DIR $PLAT
    fi

698 699 700 701 702
    set +x

script: |
    # Install and run tests
    set -x
O
Olli-Pekka Heinisuo 已提交
703

O
Olli-Pekka Heinisuo 已提交
704
    if [ -n "$SDIST" ]; then
O
Olli-Pekka Heinisuo 已提交
705 706 707 708 709
      echo "sdist"
    else
        install_run $PLAT && rc=$? || rc=$?
    fi

710 711
    set +x

O
Olli-Pekka Heinisuo 已提交
712 713
    # otherwise, Travis logic terminates prematurely
    # https://travis-ci.community/t/shell-session-update-command-not-found-in-build-log-causes-build-to-fail-if-trap-err-is-set/817
714
    trap ERR
I
Ivan Pozdeev 已提交
715

716 717 718 719
    test "$rc" -eq 0

before_cache: |
    # Cleanup dirs to be cached
720
    set -e; set -x
721 722 723
    if [ -n "$IS_OSX" ]; then

        # When Taps is cached, this dir causes "Error: file exists" on `brew update`
724 725 726
        if [ -e "$(brew --repository)/Library/Taps/homebrew/homebrew-cask/homebrew-cask" ]; then
            rm -rf "$(brew --repository)/Library/Taps/homebrew/homebrew-cask/homebrew-cask"
        fi
727 728

        brew_cache_cleanup
I
Ivan Pozdeev 已提交
729

730
    fi
731
    set +x; set +e
I
Ivan Pozdeev 已提交
732

733
after_success: |
O
Olli-Pekka Heinisuo 已提交
734
    # Upload wheels to pypi if tag is set
O
Olli-Pekka Heinisuo 已提交
735

O
Olli-Pekka Heinisuo 已提交
736
    set -x
737

O
Olli-Pekka Heinisuo 已提交
738
    if [ -n "$TRAVIS_TAG" ]; then
739

740
        if [[ $ENABLE_CONTRIB == 0 ]]; then
O
Olli-Pekka Heinisuo 已提交
741 742 743 744 745
            if [[ $ENABLE_HEADLESS == 0 ]]; then
              echo "This is default build. Deployment will be done to to PyPI entry opencv-python."
            else
              echo "This is headless contrib build. Deployment will be done to to PyPI entry opencv-python-headless."
            fi
746
        else
O
Olli-Pekka Heinisuo 已提交
747 748 749 750 751
            if [[ $ENABLE_HEADLESS == 0 ]]; then
              echo "This is contrib build. Deployment will be done to to PyPI entry opencv-contrib-python."
            else
              echo "This is headless contrib build. Deployment will be done to to PyPI entry opencv-contrib-python-headless."
            fi
752 753
        fi

754
        if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
O
Olli-Pekka Heinisuo 已提交
755 756 757
          pip install --user twine
          pip install --user --upgrade six

O
Olli-Pekka Heinisuo 已提交
758
          if [ -n "$SDIST" ]; then
O
Olli-Pekka Heinisuo 已提交
759 760 761 762 763
            twine upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/dist
          else
            twine upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/wheelhouse/opencv*
          fi

764 765
        fi

O
Olli-Pekka Heinisuo 已提交
766 767 768 769 770 771 772
        if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
          # macpython 3.5 doesn't support recent TLS protocols which causes twine
          # upload to fail, so we use the system Python to run twine
          /usr/bin/python -m ensurepip --user
          /usr/bin/python -m pip install --user -U pip
          /usr/bin/python -m pip install --user -U -I twine

O
Olli-Pekka Heinisuo 已提交
773
          if [ -n "$SDIST" ]; then
O
Olli-Pekka Heinisuo 已提交
774 775 776 777 778 779
            /usr/bin/python -m upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/dist
          else
            /usr/bin/python -m upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/wheelhouse/opencv*
          fi

        fi
780

781
    fi
O
Olli-Pekka Heinisuo 已提交
782 783 784 785 786 787 788 789 790 791 792

    # Save to Azure storage always

    if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
      curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    else
      brew install azure-cli
    fi

    az storage container create -n ${TRAVIS_COMMIT} --public-access blob

O
Olli-Pekka Heinisuo 已提交
793
    if [ -n "$SDIST" ]; then
O
Olli-Pekka Heinisuo 已提交
794 795 796 797 798 799 800
      az storage blob upload-batch -d ${TRAVIS_COMMIT} -s ${TRAVIS_BUILD_DIR}/dist --pattern *.gz
    else
      az storage blob upload-batch -d ${TRAVIS_COMMIT} -s ${TRAVIS_BUILD_DIR}/wheelhouse --pattern *.whl
    fi

    set +x