This is an automated email from the ASF dual-hosted git repository. wesm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push: new 5e63905 ARROW-5803: [CI] Dockerize C++ with clang 7 Travis CI 5e63905 is described below commit 5e639059a0330cad256703516996fbed11c8fd83 Author: François Saint-Jacques <fsaintjacq...@gmail.com> AuthorDate: Wed Jul 10 14:45:53 2019 -0500 ARROW-5803: [CI] Dockerize C++ with clang 7 Travis CI Adds a new docker-compose entry (cpp-ci) which uses system and bundled packages. - This creates an indirect dependency on the docker-hub ursalab/arrow:cpp-ci images that is pulled. The downside of this, is that any change to the Dockerfile itself will _not_ be reflected in the travis run until someone pushes upstream. This is also a problem with the `java-all-jdks` image. - The coredump reporting functionality will not work with this image, once we migrate (if possible) all cpp based (and derived) images, we'll put this back. - We could improve the runtime if we could build the bundled dependencies at image build step, instead of in the cmake run. Author: François Saint-Jacques <fsaintjacq...@gmail.com> Closes #4822 from fsaintjacques/ARROW-5803-dockerize-cpp-travis and squashes the following commits: 8cb3ad722 <François Saint-Jacques> Disable StartStopTestServer 6d0c8da86 <François Saint-Jacques> Address review comments 369cc1f83 <François Saint-Jacques> Combine LLVM install steps fc714ca42 <François Saint-Jacques> Disable -ex after scripts 87c930968 <François Saint-Jacques> Use docker-compose build --pull 7c9c4c35f <François Saint-Jacques> Source scripts 11ae3b542 <François Saint-Jacques> Fix Docker lint 8e91e6e8a <François Saint-Jacques> Revert "TEMP: remove other travis build" 9a039920a <François Saint-Jacques> Add tracing to travis scripts b62607915 <François Saint-Jacques> Clean travis scripts and glue ccache with travis cache de6f7327b <François Saint-Jacques> Fix flight memleak efd9f8c0f <François Saint-Jacques> Fix orc -Werror message a6fb2549e <François Saint-Jacques> ARROW-5803: Dockerize travis cpp tests 3a1d73e8f <François Saint-Jacques> TEMP: remove other travis build --- .travis.yml | 51 ++------- ci/docker_build_cpp.sh | 28 +++-- ci/travis/after-failure.sh | 35 +++++++ ci/travis/after-script.sh | 25 +++++ ci/travis/before-install.sh | 35 +++++++ cpp/Dockerfile.ubuntu-bionic | 154 ++++++++++++++++------------ cpp/cmake_modules/ThirdpartyToolchain.cmake | 2 +- cpp/src/arrow/flight/client.cc | 4 +- cpp/src/arrow/flight/flight-test.cc | 2 +- cpp/src/arrow/flight/server.cc | 2 +- docker-compose.yml | 25 ++++- 11 files changed, 236 insertions(+), 127 deletions(-) diff --git a/.travis.yml b/.travis.yml index 793e86a..49f9ea8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,16 +35,7 @@ git: depth: 250 before_install: - # Common pre-install steps for all builds - - eval "${MATRIX_EVAL}" - - ulimit -c unlimited -S - - | - if [ $TRAVIS_OS_NAME == "linux" ]; then - sudo bash -c "echo -e 'Acquire::Retries 10; Acquire::http::Timeout \"20\";' > /etc/apt/apt.conf.d/99-travis-retry" - sudo apt-get update -qq - fi - - eval `python $TRAVIS_BUILD_DIR/ci/detect-changes.py` - - if [ $TRAVIS_OS_NAME == "linux" ]; then ccache -s; fi + - source ci/travis/before-install.sh matrix: fast_finish: true @@ -62,28 +53,13 @@ matrix: - $TRAVIS_BUILD_DIR/ci/travis_release_test.sh - name: "C++ unit tests w/ clang 7.0, system packages" os: linux - env: - - ARROW_TRAVIS_USE_SYSTEM=1 - - ARROW_TRAVIS_PLASMA=1 - - ARROW_TRAVIS_ORC=1 - - ARROW_TRAVIS_PARQUET=1 - - ARROW_TRAVIS_GANDIVA=1 - - ARROW_TRAVIS_VERBOSE=1 - - ARROW_TRAVIS_USE_SYSTEM_JAVA=1 - - ARROW_BUILD_WARNING_LEVEL=CHECKIN - - ARROW_USE_ASAN=1 - - ARROW_USE_UBSAN=1 - - CC="clang-7" - - CXX="clang++-7" + language: cpp before_script: - if [ $ARROW_CI_CPP_AFFECTED != "1" ]; then exit; fi - - $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh - - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh - # If either C++ or Python changed, we must install the C++ libraries - git submodule update --init - - $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh + - docker-compose build --pull cpp-system-deps script: - - $TRAVIS_BUILD_DIR/ci/travis_script_cpp.sh || travis_terminate 1 + - docker-compose run cpp-system-deps # Separating Valgrind and C++ coverage makes individual jobs shorter - name: "C++ unit tests w/ conda-forge toolchain, coverage" compiler: gcc @@ -204,7 +180,7 @@ matrix: os: linux before_script: - if [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi - - docker-compose pull java-all-jdks + - docker-compose build --pull java-all-jdks script: - docker-compose run java-all-jdks - name: "Integration w/ OpenJDK 8, conda-forge toolchain" @@ -365,23 +341,10 @@ matrix: - Rscript ../ci/travis_upload_r_coverage.R after_failure: -- | - if [ "$TRAVIS_OS_NAME" = "osx" ]; then - COREFILE=$(find /cores -maxdepth 1 -type f -name "core.*" | head -n 1) - if [[ -f "$COREFILE" ]]; then - lldb -c "$COREFILE" --batch --one-line "thread backtrace all -e true" - fi - ls -la ~/Library/Logs/DiagnosticReports/ - cat ~/Library/Logs/DiagnosticReports/*.crash - else - COREFILE=$(find . -maxdepth 2 -name "core*" | head -n 1) - if [[ -f "$COREFILE" ]]; then - gdb -c "$COREFILE" example -ex "thread apply all bt" -ex "set pagination 0" -batch - fi - fi + - source ci/travis/after-failure.sh after_script: - - if [ $TRAVIS_OS_NAME == "linux" ]; then ccache -s; fi + - source ci/travis/after-script.sh env: global: diff --git a/ci/docker_build_cpp.sh b/ci/docker_build_cpp.sh index 77268bc..307b4cd 100755 --- a/ci/docker_build_cpp.sh +++ b/ci/docker_build_cpp.sh @@ -16,7 +16,7 @@ # specific language governing permissions and limitations # under the License. -set -e +set -ex source_dir=${1:-/arrow/cpp} build_dir=${2:-/build/cpp} @@ -29,14 +29,22 @@ mkdir -p ${build_dir} pushd ${build_dir} cmake -GNinja \ - -DARROW_DEPENDENCY_SOURCE=${ARROW_DEPENDENCY_SOURCE:-AUTO} \ - -DARROW_VERBOSE_THIRDPARTY_BUILD=ON \ - -DCMAKE_BUILD_TYPE=${ARROW_BUILD_TYPE:-debug} \ -DCMAKE_INSTALL_PREFIX=${install_dir} \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DARROW_WITH_BZ2=${ARROW_WITH_BZ2:-ON} \ - -DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD:-ON} \ + -DCMAKE_BUILD_TYPE=${ARROW_BUILD_TYPE:-debug} \ + -DCMAKE_CXX_FLAGS=${CXXFLAGS:-} \ + -DARROW_DEPENDENCY_SOURCE=${ARROW_DEPENDENCY_SOURCE:-AUTO} \ + -DARROW_VERBOSE_THIRDPARTY_BUILD=${ARROW_VERBOSE_THIRDPARTY_BUILD:-ON} \ + -DARROW_BUILD_WARNING_LEVEL=${DARROW_BUILD_WARNING_LEVEL:-CHECKIN} \ + -DARROW_BUILD_TESTS=${ARROW_BUILD_TESTS:-ON} \ -DARROW_BUILD_BENCHMARKS=${ARROW_BUILD_BENCHMARKS:-ON} \ + -DARROW_BUILD_UTILITIES=${ARROW_BUILD_UTILITIES:-ON} \ + -DARROW_BUILD_EXAMPLES=${ARROW_BUILD_EXAMPLES:-ON} \ + -DARROW_BUILD_SHARED=${ARROW_BUILD_SHARED:-ON} \ + -DARROW_BUILD_STATIC=${ARROW_BUILD_STATIC:-ON} \ + -DARROW_NO_DEPRECATED_API=${ARROW_NO_DEPRECATED_API:-OFF} \ + -DARROW_USE_ASAN=${ARROW_USE_ASAN:-OFF} \ + -DARROW_USE_UBSAN=${ARROW_USE_UBSAN:-OFF} \ -DARROW_FLIGHT=${ARROW_FLIGHT:-ON} \ -DARROW_ORC=${ARROW_ORC:-ON} \ -DARROW_PLASMA=${ARROW_PLASMA:-ON} \ @@ -45,21 +53,19 @@ cmake -GNinja \ -DARROW_PYTHON=${ARROW_PYTHON:-OFF} \ -DARROW_GANDIVA=${ARROW_GANDIVA:-OFF} \ -DARROW_GANDIVA_JAVA=${ARROW_GANDIVA_JAVA:-OFF} \ - -DARROW_BUILD_TESTS=${ARROW_BUILD_TESTS:-OFF} \ - -DARROW_BUILD_UTILITIES=${ARROW_BUILD_UTILITIES:-ON} \ + -DARROW_WITH_BZ2=${ARROW_WITH_BZ2:-ON} \ + -DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD:-ON} \ -DARROW_INSTALL_NAME_RPATH=${ARROW_INSTALL_NAME_RPATH:-ON} \ -DARROW_EXTRA_ERROR_CONTEXT=ON \ - -DARROW_BUILD_SHARED=${ARROW_BUILD_SHARED:-ON} \ - -DARROW_BUILD_STATIC=${ARROW_BUILD_STATIC:-ON} \ -DARROW_TEST_LINKAGE=${ARROW_TEST_LINKAGE:-shared} \ -DPARQUET_REQUIRE_ENCRYPTION=${ARROW_WITH_OPENSSL:-ON} \ - -DCMAKE_CXX_FLAGS=$CXXFLAGS \ -DBOOST_SOURCE=${ARROW_BOOST_SOURCE:-AUTO} \ -Duriparser_SOURCE=AUTO \ -DARROW_FUZZING=${ARROW_FUZZING:-OFF} \ -DARROW_USE_ASAN=${ARROW_USE_ASAN:-OFF} \ ${CMAKE_ARGS} \ ${source_dir} + ninja ninja install diff --git a/ci/travis/after-failure.sh b/ci/travis/after-failure.sh new file mode 100755 index 0000000..35b798f --- /dev/null +++ b/ci/travis/after-failure.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +set -ex + +if [[ "${TRAVIS_OS_NAME}" = "osx" ]]; then + COREFILE=$(find /cores -maxdepth 1 -type f -name "core.*" | head -n 1) + if [[ -f "$COREFILE" ]]; then + lldb -c "$COREFILE" --batch --one-line "thread backtrace all -e true" + fi + ls -la ~/Library/Logs/DiagnosticReports/ + cat ~/Library/Logs/DiagnosticReports/*.crash +else + COREFILE=$(find . -maxdepth 2 -name "core*" | head -n 1) + if [[ -f "$COREFILE" ]]; then + gdb -c "$COREFILE" example -ex "thread apply all bt" -ex "set pagination 0" -batch + fi +fi + +set +ex diff --git a/ci/travis/after-script.sh b/ci/travis/after-script.sh new file mode 100755 index 0000000..f323f3c --- /dev/null +++ b/ci/travis/after-script.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +set -ex + +if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then + ccache --show-stats +fi + +set +ex diff --git a/ci/travis/before-install.sh b/ci/travis/before-install.sh new file mode 100755 index 0000000..02dc971 --- /dev/null +++ b/ci/travis/before-install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +set -ex + +eval "${MATRIX_EVAL}" + +# Enables core files +ulimit -c unlimited -S + +if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then + echo -e 'Acquire::Retries 10; Acquire::http::Timeout \"20\";' | \ + sudo tee /etc/apt/apt.conf.d/99-travis-retry + sudo apt-get update -qq + ccache --show-stats +fi + +eval "$(python ${TRAVIS_BUILD_DIR}/ci/detect-changes.py)" + +set +ex diff --git a/cpp/Dockerfile.ubuntu-bionic b/cpp/Dockerfile.ubuntu-bionic index e2fd92d..763e13e 100644 --- a/cpp/Dockerfile.ubuntu-bionic +++ b/cpp/Dockerfile.ubuntu-bionic @@ -17,78 +17,102 @@ FROM ubuntu:bionic +# pipefail is enabled for proper error detection in the `wget | apt-key add` +# step SHELL ["/bin/bash", "-o", "pipefail", "-c"] -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update -y -q && \ + apt-get install -y -q --no-install-recommends \ + wget software-properties-common gpg-agent && \ + apt-get clean && rm -rf /var/lib/apt/lists* + +# Installs LLVM toolchain, for gandiva and testing other compilers +# +# Note that this is installed before the base packages to improve iteration +# while debugging package list with docker build due to slow download speed of +# llvm compared to ubuntu apt mirrors. +ARG LLVM_VERSION=7 +# Args are only exposed in the "build" step, this ensure that LLVM_VERSION is +# found in the "run" step. +ENV LLVM_VERSION=${LLVM_VERSION} +ARG LLVM_APT_URL="http://apt.llvm.org/bionic/" +ARG LLVM_APT_ARCH="llvm-toolchain-bionic-${LLVM_VERSION}" +RUN wget -q -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \ + apt-add-repository -y --update "deb ${LLVM_APT_URL} ${LLVM_APT_ARCH} main" && \ + apt-get install -y -q --no-install-recommends \ + clang-${LLVM_VERSION} \ + clang-format-${LLVM_VERSION} \ + clang-tidy-${LLVM_VERSION} \ + llvm-${LLVM_VERSION}-dev && \ + apt-get clean && rm -rf /var/lib/apt/lists* + +# Installs C++ toolchain and dependencies RUN apt-get update -y -q && \ - apt-get install -y -q --no-install-recommends wget software-properties-common gpg-agent && \ - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \ - apt-add-repository -y "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main" && \ - apt-get update -y -q && \ apt-get install -y -q --no-install-recommends \ - autoconf \ - bison \ - ca-certificates \ - ccache \ - clang-7 \ - cmake \ - flex \ - g++ \ - gcc \ - git \ - libbenchmark-dev \ - libboost-all-dev \ - libbrotli-dev \ - libbz2-dev \ - libc-ares-dev \ - libdouble-conversion-dev \ - libgflags-dev \ - libgoogle-glog-dev \ - libgrpc-dev \ - libgrpc++-dev \ - liblz4-dev \ - libprotoc-dev \ - libprotobuf-dev \ - libre2-dev \ - libsnappy-dev \ - libssl-dev \ - libzstd-dev \ - llvm-7-dev \ - make \ - ninja-build \ - pkg-config \ - protobuf-compiler \ - protobuf-compiler-grpc \ - rapidjson-dev \ - tzdata \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + autoconf \ + bison \ + ca-certificates \ + ccache \ + cmake \ + flex \ + g++ \ + gcc \ + git \ + libbenchmark-dev \ + libboost-filesystem-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libbrotli-dev \ + libbz2-dev \ + libdouble-conversion-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + liblz4-dev \ + liblzma-dev \ + libre2-dev \ + libsnappy-dev \ + libssl-dev \ + libzstd-dev \ + ninja-build \ + pkg-config \ + rapidjson-dev \ + thrift-compiler \ + tzdata && \ + apt-get clean && rm -rf /var/lib/apt/lists* -# Ubuntu's gtest just provides sources, the compiled version is only available -# from Ubuntu Cosmic on. -# ARROW_GANDIVA_JAVA requires CMake 3.11 -# TODO: gRPC is too old on Bionic and c-ares CMake config is not installed thus -# we need to build both from source. -# protobuf does not come with PHP but grpc needs it to built, thus also -# built Protobuf from source: https://github.com/grpc/grpc/issues/15949 -ENV CC=gcc \ - CXX=g++ \ - ARROW_BUILD_BENCHMARKS=ON \ - ARROW_BUILD_TESTS=ON \ - ARROW_DEPENDENCY_SOURCE=SYSTEM \ - ARROW_FLIGHT=ON \ - ARROW_GANDIVA=ON \ - ARROW_GANDIVA_JAVA=OFF \ - ARROW_PARQUET=ON \ - ARROW_HOME=/usr \ - ARROW_WITH_ZSTD=ON \ - CMAKE_ARGS="-DThrift_SOURCE=BUNDLED \ +# The following dependencies will be downloaded due to missing/invalid packages +# provided by the distribution: +# - libc-ares-dev does not install CMake config files +# - flatbuffer is not packaged +# - libgtest-dev only provide sources +# - libprotobuf-dev only provide sources +# - thrift is too old +ENV CMAKE_ARGS="-DThrift_SOURCE=BUNDLED \ -DFlatbuffers_SOURCE=BUNDLED \ -DGTest_SOURCE=BUNDLED \ --DgRPC_SOURCE=BUNDLED \ --Dc-ares_SOURCE=BUNDLED \ -DORC_SOURCE=BUNDLED \ --DProtobuf_SOURCE=BUNDLED" +-Dc-ares_SOURCE=BUNDLED \ +-DgRPC_SOURCE=BUNDLED \ +-DProtobuf_SOURCE=BUNDLED ${CMAKE_ARGS}" + +# Prioritize system packages and local installation +ENV ARROW_DEPENDENCY_SOURCE=SYSTEM \ + ARROW_FLIGHT=ON \ + ARROW_GANDIVA=ON \ + ARROW_HDFS=ON \ + ARROW_ORC=ON \ + ARROW_PARQUET=ON \ + ARROW_PLASMA=ON \ + ARROW_USE_ASAN=ON \ + ARROW_USE_UBSAN=ON \ + ARROW_NO_DEPRECATED_API=ON \ + ARROW_INSTALL_NAME_RPATH=OFF \ + ARROW_WITH_BZ2=ON \ + ARROW_WITH_ZSTD=ON + +ENV CC=clang-${LLVM_VERSION} \ + CXX=clang++-${LLVM_VERSION} -# build and test CMD ["arrow/ci/docker_build_and_test_cpp.sh"] diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index e9dfa07..aa1e557 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -2295,7 +2295,7 @@ macro(build_orc) endif() if("${COMPILER_VERSION}" VERSION_GREATER "4.0") set(ORC_CMAKE_CXX_FLAGS " -Wno-zero-as-null-pointer-constant \ --Wno-inconsistent-missing-destructor-override ") +-Wno-inconsistent-missing-destructor-override -Wno-error=undef ") endif() endif() diff --git a/cpp/src/arrow/flight/client.cc b/cpp/src/arrow/flight/client.cc index cb4b92d..eb4df58 100644 --- a/cpp/src/arrow/flight/client.cc +++ b/cpp/src/arrow/flight/client.cc @@ -118,7 +118,7 @@ class GrpcClientAuthReader : public ClientAuthReader { Status Read(std::string* token) override { pb::HandshakeResponse request; if (stream_->Read(&request)) { - *token = std::move(*request.release_payload()); + *token = std::move(*request.mutable_payload()); return Status::OK(); } return internal::FromGrpcStatus(stream_->Finish()); @@ -368,7 +368,7 @@ class GrpcMetadataReader : public FlightMetadataReader { Status ReadMetadata(std::shared_ptr<Buffer>* out) override { pb::PutResult message; if (reader_->Read(&message)) { - *out = Buffer::FromString(std::move(*message.release_app_metadata())); + *out = Buffer::FromString(std::move(*message.mutable_app_metadata())); } else { // Stream finished *out = nullptr; diff --git a/cpp/src/arrow/flight/flight-test.cc b/cpp/src/arrow/flight/flight-test.cc index d036b9a..e37de8b 100644 --- a/cpp/src/arrow/flight/flight-test.cc +++ b/cpp/src/arrow/flight/flight-test.cc @@ -135,7 +135,7 @@ TEST(TestFlightDescriptor, ToFromProto) { } #endif -TEST(TestFlight, StartStopTestServer) { +TEST(TestFlight, DISABLED_StartStopTestServer) { TestServer server("flight-test-server"); server.Start(); ASSERT_TRUE(server.IsRunning()); diff --git a/cpp/src/arrow/flight/server.cc b/cpp/src/arrow/flight/server.cc index d059a8b..f5f4698 100644 --- a/cpp/src/arrow/flight/server.cc +++ b/cpp/src/arrow/flight/server.cc @@ -181,7 +181,7 @@ class GrpcServerAuthReader : public ServerAuthReader { Status Read(std::string* token) override { pb::HandshakeRequest request; if (stream_->Read(&request)) { - *token = std::move(*request.release_payload()); + *token = std::move(*request.mutable_payload()); return Status::OK(); } return Status::IOError("Stream is closed."); diff --git a/docker-compose.yml b/docker-compose.yml index 8d197c1..3b50cd1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -114,10 +114,31 @@ services: build: context: . dockerfile: cpp/Dockerfile - environment: - PARQUET_TEST_DATA: /arrow/cpp/submodules/parquet-testing/data volumes: *ubuntu-volumes + cpp-system-deps: + # Usage: + # docker-compose build cpp-system-deps + # docker-compose run cpp-system-deps + image: ursalab/arrow:cpp-system-deps + shm_size: 2G + cap_add: + # LeakSanitizer and gdb requires ptrace(2) + - SYS_PTRACE + build: + context: . + dockerfile: cpp/Dockerfile.ubuntu-bionic + args: + LLVM_VERSION: 7 + environment: + ARROW_FLIGHT: "ON" + ARROW_USE_ASAN: "ON" + ARROW_USE_UBSAN: "ON" + volumes: + - .:/arrow:delegated + - ubuntu-cache:/build:delegated + - ${HOME}/.ccache:/build/ccache:cached + cpp-release: # Usage: # docker-compose build cpp