env: global: - "PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'" # pip dependencies to _test_ your project - TEST_DEPENDS="numpy==1.11.1" # params to bdist_wheel. used to set osx build target. - BDIST_PARAMS="" - USE_CCACHE=1 - PLAT=x86_64 - UNICODE_WIDTH=32 # Host Python is never used language: generic # Required to invoke docker ourselves as per https://docs.travis-ci.com/user/docker/ sudo: required services: docker # https://docs.travis-ci.com/user/reference/trusty/ dist: trusty # 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 # https://docs.travis-ci.com/user/caching cache: directories: # 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 # `cache: ccache: true` has no effect if `language:` is not `c` or `cpp` - $HOME/.ccache # 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 matrix: fast_finish: true include: # default builds for MacOS - &osx-10 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 stage: final - <<: *osx-10 stage: s1 - &osx-30 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 stage: final - <<: *osx-30 stage: s1 - &osx-40 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 stage: final - <<: *osx-40 stage: s1 - &osx-50 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 stage: final - <<: *osx-50 stage: s1 - &osx-60 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - TEST_DEPENDS=numpy==1.14.5 stage: final - <<: *osx-60 stage: s1 # headless builds for MacOS - &osx-70 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 stage: final - <<: *osx-70 stage: s1 - &osx-80 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 stage: final - <<: *osx-80 stage: s1 - &osx-90 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 stage: final - <<: *osx-90 stage: s1 - &osx-100 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 stage: final - <<: *osx-100 stage: s1 - &osx-110 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - TEST_DEPENDS=numpy==1.14.5 stage: final - <<: *osx-110 stage: s1 # Contrib builds for MacOS - &osx-120 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 stage: final - <<: *osx-120 stage: s1 - &osx-130 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 stage: final - <<: *osx-130 stage: s1 - &osx-140 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 stage: final - <<: *osx-140 stage: s1 - &osx-150 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 stage: final - <<: *osx-150 stage: s1 - &osx-160 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 - TEST_DEPENDS=numpy==1.14.5 stage: final - <<: *osx-160 stage: s1 # headless contrib builds for MacOS - &osx-170 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 stage: final - <<: *osx-170 stage: s1 - &osx-180 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 stage: final - <<: *osx-180 stage: s1 - &osx-190 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 stage: final - <<: *osx-190 stage: s1 - &osx-200 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 stage: final - <<: *osx-200 stage: s1 - &osx-210 os: osx osx_image: xcode8.3 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 - TEST_DEPENDS=numpy==1.14.5 stage: final - <<: *osx-210 stage: s1 # default builds for Linux - os: linux # the following jobs will use the same stage name by default stage: s1 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - TEST_DEPENDS=numpy==1.11.3 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - TEST_DEPENDS=numpy==1.11.3 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - TEST_DEPENDS=numpy==1.14.5 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - TEST_DEPENDS=numpy==1.14.5 cache: directories: $HOME/.ccache # headless builds for Linux - os: linux env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - TEST_DEPENDS=numpy==1.11.3 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - TEST_DEPENDS=numpy==1.11.3 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - TEST_DEPENDS=numpy==1.14.5 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - PLAT=i686 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - TEST_DEPENDS=numpy==1.14.5 cache: directories: $HOME/.ccache # contrib builds for Linux - os: linux env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - PLAT=i686 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - PLAT=i686 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - TEST_DEPENDS=numpy==1.11.3 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - PLAT=i686 - TEST_DEPENDS=numpy==1.11.3 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - TEST_DEPENDS=numpy==1.14.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - PLAT=i686 - TEST_DEPENDS=numpy==1.14.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 cache: directories: $HOME/.ccache # headless contrib builds for Linux - os: linux env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=2.7 - PLAT=i686 - UNICODE_WIDTH=16 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.4 - PLAT=i686 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.5 - PLAT=i686 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - TEST_DEPENDS=numpy==1.11.3 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.6 - PLAT=i686 - TEST_DEPENDS=numpy==1.11.3 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - TEST_DEPENDS=numpy==1.14.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache - os: linux env: - MB_PYTHON_VERSION=3.7 - PLAT=i686 - TEST_DEPENDS=numpy==1.14.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 cache: directories: $HOME/.ccache # The first line is printed in the folding header in Travis output before_install: | # Check out and prepare the source set -e # 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 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 multibuild_customize.sh echo $ENABLE_CONTRIB > contrib.enabled echo $ENABLE_HEADLESS > headless.enabled if [ -n "$IS_OSX" ]; then 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 # Not interested in travis internal scripts' output set +x install: | # Build and package set -x build_wheel $REPO_DIR $PLAT set +x script: | # Install and run tests set -x install_run $PLAT && rc=$? || rc=$? set +x #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 trap ERR test "$rc" -eq 0 before_cache: | # Cleanup dirs to be cached set -e; set -x if [ -n "$IS_OSX" ]; then # When Taps is cached, this dir causes "Error: file exists" on `brew update` if [ -e "$(brew --repository)/Library/Taps/homebrew/homebrew-cask/homebrew-cask" ]; then rm -rf "$(brew --repository)/Library/Taps/homebrew/homebrew-cask/homebrew-cask" fi brew_cache_cleanup fi set +x; set +e after_success: | # Upload wheels to pypi if requested if [ -n "$TRAVIS_TAG" ]; then set -x pip install --user twine pip install --user --upgrade six if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip install --user --upgrade pyOpenSSL fi if [[ $ENABLE_CONTRIB == 0 ]]; then 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 else 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 fi twine upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/wheelhouse/opencv* set +x else echo "Tag not set, deployment skipped." fi