Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ppc cross compile #471

Merged
merged 63 commits into from
Nov 2, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
5ab5573
add powerpc crosscompile for hdf5
Sep 9, 2017
7a1371e
remove specific gcc version
Sep 9, 2017
9eb462f
fix build
Sep 9, 2017
f332350
should fix it..
Sep 9, 2017
e1fa17a
full opencv chain
Sep 9, 2017
b742aaf
try to fix deps
Sep 10, 2017
5f0b2cb
try to fix deps
Sep 10, 2017
1e420f7
add ffmpeg
Sep 10, 2017
df609ae
attempted fixes
Sep 10, 2017
567c135
attempted fixes
Sep 11, 2017
eeb040c
try fix ffmpeg
Sep 11, 2017
9ace4e0
add back gcc
Sep 12, 2017
682ad61
attempted fix
Sep 12, 2017
08593bd
attempted fix
Sep 12, 2017
2927164
try ffmpeg with ppc specific freetype
Sep 12, 2017
91fc906
more fix
Sep 16, 2017
cd175f7
more fix
Sep 16, 2017
485bf6b
more fix
Sep 16, 2017
04ab50e
switch ppc build to docker
Sep 17, 2017
e24152d
switch ppc build to docker
Sep 17, 2017
f1f700d
switch ppc build to docker
Sep 17, 2017
d3c25b0
update ppc
Sep 17, 2017
c23db75
update ppc
Sep 17, 2017
2844d9e
update ppc
Sep 17, 2017
c6184c8
fix jdk dep
Sep 18, 2017
175abb3
add general deps
Sep 18, 2017
e480aa4
add cmake
Sep 18, 2017
792204b
add more projects
Sep 18, 2017
9d6e266
specify ppc compiler
Sep 18, 2017
69e8825
improve compiler flag pass
Sep 20, 2017
b9c9e86
more fix
Sep 22, 2017
e318179
add all ppc cross
Sep 23, 2017
c85e3e8
more fixes
Sep 23, 2017
36705af
more fix
Sep 23, 2017
8c7335e
more fix
Sep 23, 2017
a16c087
more fix
Sep 23, 2017
fff44ac
fix ffmpeg
Sep 30, 2017
468b40b
merge upstream
Sep 30, 2017
12de081
quick tidy
vb216 Sep 30, 2017
2cf4565
test cache stage
vb216 Oct 14, 2017
9d1f8c4
test cache stage
vb216 Oct 14, 2017
5cfb44e
Merge remote-tracking branch 'upstream/master'
vb216 Oct 14, 2017
7cc48b8
merge upstream
vb216 Oct 14, 2017
954eaee
add pkg-config
vb216 Oct 14, 2017
31f94b2
add ppc64 cuda
vb216 Oct 15, 2017
59e0d64
add ppc64 cuda
vb216 Oct 15, 2017
87de5e4
work on cuda
vb216 Oct 16, 2017
2f22ec7
more cuda
vb216 Oct 17, 2017
2c7c0ac
find maven
vb216 Oct 17, 2017
3efd62a
add apt-utils
vb216 Oct 18, 2017
21065d9
switch ppc to openjdk due to license
vb216 Oct 19, 2017
ba5e29f
hopefully final fix for cuda build
vb216 Oct 21, 2017
2a4d2df
Merge remote-tracking branch 'upstream/master'
vb216 Oct 21, 2017
0247b55
pull upstream
vb216 Oct 21, 2017
f822764
symlink cuda.so stub
Oct 22, 2017
ffd41cc
merge
vb216 Oct 23, 2017
06d4afb
properly merge opencv this time
vb216 Oct 24, 2017
fb27bbe
add cpp11 definition for tesseract
vb216 Oct 29, 2017
0e6627b
final tidy up
vb216 Oct 29, 2017
37f5608
Improve Leptonica and Tesseract builds
saudet Oct 31, 2017
95bf3c5
Clean up builds
saudet Nov 1, 2017
565553b
Fix builds for Leptonica and Tesseract
saudet Nov 2, 2017
fd27d50
Clean up install-ppc.sh
saudet Nov 2, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,91 @@ services:

matrix:
include:
- jdk: oraclejdk8
os: linux
env: PROJ=opencv,chilitags,flandmark,openblas,mxnet,hdf5,caffe OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=ffmpeg OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=flycapture OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=libdc1394 OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=libfreenect OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=libfreenect2 OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=librealsense OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=videoinput OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=artoolkitplus OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=mkl OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=fftw OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=gsl OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=llvm OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=leptonica,tesseract OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=cuda OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=tensorflow OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=liquidfun OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- jdk: oraclejdk8
os: linux
env: PROJ=opencv,chilitags,flandmark,openblas,mxnet,hdf5,caffe OS=android-x86
Expand Down
7 changes: 6 additions & 1 deletion artoolkitplus/cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,12 @@ case $PLATFORM in
make install
;;
linux-ppc64le)
CC="$OLDCC -m64" CXX="$OLDCXX -m64" $CMAKE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=..
MACHINE_TYPE=$( uname -m )
if [[ "$MACHINE_TYPE" =~ ppc64 ]]; then
CC="$OLDCC -m64" CXX="$OLDCXX -m64" $CMAKE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=..
else
CC=powerpc64le-linux-gnu-gcc CXX=powerpc64le-linux-gnu-g++ CMAKE_C_COMPILER=$CC CMAKE_CXX_COMPILER=$CXX $CMAKE -DCMAKE_SYSTEM_PROCESSOR=powerpc -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=..
fi
make -j4
make install
;;
Expand Down
7 changes: 6 additions & 1 deletion chilitags/cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,12 @@ case $PLATFORM in
make install
;;
linux-ppc64le)
CXX="g++ -m64 -fPIC" $CMAKE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.. -DOpenCV_DIR=$OPENCV_PATH/share/OpenCV/
MACHINE_TYPE=$( uname -m )
if [[ "$MACHINE_TYPE" =~ ppc64 ]]; then
CXX="g++ -m64 -fPIC" $CMAKE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.. -DOpenCV_DIR=$OPENCV_PATH/share/OpenCV/
else
CXX="powerpc64le-linux-gnu-g++ -m64 -fPIC" $CMAKE -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.. -DOpenCV_DIR=$OPENCV_PATH/share/OpenCV/
fi
make -j4
make install
;;
Expand Down
85 changes: 85 additions & 0 deletions ci/install-ppc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#!/bin/bash
set -vx
#export

mkdir ./buildlogs
mkdir $TRAVIS_BUILD_DIR/downloads
ls -ltr $HOME/downloads
ls -ltr $HOME/.m2
pip install requests
export PYTHON_BIN_PATH=$(which python) # For tensorflow
touch $HOME/vars.list

export BUILD_COMPILER=-Djavacpp.platform.compiler=powerpc64le-linux-gnu-g++

echo "Starting docker for ppc cross compile"
docker run -d -ti -e CI_DEPLOY_USERNAME -e CI_DEPLOY_PASSWORD -e "container=docker" -v $HOME:$HOME -v $TRAVIS_BUILD_DIR/../:$HOME/build -v /sys/fs/cgroup:/sys/fs/cgroup ubuntu:xenial /sbin/init
DOCKER_CONTAINER_ID=$(docker ps | grep xenial | awk '{print $1}')
echo "Container id is $DOCKER_CONTAINER_ID please wait while updates applied"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "apt-get update"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "apt-get -y install apt-utils software-properties-common pkg-config openjdk-8-jdk maven python python-dev python-numpy gfortran-powerpc64le-linux-gnu gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu gfortran-powerpc64le-linux-gnu linux-libc-dev-ppc64el-cross binutils-multiarch swig git file wget unzip tar bzip2 patch automake make libtool perl nasm yasm curl cmake"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "dpkg --add-architecture ppc64el"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec 'add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports xenial main restricted universe multiverse"'
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec 'add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports xenial-updates main restricted universe multiverse"'
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec 'add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports xenial-backports main restricted universe multiverse"'
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec 'add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports xenial-security main restricted universe multiverse"'
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "apt-get update"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "apt-get -y install libasound2-dev:ppc64el libusb-dev:ppc64el libusb-1.0-0-dev:ppc64el zlib1g-dev:ppc64el libxcb1-dev:ppc64el"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "apt-get -y install libcairo2-dev:ppc64el libpango1.0-dev:ppc64el libglib2.0-dev:ppc64el libatk1.0-dev:ppc64el libperl-dev:ppc64el libqt4-dev:ppc64el libgtk2.0-dev:ppc64el gir1.2-atk-1.0:ppc64el gir1.2-gtk-2.0:ppc64el gir1.2-pango-1.0:ppc64el libgdk-pixbuf2.0-dev:ppc64el gir1.2-gdkpixbuf-2.0:ppc64el gir1.2-freedesktop:ppc64el gir1.2-glib-2.0:ppc64el libgirepository-1.0-1:ppc64el"

if [[ "$PROJ" =~ cuda ]]; then
echo "Setting up for cuda build"
#cp /usr/include/cudnn.h /usr/local/cuda/include/
python $TRAVIS_BUILD_DIR/ci/gDownload.py 0B2xpvMUzviShdFlrT3FtNXFSRW8 $HOME/downloads/cudappc64.tar
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How did you create that cudappc64.tar? Maybe we can just put the few commands for this here...

docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "tar xvf $HOME/downloads/cudappc64.tar -C /usr/local/"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "ln -s /usr/local/cuda-9.0 /usr/local/cuda"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/libcuda.so"
python $TRAVIS_BUILD_DIR/ci/gDownload.py 0B2xpvMUzviShdFJveFVxWlF3UnM $HOME/downloads/cudnnppc64.tar
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "tar xvf $HOME/downloads/cudnnppc64.tar -C /usr/local/"
fi

echo "Running install for $PROJ"
echo "container id is $DOCKER_CONTAINER_ID"
if [[ "$PROJ" =~ tensorflow ]] || [[ "$PROJ" =~ openblas ]]; then
echo "redirecting log output, tailing log every 5 mins to prevent timeout.."
while true; do echo .; docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "tail -10 $HOME/build/javacpp-presets/buildlogs/$PROJ.log"; sleep 300; done &
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
echo "Not a pull request so attempting to deploy using docker"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec ". $HOME/vars.list; cd $HOME/build/javacpp-presets;mvn deploy -U -Djavacpp.copyResources --settings ./ci/settings.xml -Dmaven.test.skip=true -Dmaven.javadoc.skip=true $BUILD_COMPILER $BUILD_ROOT -Djavacpp.platform=$OS -l $HOME/build/javacpp-presets/buildlogs/$PROJ.log -pl .,$PROJ"; export BUILD_STATUS=$?
else
echo "Pull request so install using docker"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec ". $HOME/vars.list; cd $HOME/build/javacpp-presets;mvn install -U --settings ./ci/settings.xml -Djavacpp.copyResources -Dmaven.test.skip=true $BUILD_COMPILER $BUILD_ROOT -Dmaven.javadoc.skip=true -Djavacpp.platform=$OS -l $HOME/build/javacpp-presets/buildlogs/$PROJ.log -pl .,$PROJ"; export BUILD_STATUS=$?
fi
else
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
echo "Not a pull request so attempting to deploy using docker"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec ". $HOME/vars.list; cd $HOME/build/javacpp-presets;mvn deploy -U -Djavacpp.copyResources --settings ./ci/settings.xml -Dmaven.test.skip=true -Dmaven.javadoc.skip=true $BUILD_COMPILER $BUILD_ROOT -Djavacpp.platform=$OS -pl .,$PROJ"; export BUILD_STATUS=$?
if [ $BUILD_STATUS -eq 0 ]; then
echo "Deploying platform"
for i in ${PROJ//,/ }
do
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "cd $HOME/build/javacpp-presets/$i; mvn -U -f platform/pom.xml -Djavacpp.platform=$OS --settings ../ci/settings.xml deploy"; export BUILD_STATUS=$?
if [ $BUILD_STATUS -ne 0 ]; then
echo "Build Failed"
exit $BUILD_STATUS
fi
done
fi

else
echo "Pull request so install using docker"
docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec ". $HOME/vars.list; cd $HOME/build/javacpp-presets;mvn install -U --settings ./ci/settings.xml -Djavacpp.copyResources -Dmaven.test.skip=true -Dmaven.javadoc.skip=true $BUILD_COMPILER $BUILD_ROOT -Djavacpp.platform=$OS -pl .,$PROJ"; export BUILD_STATUS=$?
fi
fi
echo "Build status $BUILD_STATUS"
if [ $BUILD_STATUS -ne 0 ]; then
echo "Build Failed"
echo "Dump of config.log output files found follows:"
find . -name config.log | xargs cat
exit $BUILD_STATUS
fi


docker stop $DOCKER_CONTAINER_ID
docker rm -v $DOCKER_CONTAINER_ID

33 changes: 0 additions & 33 deletions ci/install-travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,39 +88,6 @@ if [ "$OS" == "linux-armhf" ]; then

fi

if [ "$OS" == "linux-ppc64le" ]; then
echo "Setting up tools for linux-ppc64le build"
sudo apt-get install gfortran-powerpc64le-linux-gnu gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu gfortran-powerpc64le-linux-gnu linux-libc-dev-ppc64el-cross binutils-multiarch
sudo dpkg --add-architecture ppc64el
sudo add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports trusty main restricted universe multiverse"
sudo add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports trusty-updates main restricted universe multiverse"
sudo add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports trusty-backports main restricted universe multiverse"
sudo add-apt-repository "deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports trusty-security main restricted universe multiverse"
sudo apt-get update
sudo apt-get install libcairo2-dev:ppc64el libglib2.0-dev:ppc64el libatk1.0-dev:ppc64el libglfw-dev:ppc64el libfreetype6-dev:ppc64el libasound2-dev:ppc64el freeglut3-dev:ppc64el libgtk2.0-dev:ppc64el libusb-dev:ppc64el zlib1g:ppc64el gir1.2-atk-1.0:ppc64el gir1.2-gtk-2.0:ppc64el libpango1.0-dev:ppc64el gir1.2-pango-1.0:ppc64el libgdk-pixbuf2.0-dev:ppc64el gir1.2-gdkpixbuf-2.0:ppc64el gir1.2-freedesktop:ppc64el gir1.2-glib-2.0:ppc64el libgirepository-1.0-1:ppc64el
sudo ln -s /usr/lib/powerpc64le-linux-gnu/glib-2.0/include/glibconfig.h /usr/include/glib-2.0/glibconfig.h
sudo ln -s /usr/lib/powerpc64le-linux-gnu/gtk-2.0/include/gdkconfig.h /usr/include/gtk-2.0/gdk/gdkconfig.h
export BUILD_COMPILER="-Djavacpp.platform.compiler=powerpc64le-linux-gnu-g++"

#if [[ "$PROJ" =~ cuda ]] || [[ "$PROJ" =~ tensorflow ]] || [[ "$PROJ" =~ caffe ]]; then
if [[ "$PROJ" =~ cuda ]]; then
echo "installing cuda.."
curl -L -o cuda.deb https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2v2_8.0.61-1_ppc64el-deb
ar x cuda.deb
tar xvf data.tar.gz
sudo dpkg --force-all -i ./var/cuda-repo-8-0-local-ga2v2/*.deb
if [[ $(find $HOME/downloads/cudnn-8.0-linux-ppc64le-v6.0.tgz -type f -size +1000000c 2>/dev/null) ]]; then
echo "Found cudnn in cache and size seems ok"
else
echo "Downloading cudnn as not found in cache"
python $TRAVIS_BUILD_DIR/ci/gDownload.py 0B2xpvMUzviShdFJveFVxWlF3UnM $HOME/downloads/cudnn-8.0-linux-ppc64le-v6.0.tgz
fi
tar xvf $HOME/downloads/cudnn-8.0-linux-ppc64le-v6.0.tgz
sudo mv ./cuda/targets/ppc64le-linux/include/* /usr/local/cuda/targets/ppc64le-linux/include
sudo mv ./cuda/targets/ppc64le-linux/lib/* /usr/local/cuda/targets/ppc64le-linux/lib
fi
fi

if [ "$TRAVIS_OS_NAME" == "osx" ]; then
echo "performing brew update and install of dependencies, please wait.."
brew update > /dev/null
Expand Down
Loading