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 matrix: fast_finish: true include: # default builds for MacOS - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - TEST_DEPENDS=numpy==1.14.5 # headless builds for MacOS - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=0 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - TEST_DEPENDS=numpy==1.14.5 # Contrib builds for MacOS - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=0 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - TEST_DEPENDS=numpy==1.14.5 # headless contrib builds for MacOS - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=2.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.4 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.5 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.6 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - os: osx osx_image: xcode8 env: - MB_PYTHON_VERSION=3.7 - ENABLE_CONTRIB=1 - ENABLE_HEADLESS=1 - BDIST_PARAMS="-- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7" - TEST_DEPENDS=numpy==1.14.5 # default builds for Linux - os: linux 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 '\''{}'\'') git clean -fxd git status' \; brew_cache_cleanup fi before_install # Not interested in travis internal scripts' output set +x install: | # Build and package set -x build_wheel $REPO_DIR $PLAT if [ -n "$USE_CCACHE" ]; then ccache --show-stats; fi 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 -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 after_success: | # Upload wheels to pypi if requested if [ -n "$TRAVIS_TAG" ]; then set -x pip install twine if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip install --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