diff --git a/.travis.yml b/.travis.yml index 92165672..9b3f9f54 100644 --- a/.travis.yml +++ b/.travis.yml @@ -238,7 +238,7 @@ matrix: workspaces: use: brew_cache - # default builds for Linux + # default builds for Linux / AMD64 - os: linux env: - MB_PYTHON_VERSION=2.7 @@ -338,7 +338,7 @@ matrix: cache: directories: $HOME/.ccache - # headless builds for Linux + # headless builds for Linux / AMD64 - os: linux env: - MB_PYTHON_VERSION=2.7 @@ -438,7 +438,7 @@ matrix: cache: directories: $HOME/.ccache - # contrib builds for Linux + # contrib builds for Linux / AMD64 - os: linux env: - MB_PYTHON_VERSION=2.7 @@ -539,7 +539,7 @@ matrix: directories: $HOME/.ccache - # headless contrib builds for Linux + # headless contrib builds for Linux / AMD64 - os: linux env: - MB_PYTHON_VERSION=2.7 @@ -639,6 +639,261 @@ matrix: cache: directories: $HOME/.ccache + + # default builds for Linux / PPC64le + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=2.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.5 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.6 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=0 + - TEST_DEPENDS=numpy==1.11.3 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=0 + - TEST_DEPENDS=numpy==1.14.5 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.8 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=0 + - TEST_DEPENDS=numpy==1.17.3 + cache: + directories: $HOME/.ccache + + # headless builds for Linux / PPC64le + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=2.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=2.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - UNICODE_WIDTH=16 + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.5 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.6 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=1 + - TEST_DEPENDS=numpy==1.11.3 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=1 + - TEST_DEPENDS=numpy==1.14.5 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.8 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=0 + - ENABLE_HEADLESS=1 + - TEST_DEPENDS=numpy==1.17.3 + cache: + directories: $HOME/.ccache + + # contrib builds for Linux / PPC64le + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=2.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=2.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - UNICODE_WIDTH=16 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.5 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.6 + - MB_ML_VER=2014 + - PLAT=ppc64le + - TEST_DEPENDS=numpy==1.11.3 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - TEST_DEPENDS=numpy==1.14.5 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.8 + - MB_ML_VER=2014 + - PLAT=ppc64le + - TEST_DEPENDS=numpy==1.17.3 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=0 + cache: + directories: $HOME/.ccache + + + # headless contrib builds for Linux / PPC64le + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=2.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.5 + - MB_ML_VER=2014 + - PLAT=ppc64le + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.6 + - MB_ML_VER=2014 + - PLAT=ppc64le + - TEST_DEPENDS=numpy==1.11.3 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.7 + - MB_ML_VER=2014 + - PLAT=ppc64le + - TEST_DEPENDS=numpy==1.14.5 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.8 + - MB_ML_VER=2014 + - TEST_DEPENDS=numpy==1.17.3 + - ENABLE_CONTRIB=1 + - ENABLE_HEADLESS=1 + cache: + directories: $HOME/.ccache + - os: linux + arch: ppc64le + env: + - MB_PYTHON_VERSION=3.8 + - MB_ML_VER=2014 + - PLAT=ppc64le + - TEST_DEPENDS=numpy==1.17.3 + - 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 @@ -650,6 +905,7 @@ before_install: | source multibuild/common_utils.sh # https://github.com/matthew-brett/multibuild/issues/116 if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export ARCH_FLAGS=" "; fi + if [[ "$TRAVIS_CPU_ARCH" == "ppc64le" ]]; then export ARCH_FLAGS=" "; fi echo "Source multibuild/travis_steps.sh" source multibuild/travis_steps.sh # This sets -x @@ -743,4 +999,4 @@ after_success: | set +x else echo "Tag not set, deployment skipped." - fi + fi \ No newline at end of file diff --git a/docker/Dockerfile_ppc64le b/docker/Dockerfile_ppc64le new file mode 100644 index 00000000..51692314 --- /dev/null +++ b/docker/Dockerfile_ppc64le @@ -0,0 +1,106 @@ +FROM quay.io/pypa/manylinux2014_ppc64le:latest + +RUN curl -O -L https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz && \ + tar -xf qt-everywhere-opensource-src-4.8.7.tar.gz && \ + cd qt-everywhere* && \ + #configure does a bootstrap make under the hood + #manylinux1 is too old to have `nproc` + export MAKEFLAGS=-j$(getconf _NPROCESSORS_ONLN) && \ + #OpenCV only links against QtCore, QtGui, QtTest + ./configure -prefix /opt/Qt4.8.7 -release -opensource -confirm-license \ + -no-sql-sqlite -no-qt3support -no-xmlpatterns -no-multimedia \ + -no-webkit -no-script -no-declarative -no-dbus -make libs && \ + make && \ + make install && \ + cd .. && \ + rm -rf qt-everywhere-opensource-src-4.8.7 && \ + rm qt-everywhere-opensource-src-4.8.7.tar.gz + +ENV QTDIR /opt/Qt4.8.7 +ENV PATH "$QTDIR/bin:$PATH" + +RUN curl -O -L https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz && \ + tar -xf cmake-3.9.0.tar.gz && \ + cd cmake-3.9.0 && \ + #manylinux1 provides curl-devel equivalent and libcurl statically linked + # against the same newer OpenSSL as other source-built tools + # (1.0.2s as of this writing) + yum -y install zlib-devel && \ + #configure does a bootstrap make under the hood + export MAKEFLAGS=-j$(getconf _NPROCESSORS_ONLN) && \ + ./configure --system-curl && \ + make && \ + make install && \ + cd .. && \ + rm -rf cmake-3.9.0* + +# https://trac.ffmpeg.org/wiki/CompilationGuide/Centos#GettheDependencies +# manylinux provides the toolchain and git; we provide cmake +RUN yum install freetype-devel bzip2-devel zlib-devel -y && \ + mkdir ~/ffmpeg_sources + +# Newer openssl configure requires newer perl +RUN curl -O -L https://www.cpan.org/src/5.0/perl-5.20.1.tar.gz && \ + tar -xf perl-5.20.1.tar.gz && \ + cd perl-5.20.1 && \ + ./Configure -des -Dprefix="$HOME/openssl_build" && \ + #perl build scripts do much redundant work + # if running "make install" separately + make install -j$(getconf _NPROCESSORS_ONLN) && \ + cd .. && \ + rm -rf perl-5.20.1* + +RUN cd ~/ffmpeg_sources && \ + curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_1c.tar.gz && \ + tar -xf OpenSSL_1_1_1c.tar.gz && \ + cd openssl-OpenSSL_1_1_1c && \ + PERL="$HOME/openssl_build/bin/perl" ./config --prefix="$HOME/ffmpeg_build" --openssldir="$HOME/ffmpeg_build" shared zlib && \ + make -j$(getconf _NPROCESSORS_ONLN) && \ + #skip installing documentation + make install_sw && \ + rm -rf ~/openssl_build + +RUN cd ~/ffmpeg_sources && \ + curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.14.01/nasm-2.14.01.tar.bz2 && \ + tar -xf nasm-2.14.01.tar.bz2 && cd nasm-2.14.01 && ./autogen.sh && \ + ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ + make -j$(getconf _NPROCESSORS_ONLN) && \ + make install + +RUN cd ~/ffmpeg_sources && \ + curl -O -L http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \ + tar -xf yasm-1.3.0.tar.gz && \ + cd yasm-1.3.0 && \ + ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ + make -j$(getconf _NPROCESSORS_ONLN) && \ + make install + +RUN cd ~/ffmpeg_sources && \ + git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \ + cd libvpx && \ + ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic --enable-shared && \ + make -j$(getconf _NPROCESSORS_ONLN) && \ + make install + +RUN cd ~/ffmpeg_sources && \ + curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \ + tar -xf ffmpeg-snapshot.tar.bz2 && \ + cd ffmpeg && \ + PATH=~/bin:$PATH && \ + PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --enable-openssl --enable-libvpx --enable-shared --enable-pic --bindir="$HOME/bin" && \ + make -j$(getconf _NPROCESSORS_ONLN) && \ + make install && \ + echo "/root/ffmpeg_build/lib/" >> /etc/ld.so.conf && \ + ldconfig && \ + rm -rf ~/ffmpeg_sources + +ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/root/ffmpeg_build/lib/pkgconfig +ENV LDFLAGS -L/root/ffmpeg_build/lib + +RUN curl -O https://raw.githubusercontent.com/torvalds/linux/v4.14/include/uapi/linux/videodev2.h && \ + curl -O https://raw.githubusercontent.com/torvalds/linux/v4.14/include/uapi/linux/v4l2-common.h && \ + curl -O https://raw.githubusercontent.com/torvalds/linux/v4.14/include/uapi/linux/v4l2-controls.h && \ + curl -O https://raw.githubusercontent.com/torvalds/linux/v4.14/include/linux/compiler.h && \ + mv videodev2.h v4l2-common.h v4l2-controls.h compiler.h /usr/include/linux + +ENV PATH "$HOME/bin:$PATH"