From d907e08ff713b2673ed0e52e1656a84fe8903785 Mon Sep 17 00:00:00 2001 From: Olli-Pekka Heinisuo Date: Sun, 5 Mar 2017 15:21:12 +0200 Subject: [PATCH] fixes to appveyor build, enable contrib on Linux and MacOS --- .travis.yml | 106 ++++++++++++++++++++++++++++++++++++- appveyor.yml | 6 ++- deploy.cmd | 13 ----- travis/build-wheels-osx.sh | 53 +++++++++++++++++-- travis/build-wheels.sh | 31 +++++++++-- travis/deploy.sh | 13 +++++ 6 files changed, 199 insertions(+), 23 deletions(-) delete mode 100644 deploy.cmd create mode 100644 travis/deploy.sh diff --git a/.travis.yml b/.travis.yml index ddf5d45..c0c5546 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,73 +27,176 @@ matrix: # Exclude the default Python 3.5 build - python: 3.5 include: + + # default builds for MacOS + - os: osx + language: generic + osx_image: xcode8.2 + env: + - MB_PYTHON_VERSION=2.7 + - ENABLE_CONTRIB=0 + - os: osx + language: generic + osx_image: xcode8.2 + env: + - MB_PYTHON_VERSION=3.4 + - ENABLE_CONTRIB=0 + - os: osx + language: generic + osx_image: xcode8.2 + env: + - MB_PYTHON_VERSION=3.5 + - ENABLE_CONTRIB=0 + - os: osx + language: generic + osx_image: xcode8.2 + env: + - MB_PYTHON_VERSION=3.6 + - ENABLE_CONTRIB=0 + + # Contrib builds for MacOS - os: osx language: generic osx_image: xcode8.2 env: - MB_PYTHON_VERSION=2.7 + - ENABLE_CONTRIB=1 - os: osx language: generic osx_image: xcode8.2 env: - MB_PYTHON_VERSION=3.4 + - ENABLE_CONTRIB=1 - os: osx language: generic osx_image: xcode8.2 env: - MB_PYTHON_VERSION=3.5 + - ENABLE_CONTRIB=1 - os: osx language: generic osx_image: xcode8.2 env: - MB_PYTHON_VERSION=3.6 + - ENABLE_CONTRIB=1 + + # default builds for Linux + - os: linux + env: + - MB_PYTHON_VERSION=2.7 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=2.7 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - UNICODE_WIDTH=16 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=2.7 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 + - PLAT=i686 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=2.7 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 + - PLAT=i686 + - UNICODE_WIDTH=16 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=3.4 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=3.4 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 + - PLAT=i686 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=3.5 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=3.5 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 + - PLAT=i686 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=3.6 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=0 + - os: linux + env: + - MB_PYTHON_VERSION=3.6 + - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 + - PLAT=i686 + - ENABLE_CONTRIB=0 + + # contrib builds for Linux - os: linux env: - MB_PYTHON_VERSION=2.7 - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=2.7 - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 - UNICODE_WIDTH=16 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=2.7 - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 - PLAT=i686 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=2.7 - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 - PLAT=i686 - UNICODE_WIDTH=16 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=3.4 - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=3.4 - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 - PLAT=i686 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=3.5 - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=3.5 - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 - PLAT=i686 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=3.6 - DOCKER_IMAGE=quay.io/pypa/manylinux1_x86_64 + - ENABLE_CONTRIB=1 - os: linux env: - MB_PYTHON_VERSION=3.6 - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686 - PLAT=i686 + - ENABLE_CONTRIB=1 before_install: - source multibuild/common_utils.sh @@ -111,5 +214,4 @@ script: after_success: # Upload wheels to pypi - - pip install twine - - if [ -n "$TRAVIS_TAG" ]; then twine upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/wheelhouse/opencv*; else echo "Tag not set, deployment skipped."; fi \ No newline at end of file + - source travis/deploy.sh \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 443559f..3d6ae0b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -121,4 +121,8 @@ artifacts: name: wheels deploy_script: -- deploy.cmd +- cd %APPVEYOR_BUILD_FOLDER% + +- if %ENABLE_CONTRIB% EQU 0 (echo "This is default build. Deplyoment will be done to to PyPI entry opencv-python.") else (echo "This is contrib build. Deplyoment will be done to to PyPI entry opencv-contrib-python.") + +- if "%APPVEYOR_REPO_TAG%"=="true" ("%PYTHON%/python.exe" -m twine upload -u %USER% -p %PASS% --skip-existing dist/opencv*) else (echo "Tag not set, deployment skipped.") \ No newline at end of file diff --git a/deploy.cmd b/deploy.cmd deleted file mode 100644 index 33c74ec..0000000 --- a/deploy.cmd +++ /dev/null @@ -1,13 +0,0 @@ -cd %APPVEYOR_BUILD_FOLDER% - -if %ENABLE_CONTRIB% EQU 1 ( - - echo "This is contrib build. Deplyoment will be done to to PyPI entry opencv-contrib-python." - if "%APPVEYOR_REPO_TAG%"=="true" ("%PYTHON%/python.exe" -m twine upload -u %USER% -p %PASS% --skip-existing dist/opencv*) else (echo "Tag not set, deployment skipped.") - -) else ( - - echo "This is default build. Deplyoment will be done to to PyPI entry opencv-python." - if "%APPVEYOR_REPO_TAG%"=="true" ("%PYTHON%/python.exe" -m twine upload -u %USER% -p %PASS% --skip-existing dist/opencv*) else (echo "Tag not set, deployment skipped.") - -) \ No newline at end of file diff --git a/travis/build-wheels-osx.sh b/travis/build-wheels-osx.sh index cf5b043..405d56a 100644 --- a/travis/build-wheels-osx.sh +++ b/travis/build-wheels-osx.sh @@ -16,7 +16,7 @@ cd opencv mkdir build cd build -if [[ $PYTHON_VERSION == 2* ]]; then +if [[ $PYTHON_VERSION == 2* ]] && [[ $ENABLE_CONTRIB == 0 ]]; then echo 'Config for Py2' cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_opencv_python3=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ @@ -27,7 +27,7 @@ if [[ $PYTHON_VERSION == 2* ]]; then -D BUILD_EXAMPLES=OFF .. fi -if [[ $PYTHON_VERSION == 34 ]]; then +if [[ $PYTHON_VERSION == 34 ]] && [[ $ENABLE_CONTRIB == 0 ]]; then echo 'Config for Py34' cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_opencv_python2=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ @@ -38,7 +38,7 @@ if [[ $PYTHON_VERSION == 34 ]]; then -D BUILD_EXAMPLES=OFF .. fi -if [[ $PYTHON_VERSION == 35 ]]; then +if [[ $PYTHON_VERSION == 35 ]] && [[ $ENABLE_CONTRIB == 0 ]]; then echo 'Config for Py35' cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_opencv_python2=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ @@ -49,7 +49,7 @@ if [[ $PYTHON_VERSION == 35 ]]; then -D BUILD_EXAMPLES=OFF .. fi -if [[ $PYTHON_VERSION == 36 ]]; then +if [[ $PYTHON_VERSION == 36 ]] && [[ $ENABLE_CONTRIB == 0 ]]; then echo 'Config for Py36' cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_opencv_python2=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ @@ -61,6 +61,51 @@ if [[ $PYTHON_VERSION == 36 ]]; then fi +if [[ $PYTHON_VERSION == 2* ]] && [[ $ENABLE_CONTRIB == 1 ]]; then + echo 'Config for Py2' + cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ + -D BUILD_opencv_python3=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ + -D PYTHON2_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ + -D PYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/bin \ + -D PYTHON2_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 \ + -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF \ + -D BUILD_EXAMPLES=OFF .. +fi + +if [[ $PYTHON_VERSION == 34 ]] && [[ $ENABLE_CONTRIB == 1 ]]; then + echo 'Config for Py34' + cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ + -D BUILD_opencv_python2=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ + -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ + -D PYTHON3_LIBRARY=/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/bin \ + -D PYTHON3_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m \ + -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF \ + -D BUILD_EXAMPLES=OFF .. +fi + +if [[ $PYTHON_VERSION == 35 ]] && [[ $ENABLE_CONTRIB == 1 ]]; then + echo 'Config for Py35' + cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ + -D BUILD_opencv_python2=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ + -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ + -D PYTHON3_LIBRARY=/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/bin \ + -D PYTHON3_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5m \ + -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF \ + -D BUILD_EXAMPLES=OFF .. +fi + +if [[ $PYTHON_VERSION == 36 ]] && [[ $ENABLE_CONTRIB == 1 ]]; then + echo 'Config for Py36' + cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/loca -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ + -D BUILD_opencv_python2=OFF -D BUILD_opencv_java=OFF -D BUILD_SHARED_LIBS=OFF -D WITH_LAPACK=OFF \ + -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ + -D PYTHON3_LIBRARY=/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/bin \ + -D PYTHON3_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m \ + -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF \ + -D BUILD_EXAMPLES=OFF .. +fi + + echo 'Begin build' make -j4 diff --git a/travis/build-wheels.sh b/travis/build-wheels.sh index 1bec8de..9bb3428 100755 --- a/travis/build-wheels.sh +++ b/travis/build-wheels.sh @@ -1,7 +1,6 @@ #!/bin/bash set +e echo 'Begin build-wheel...' -/opt/_internal/cpython-3.5.1/bin/pip3.5 install --upgrade git+git://github.com/pypa/auditwheel export PYTHON_VERSION=${PYTHON_VERSION/./} @@ -17,7 +16,7 @@ for PYBIN in /opt/python/cp$PYTHON_VERSION*/bin; do echo 'Begin build' cd opencv mkdir build - if [[ $PYTHON_VERSION == 2* ]]; then + if [[ $PYTHON_VERSION == 2* ]] && [[ $ENABLE_CONTRIB == 0 ]]; then echo 'Config for Py2' cmake28 -H"." -B"build" -DCMAKE_BUILD_TYPE=Release -DBUILD_opencv_python3=OFF -DBUILD_opencv_java=OFF -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_IPP=OFF \ @@ -30,7 +29,7 @@ for PYBIN in /opt/python/cp$PYTHON_VERSION*/bin; do -DPYTHON2_NUMPY_VERSION=$($PYBIN/python -c "import numpy; print(numpy.version.version)") fi - if [[ $PYTHON_VERSION == 3* ]]; then + if [[ $PYTHON_VERSION == 3* ]] && [[ $ENABLE_CONTRIB == 0 ]]; then echo 'Config for Py3' cmake28 -H"." -B"build" -DCMAKE_BUILD_TYPE=Release -DBUILD_opencv_python2=OFF -DBUILD_opencv_java=OFF -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_IPP=OFF \ @@ -43,6 +42,32 @@ for PYBIN in /opt/python/cp$PYTHON_VERSION*/bin; do -DPYTHON3_NUMPY_VERSION=$($PYBIN/python -c "import numpy; print(numpy.version.version)") fi + if [[ $PYTHON_VERSION == 2* ]] && [[ $ENABLE_CONTRIB == 1 ]]; then + echo 'Config for Py2' + cmake28 -H"." -B"build" -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DCMAKE_BUILD_TYPE=Release -DBUILD_opencv_python3=OFF -DBUILD_opencv_java=OFF -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_IPP=OFF \ + -DPYTHON2INTERP_FOUND=ON -DPYTHON2LIBS_FOUND=ON \ + -DPYTHON2_EXECUTABLE=$PYBIN/python \ + -DPYTHON2_VERSION_STRING=$($PYBIN/python -c "from platform import python_version; print python_version()") \ + -DPYTHON2_INCLUDE_PATH=$($PYBIN/python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ + -DPYTHON2_PACKAGES_PATH=$($PYBIN/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ + -DPYTHON2_NUMPY_INCLUDE_DIRS=$($PYBIN/python -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))") \ + -DPYTHON2_NUMPY_VERSION=$($PYBIN/python -c "import numpy; print(numpy.version.version)") + fi + + if [[ $PYTHON_VERSION == 3* ]] && [[ $ENABLE_CONTRIB == 1 ]]; then + echo 'Config for Py3' + cmake28 -H"." -B"build" -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DCMAKE_BUILD_TYPE=Release -DBUILD_opencv_python2=OFF -DBUILD_opencv_java=OFF -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_IPP=OFF \ + -DPYTHON3INTERP_FOUND=ON -DPYTHON3LIBS_FOUND=ON \ + -DPYTHON3_EXECUTABLE=$PYBIN/python \ + -DPYTHON3_VERSION_STRING=$($PYBIN/python -c "from platform import python_version; print python_version()") \ + -DPYTHON3_INCLUDE_PATH=$($PYBIN/python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ + -DPYTHON3_PACKAGES_PATH=$($PYBIN/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ + -DPYTHON3_NUMPY_INCLUDE_DIRS=$($PYBIN/python -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))") \ + -DPYTHON3_NUMPY_VERSION=$($PYBIN/python -c "import numpy; print(numpy.version.version)") + fi + if [[ $PYTHON_VERSION == 2* ]]; then echo 'Build for Py2' (cd build; make -j5 opencv_python2) diff --git a/travis/deploy.sh b/travis/deploy.sh new file mode 100644 index 0000000..adfd3fb --- /dev/null +++ b/travis/deploy.sh @@ -0,0 +1,13 @@ +pip install twine + +if [[ $ENABLE_CONTRIB == 0 ]]; then + echo "This is default build. Deployment will be done to to PyPI entry opencv-python." +else + echo "This is contrib build. Deployment will be done to to PyPI entry opencv-contrib-python." +fi + +if [ -n "$TRAVIS_TAG" ]; then + twine upload -u ${USER} -p ${PASS} --skip-existing ${TRAVIS_BUILD_DIR}/wheelhouse/opencv*; +else + echo "Tag not set, deployment skipped."; +fi \ No newline at end of file -- GitLab