Repository: arrow
Updated Branches:
  refs/heads/master 569426b91 -> 02a121f18


ARROW-927: C++/Python: Add manylinux1 builds to Travis matrix

Also pre-builds flatbuffers and gtest so that they are only build once.

Author: Uwe L. Korn <uw...@xhochy.com>

Closes #624 from xhochy/ARROW-927 and squashes the following commits:

c901b7a [Uwe L. Korn] Separate scripts folder
0dd4e08 [Uwe L. Korn] Add scripts folder
e705813 [Uwe L. Korn] Move boost and openssl to scripts
1b44878 [Uwe L. Korn] Add base image for thirdparties
f4ff321 [Uwe L. Korn] ARROW-927: C++/Python: Add manylinux1 builds to Travis 
matrix


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/02a121f1
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/02a121f1
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/02a121f1

Branch: refs/heads/master
Commit: 02a121f18b6b5a34b63dd8d2bf7b1955ac7e11b2
Parents: 569426b
Author: Uwe L. Korn <uw...@xhochy.com>
Authored: Tue May 2 13:40:47 2017 -0400
Committer: Wes McKinney <wes.mckin...@twosigma.com>
Committed: Tue May 2 13:40:47 2017 -0400

----------------------------------------------------------------------
 .travis.yml                                 | 11 +++++
 python/manylinux1/Dockerfile-x86_64         | 41 +------------------
 python/manylinux1/Dockerfile-x86_64_base    | 52 ++++++++++++++++++++++++
 python/manylinux1/build_arrow.sh            |  3 +-
 python/manylinux1/scripts/build_boost.sh    | 21 ++++++++++
 python/manylinux1/scripts/build_jemalloc.sh | 21 ++++++++++
 python/manylinux1/scripts/build_openssl.sh  | 21 ++++++++++
 7 files changed, 128 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 6ebebd4..19e71ae 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,6 +19,8 @@ addons:
     - gtk-doc-tools
     - autoconf-archive
     - libgirepository1.0-dev
+services:
+  - docker
 
 cache:
   ccache: true
@@ -54,6 +56,15 @@ matrix:
     script:
     - $TRAVIS_BUILD_DIR/ci/travis_script_cpp.sh
     - $TRAVIS_BUILD_DIR/ci/travis_script_python.sh
+  - language: cpp
+    before_script:
+    - docker pull quay.io/xhochy/arrow_manylinux1_x86_64_base:ARROW-927
+    script: |
+        pushd python/manylinux1
+        git clone ../../ arrow
+        docker build -t arrow-base-x86_64 -f Dockerfile-x86_64 .
+        docker run --rm -v $PWD:/io arrow-base-x86_64 /io/build_arrow.sh
+        ls -l dist/
   - language: java
     os: linux
     jdk: oraclejdk7

http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/python/manylinux1/Dockerfile-x86_64
----------------------------------------------------------------------
diff --git a/python/manylinux1/Dockerfile-x86_64 
b/python/manylinux1/Dockerfile-x86_64
index 56b27ad..8f55ba7 100644
--- a/python/manylinux1/Dockerfile-x86_64
+++ b/python/manylinux1/Dockerfile-x86_64
@@ -9,46 +9,7 @@
 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #  See the License for the specific language governing permissions and
 #  limitations under the License. See accompanying LICENSE file.
-
-FROM quay.io/pypa/manylinux1_x86_64:latest
-
-# Install dependencies
-RUN yum install -y flex zlib-devel
-
-# Build a newer OpenSSL version to support Thrift 0.10.0, note that we don't 
trigger the SSL code in Arrow.
-WORKDIR /
-RUN wget --no-check-certificate 
https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O openssl-1.0.2k.tar.gz
-RUN tar xf openssl-1.0.2k.tar.gz
-WORKDIR openssl-1.0.2k
-RUN ./config -fpic shared --prefix=/usr
-RUN make -j5
-RUN make install
-
-WORKDIR /
-RUN wget --no-check-certificate 
http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz 
-O /boost_1_60_0.tar.gz
-RUN tar xf boost_1_60_0.tar.gz
-WORKDIR /boost_1_60_0
-RUN ./bootstrap.sh
-RUN ./bjam cxxflags=-fPIC cflags=-fPIC --prefix=/usr --with-filesystem 
--with-date_time --with-system --with-regex install
-
-WORKDIR /
-RUN wget 
https://github.com/jemalloc/jemalloc/releases/download/4.4.0/jemalloc-4.4.0.tar.bz2
 -O jemalloc-4.4.0.tar.bz2
-RUN tar xf jemalloc-4.4.0.tar.bz2
-WORKDIR /jemalloc-4.4.0
-RUN ./configure
-RUN make -j5
-RUN make install
-
-WORKDIR /
-# Install cmake manylinux1 package
-RUN /opt/python/cp35-cp35m/bin/pip install cmake
-RUN ln -s /opt/python/cp35-cp35m/bin/cmake /usr/bin/cmake
-
-WORKDIR /
-RUN git clone https://github.com/matthew-brett/multibuild.git
-WORKDIR /multibuild
-RUN git checkout ffe59955ad8690c2f8bb74766cb7e9b0d0ee3963
-
+FROM quay.io/xhochy/arrow_manylinux1_x86_64_base:ARROW-927
 
 ADD arrow /arrow
 WORKDIR /arrow/cpp

http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/python/manylinux1/Dockerfile-x86_64_base
----------------------------------------------------------------------
diff --git a/python/manylinux1/Dockerfile-x86_64_base 
b/python/manylinux1/Dockerfile-x86_64_base
new file mode 100644
index 0000000..e38296d
--- /dev/null
+++ b/python/manylinux1/Dockerfile-x86_64_base
@@ -0,0 +1,52 @@
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License. See accompanying LICENSE file.
+FROM quay.io/pypa/manylinux1_x86_64:latest
+
+# Install dependencies
+RUN yum install -y flex zlib-devel
+
+ADD scripts/build_openssl.sh /
+RUN /build_openssl.sh
+
+ADD scripts/build_boost.sh /
+RUN /build_boost.sh
+
+ADD scripts/build_jemalloc.sh /
+RUN /build_jemalloc.sh
+
+WORKDIR /
+# Install cmake manylinux1 package
+RUN /opt/python/cp35-cp35m/bin/pip install cmake
+RUN ln -s /opt/python/cp35-cp35m/bin/cmake /usr/bin/cmake
+
+WORKDIR /
+RUN git clone https://github.com/matthew-brett/multibuild.git
+WORKDIR /multibuild
+RUN git checkout ffe59955ad8690c2f8bb74766cb7e9b0d0ee3963
+
+WORKDIR /
+RUN wget https://github.com/google/googletest/archive/release-1.7.0.tar.gz -O 
googletest-release-1.7.0.tar.gz
+RUN tar xf googletest-release-1.7.0.tar.gz
+WORKDIR /googletest-release-1.7.0
+RUN cmake -DCMAKE_CXX_FLAGS='-fPIC' -Dgtest_force_shared_crt=ON .
+RUN make -j5
+ENV GTEST_HOME /googletest-release-1.7.0
+
+WORKDIR /
+RUN wget https://github.com/google/flatbuffers/archive/v1.6.0.tar.gz -O 
flatbuffers-1.6.0.tar.gz
+RUN tar xf flatbuffers-1.6.0.tar.gz
+WORKDIR /flatbuffers-1.6.0
+RUN cmake "-DCMAKE_CXX_FLAGS=-fPIC" "-DCMAKE_INSTALL_PREFIX:PATH=/usr" 
"-DFLATBUFFERS_BUILD_TESTS=OFF"
+RUN make -j5
+RUN make install
+ENV FLATBUFFERS_HOME /usr
+

http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/python/manylinux1/build_arrow.sh
----------------------------------------------------------------------
diff --git a/python/manylinux1/build_arrow.sh b/python/manylinux1/build_arrow.sh
index 8ef087c..a11d3d4 100755
--- a/python/manylinux1/build_arrow.sh
+++ b/python/manylinux1/build_arrow.sh
@@ -31,7 +31,6 @@ cd /arrow/python
 
 # PyArrow build configuration
 export PYARROW_BUILD_TYPE='release'
-export PYARROW_CMAKE_OPTIONS='-DPYARROW_BUILD_TESTS=ON'
 export PYARROW_WITH_PARQUET=1
 export PYARROW_WITH_JEMALLOC=1
 export PYARROW_BUNDLE_ARROW_CPP=1
@@ -51,7 +50,7 @@ for PYTHON in ${PYTHON_VERSIONS}; do
 
     echo "=== (${PYTHON}) Installing build dependencies ==="
     $PIPI_IO "numpy==1.9.0"
-    $PIPI_IO "cython==0.24"
+    $PIPI_IO "cython==0.25.2"
     $PIPI_IO "pandas==0.19.2"
 
     echo "=== (${PYTHON}) Building Arrow C++ libraries ==="

http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/python/manylinux1/scripts/build_boost.sh
----------------------------------------------------------------------
diff --git a/python/manylinux1/scripts/build_boost.sh 
b/python/manylinux1/scripts/build_boost.sh
new file mode 100755
index 0000000..6a31336
--- /dev/null
+++ b/python/manylinux1/scripts/build_boost.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -ex
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License. See accompanying LICENSE file.
+
+
+wget --no-check-certificate 
http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz 
-O /boost_1_60_0.tar.gz
+tar xf boost_1_60_0.tar.gz
+pushd /boost_1_60_0
+./bootstrap.sh
+./bjam cxxflags=-fPIC cflags=-fPIC --prefix=/usr --with-filesystem 
--with-date_time --with-system --with-regex install
+popd
+rm -rf boost_1_60_0.tar.gz boost_1_60_0

http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/python/manylinux1/scripts/build_jemalloc.sh
----------------------------------------------------------------------
diff --git a/python/manylinux1/scripts/build_jemalloc.sh 
b/python/manylinux1/scripts/build_jemalloc.sh
new file mode 100755
index 0000000..8153baa
--- /dev/null
+++ b/python/manylinux1/scripts/build_jemalloc.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -ex
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License. See accompanying LICENSE file.
+
+wget 
https://github.com/jemalloc/jemalloc/releases/download/4.4.0/jemalloc-4.4.0.tar.bz2
 -O jemalloc-4.4.0.tar.bz2
+tar xf jemalloc-4.4.0.tar.bz2
+pushd /jemalloc-4.4.0
+./configure
+make -j5
+make install
+popd
+rm -rf jemalloc-4.4.0.tar.bz2 jemalloc-4.4.0

http://git-wip-us.apache.org/repos/asf/arrow/blob/02a121f1/python/manylinux1/scripts/build_openssl.sh
----------------------------------------------------------------------
diff --git a/python/manylinux1/scripts/build_openssl.sh 
b/python/manylinux1/scripts/build_openssl.sh
new file mode 100755
index 0000000..3bcb2b9
--- /dev/null
+++ b/python/manylinux1/scripts/build_openssl.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -ex
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License. See accompanying LICENSE file.
+
+wget --no-check-certificate 
https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O openssl-1.0.2k.tar.gz
+tar xf openssl-1.0.2k.tar.gz
+pushd openssl-1.0.2k
+./config -fpic shared --prefix=/usr
+make -j5
+make install
+popd
+rm -rf openssl-1.0.2k.tar.gz openssl-1.0.2k

Reply via email to