You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2019/02/06 21:53:09 UTC
[arrow] branch master updated: ARROW-3972: [C++] Migrate to LLVM 7.
Add option to disable using ld.gold
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 c81fbaa ARROW-3972: [C++] Migrate to LLVM 7. Add option to disable using ld.gold
c81fbaa is described below
commit c81fbaa20ce4d14ae08bbb2f4a959778f1069d83
Author: Wes McKinney <we...@apache.org>
AuthorDate: Wed Feb 6 15:52:58 2019 -0600
ARROW-3972: [C++] Migrate to LLVM 7. Add option to disable using ld.gold
All in all this wasn't too painful, and Gandiva seems to run fine (I wouldn't have expected otherwise).
I tested this locally on Ubuntu 18.10, and found that the LLVM libraries from apt fail to link with ld.gold (binutils 1.16), so I added an option to toggle ld.gold ON and OFF (it's now OFF by default; using `ld` by default should yield strictly fewer bugs / build failures). Not sure why that is
I will need some help testing and debugging the Crossbow and packaging tasks to make sure this doesn't break anything else before we merge it
Author: Wes McKinney <we...@apache.org>
Author: Pindikura Ravindra <ra...@dremio.com>
Author: Korn, Uwe <Uw...@blue-yonder.com>
Author: Uwe L. Korn <uw...@xhochy.com>
Closes #3499 from wesm/llvm-7 and squashes the following commits:
5c48eeda7 <Korn, Uwe> Switch to docker image on branch
93aadd780 <Uwe L. Korn> Update clang
e155fad71 <Pindikura Ravindra> Use the llvm from apt-get (instead of travis)
987fc5fb9 <Wes McKinney> Enable all LLVM libraries
ea1f01323 <Wes McKinney> Link libLLVMSupport.a later
034b17d58 <Wes McKinney> Add missing libLLVMSupport.a dependency
4448243e4 <Wes McKinney> Install clang before calling travis_install_linux.sh
59d170a52 <Wes McKinney> Fix more usages of LLVM version
ce831e247 <Wes McKinney> Fix clang executable name in .travis.yml
69fd48667 <Pindikura Ravindra> ARROW-3972: misc fixes for LLVM7
c858441c3 <Wes McKinney> Some CI fixes
87434dafe <Wes McKinney> Code comments
d198eb867 <Wes McKinney> Decruft. Turn off ld.gold by default
2fc3a26d6 <Wes McKinney> Build project with LLVM 7. Add option to disable using ld.gold
---
.travis.yml | 26 ++++++++++++-------------
c_glib/Brewfile | 2 +-
ci/travis_env_common.sh | 6 ++++++
ci/travis_install_clang_tools.sh | 4 ++--
ci/travis_install_linux.sh | 10 +++++-----
ci/travis_install_toolchain.sh | 2 +-
ci/travis_script_manylinux.sh | 2 +-
cpp/CMakeLists.txt | 8 +++++++-
cpp/README.md | 6 +++---
cpp/cmake_modules/FindClangTools.cmake | 25 ++++++++++--------------
cpp/cmake_modules/FindLLVM.cmake | 33 ++++++++++++++++++++------------
cpp/cmake_modules/SetupCxxFlags.cmake | 11 ++++++-----
cpp/src/gandiva/engine.cc | 2 ++
cpp/src/gandiva/eval_batch.h | 2 +-
cpp/src/gandiva/local_bitmaps_holder.h | 2 +-
dev/tasks/gandiva-jars/travis.linux.yml | 4 ++--
dev/tasks/gandiva-jars/travis.osx.yml | 4 ++--
python/manylinux1/scripts/build_clang.sh | 2 +-
python/manylinux1/scripts/build_llvm.sh | 2 +-
r/lint.sh | 3 +--
20 files changed, 87 insertions(+), 69 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 02ce11d..254bfa0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -58,7 +58,7 @@ matrix:
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_lint.sh
- - name: "C++ unit tests w/ Valgrind, clang 6.0"
+ - name: "C++ unit tests w/ Valgrind, clang 7.0"
language: cpp
os: linux
env:
@@ -70,12 +70,12 @@ matrix:
- ARROW_TRAVIS_GANDIVA=1
- ARROW_TRAVIS_USE_SYSTEM_JAVA=1
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
+ - CC="clang-7"
+ - CXX="clang++-7"
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ]; then exit; fi
- - export CC="clang-6.0"
- - export CXX="clang++-6.0"
- - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $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
@@ -99,8 +99,8 @@ matrix:
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ] && [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi
- - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $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
@@ -133,8 +133,8 @@ matrix:
- eval `python $TRAVIS_BUILD_DIR/ci/detect-changes.py`
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ] && [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi
- - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $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
@@ -160,8 +160,8 @@ matrix:
# - ARROW_TRAVIS_PYTHON_BENCHMARKS=1
before_script:
- if [ $ARROW_CI_PYTHON_AFFECTED != "1" ] && [ $ARROW_CI_DOCS_AFFECTED != "1" ]; then exit; fi
- - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
+ - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_toolchain.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_java.sh || travis_terminate 1
@@ -225,7 +225,7 @@ matrix:
- name: "[manylinux1] Python"
language: cpp
before_script:
- - if [ $ARROW_CI_PYTHON_AFFECTED == "1" ]; then docker pull quay.io/xhochy/arrow_manylinux1_x86_64_base:latest; fi
+ - if [ $ARROW_CI_PYTHON_AFFECTED == "1" ]; then docker pull quay.io/xhochy/arrow_manylinux1_x86_64_base:llvm-7-manylinux1; fi
script:
- if [ $ARROW_CI_PYTHON_AFFECTED == "1" ]; then $TRAVIS_BUILD_DIR/ci/travis_script_manylinux.sh; fi
- name: "Java w/ OpenJDK 8"
@@ -254,7 +254,7 @@ matrix:
- if [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_java.sh
- - name: "Integration w/ OpenJDK 8"
+ - name: "Integration w/ OpenJDK 8, clang 7"
language: java
os: linux
env: ARROW_TEST_GROUP=integration
@@ -262,12 +262,12 @@ matrix:
env:
- ARROW_TRAVIS_PLASMA=1
- ARROW_TRAVIS_PLASMA_JAVA_CLIENT=1
+ - CC="clang-7"
+ - CXX="clang++-7"
before_script:
- if [ $ARROW_CI_INTEGRATION_AFFECTED != "1" ]; then exit; fi
- - export CC="clang-6.0"
- - export CXX="clang++-6.0"
- - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
+ - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- nvm install 11.6
- $TRAVIS_BUILD_DIR/ci/travis_before_script_js.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh
@@ -297,8 +297,8 @@ matrix:
- ARROW_TRAVIS_PLASMA=1
before_script:
- if [ $ARROW_CI_RUBY_AFFECTED != "1" ]; then exit; fi
- - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
+ - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh --only-library
- $TRAVIS_BUILD_DIR/ci/travis_before_script_c_glib.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_ruby.sh
diff --git a/c_glib/Brewfile b/c_glib/Brewfile
index 05af697..647ebe4 100644
--- a/c_glib/Brewfile
+++ b/c_glib/Brewfile
@@ -24,7 +24,7 @@ brew "git"
brew "gobject-introspection"
brew "gtk-doc"
brew "libtool"
-brew "llvm@6"
+brew "llvm@7"
brew "lua"
brew "luarocks"
brew "ninja"
diff --git a/ci/travis_env_common.sh b/ci/travis_env_common.sh
index 90d956b..0af1dc3 100755
--- a/ci/travis_env_common.sh
+++ b/ci/travis_env_common.sh
@@ -23,6 +23,12 @@ export MINICONDA=$HOME/miniconda
export CONDA_PKGS_DIRS=$HOME/.conda_packages
export CONDA_BINUTILS_VERSION=2.31
+export ARROW_LLVM_VERSION=7.0
+export CONDA_LLVM_VERSION="7.0.*"
+
+# extract the major version
+export ARROW_LLVM_MAJOR_VERSION=$(echo $ARROW_LLVM_VERSION | cut -d. -f1)
+
export ARROW_CPP_DIR=$TRAVIS_BUILD_DIR/cpp
export ARROW_PYTHON_DIR=$TRAVIS_BUILD_DIR/python
export ARROW_C_GLIB_DIR=$TRAVIS_BUILD_DIR/c_glib
diff --git a/ci/travis_install_clang_tools.sh b/ci/travis_install_clang_tools.sh
index 9e974db..856c0e8 100755
--- a/ci/travis_install_clang_tools.sh
+++ b/ci/travis_install_clang_tools.sh
@@ -24,6 +24,6 @@ source $TRAVIS_BUILD_DIR/ci/travis_env_common.sh
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
sudo apt-add-repository -y \
- "deb https://apt.llvm.org/$DISTRO_CODENAME/ llvm-toolchain-$DISTRO_CODENAME-6.0 main"
+ "deb https://apt.llvm.org/$DISTRO_CODENAME/ llvm-toolchain-$DISTRO_CODENAME-$ARROW_LLVM_MAJOR_VERSION main"
sudo apt-get update -qq
-sudo apt-get install -q clang-6.0 clang-format-6.0 clang-tidy-6.0
+sudo apt-get install -q clang-$ARROW_LLVM_MAJOR_VERSION clang-format-$ARROW_LLVM_MAJOR_VERSION clang-tidy-$ARROW_LLVM_MAJOR_VERSION
diff --git a/ci/travis_install_linux.sh b/ci/travis_install_linux.sh
index b8fe63a..5be5e7a 100755
--- a/ci/travis_install_linux.sh
+++ b/ci/travis_install_linux.sh
@@ -38,11 +38,12 @@ if [ "$ARROW_TRAVIS_COVERAGE" == "1" ]; then
fi
set -x
-if [ "$DISTRO_CODENAME" != "trusty" ]; then
- if [ "$ARROW_TRAVIS_GANDIVA" == "1" ]; then
- sudo apt-get install -y -qq llvm-6.0-dev
- fi
+if [ "$ARROW_TRAVIS_GANDIVA" == "1" ]; then
+ sudo apt-get install -y -qq llvm-$ARROW_LLVM_MAJOR_VERSION-dev
+fi
+set -x
+if [ "$DISTRO_CODENAME" != "trusty" ]; then
sudo apt-get install -y -qq maven
# Remove Travis-specific versions of Java
@@ -56,4 +57,3 @@ if [ "$DISTRO_CODENAME" != "trusty" ]; then
java -version
mvn -v
fi
-
diff --git a/ci/travis_install_toolchain.sh b/ci/travis_install_toolchain.sh
index 506a04f..defc7ec 100755
--- a/ci/travis_install_toolchain.sh
+++ b/ci/travis_install_toolchain.sh
@@ -26,7 +26,7 @@ if [ ! -e $CPP_TOOLCHAIN ]; then
CONDA_LABEL=""
if [ $ARROW_TRAVIS_GANDIVA == "1" ] && [ $TRAVIS_OS_NAME == "osx" ]; then
- CONDA_PACKAGES="$CONDA_PACKAGES llvmdev=6.0.1"
+ CONDA_PACKAGES="$CONDA_PACKAGES llvmdev=$CONDA_LLVM_VERSION"
fi
if [ $TRAVIS_OS_NAME == "linux" ]; then
diff --git a/ci/travis_script_manylinux.sh b/ci/travis_script_manylinux.sh
index 588d0f9..8e8086a 100755
--- a/ci/travis_script_manylinux.sh
+++ b/ci/travis_script_manylinux.sh
@@ -21,7 +21,7 @@
set -ex
pushd python/manylinux1
-docker run --shm-size=2g --rm -e PYARROW_PARALLEL=3 -v $PWD:/io -v $PWD/../../:/arrow quay.io/xhochy/arrow_manylinux1_x86_64_base:latest /io/build_arrow.sh
+docker run --shm-size=2g --rm -e PYARROW_PARALLEL=3 -v $PWD:/io -v $PWD/../../:/arrow quay.io/xhochy/arrow_manylinux1_x86_64_base:llvm-7-manylinux1 /io/build_arrow.sh
# Testing for https://issues.apache.org/jira/browse/ARROW-2657
# These tests cannot be run inside of the docker container, since TensorFlow
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 707514a..b81ba64 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -74,7 +74,9 @@ endif()
set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support")
-set(CLANG_FORMAT_VERSION "6.0")
+set(ARROW_LLVM_VERSION "7.0")
+STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+" "\\1" ARROW_LLVM_MAJOR_VERSION "${ARROW_LLVM_VERSION}")
+STRING(REGEX REPLACE "^[0-9]+\\.([0-9]+)" "\\1" ARROW_LLVM_MINOR_VERSION "${ARROW_LLVM_VERSION}")
find_package(ClangTools)
if ("$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" STREQUAL "1" OR CLANG_TIDY_FOUND)
# Generate a Clang compile_commands.json "compilation database" file for use
@@ -123,6 +125,10 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
"Use ccache when compiling (if available)"
ON)
+ option(ARROW_USE_LD_GOLD
+ "Use ld.gold for linking on Linux (if available)"
+ OFF)
+
option(ARROW_USE_TSAN
"Enable Thread Sanitizer checks"
OFF)
diff --git a/cpp/README.md b/cpp/README.md
index 7312a31..f2d38fd 100644
--- a/cpp/README.md
+++ b/cpp/README.md
@@ -292,15 +292,15 @@ In addition to the arrow dependencies, gandiva requires :
On Ubuntu/Debian you can install these requirements with:
```shell
-sudo apt-add-repository -y "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-6.0 main"
+sudo apt-add-repository -y "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-7.0 main"
sudo apt-get update -qq
-sudo apt-get install llvm-6.0-dev
+sudo apt-get install llvm-7.0-dev
```
On macOS, you can use [Homebrew][1]:
```shell
-brew install llvm@6
+brew install llvm@7
```
The optional `gandiva` libraries and tests can be built by passing
diff --git a/cpp/cmake_modules/FindClangTools.cmake b/cpp/cmake_modules/FindClangTools.cmake
index 55b425f..f8d76a7 100644
--- a/cpp/cmake_modules/FindClangTools.cmake
+++ b/cpp/cmake_modules/FindClangTools.cmake
@@ -57,12 +57,8 @@ set(CLANG_TOOLS_SEARCH_PATHS
"${HOMEBREW_PREFIX}/bin")
find_program(CLANG_TIDY_BIN
- NAMES clang-tidy-4.0
- clang-tidy-3.9
- clang-tidy-3.8
- clang-tidy-3.7
- clang-tidy-3.6
- clang-tidy
+ NAMES clang-tidy-${ARROW_LLVM_VERSION}
+ clang-tidy-${ARROW_LLVM_MAJOR_VERSION}
PATHS ${CLANG_TOOLS_SEARCH_PATHS} NO_DEFAULT_PATH
)
@@ -74,35 +70,34 @@ else()
message(STATUS "clang-tidy found at ${CLANG_TIDY_BIN}")
endif()
-if (CLANG_FORMAT_VERSION)
+if (ARROW_LLVM_VERSION)
find_program(CLANG_FORMAT_BIN
- NAMES clang-format-${CLANG_FORMAT_VERSION}
+ NAMES clang-format-${ARROW_LLVM_VERSION}
+ clang-format-${ARROW_LLVM_MAJOR_VERSION}
PATHS ${CLANG_TOOLS_SEARCH_PATHS} NO_DEFAULT_PATH
)
# If not found yet, search alternative locations
if ("${CLANG_FORMAT_BIN}" STREQUAL "CLANG_FORMAT_BIN-NOTFOUND")
- STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+" "\\1" CLANG_FORMAT_MAJOR_VERSION "${CLANG_FORMAT_VERSION}")
- STRING(REGEX REPLACE "^[0-9]+\\.([0-9]+)" "\\1" CLANG_FORMAT_MINOR_VERSION "${CLANG_FORMAT_VERSION}")
if (APPLE)
# Homebrew ships older LLVM versions in /usr/local/opt/llvm@version/
- if ("${CLANG_FORMAT_MINOR_VERSION}" STREQUAL "0")
+ if ("${ARROW_LLVM_MINOR_VERSION}" STREQUAL "0")
find_program(CLANG_FORMAT_BIN
NAMES clang-format
- PATHS "${HOMEBREW_PREFIX}/opt/llvm@${CLANG_FORMAT_MAJOR_VERSION}/bin"
+ PATHS "${HOMEBREW_PREFIX}/opt/llvm@${ARROW_LLVM_MAJOR_VERSION}/bin"
NO_DEFAULT_PATH
)
else()
find_program(CLANG_FORMAT_BIN
NAMES clang-format
- PATHS "${HOMEBREW_PREFIX}/opt/llvm@${CLANG_FORMAT_VERSION}/bin"
+ PATHS "${HOMEBREW_PREFIX}/opt/llvm@${ARROW_LLVM_VERSION}/bin"
NO_DEFAULT_PATH
)
endif()
if ("${CLANG_FORMAT_BIN}" STREQUAL "CLANG_FORMAT_BIN-NOTFOUND")
# binary was still not found, look into Cellar
- file(GLOB CLANG_FORMAT_PATH "${HOMEBREW_PREFIX}/Cellar/llvm/${CLANG_FORMAT_VERSION}.*")
+ file(GLOB CLANG_FORMAT_PATH "${HOMEBREW_PREFIX}/Cellar/llvm/${ARROW_LLVM_VERSION}.*")
find_program(CLANG_FORMAT_BIN
NAMES clang-format
PATHS "${CLANG_FORMAT_PATH}/bin"
@@ -119,7 +114,7 @@ if (CLANG_FORMAT_VERSION)
execute_process(COMMAND ${CLANG_FORMAT_BIN} "-version"
OUTPUT_VARIABLE CLANG_FORMAT_FOUND_VERSION_MESSAGE
OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (NOT ("${CLANG_FORMAT_FOUND_VERSION_MESSAGE}" MATCHES "^clang-format version ${CLANG_FORMAT_MAJOR_VERSION}\\.${CLANG_FORMAT_MINOR_VERSION}.*"))
+ if (NOT ("${CLANG_FORMAT_FOUND_VERSION_MESSAGE}" MATCHES "^clang-format version ${ARROW_LLVM_MAJOR_VERSION}\\.${ARROW_LLVM_MINOR_VERSION}.*"))
set(CLANG_FORMAT_BIN "CLANG_FORMAT_BIN-NOTFOUND")
endif()
endif()
diff --git a/cpp/cmake_modules/FindLLVM.cmake b/cpp/cmake_modules/FindLLVM.cmake
index edc1b48..2cea734 100644
--- a/cpp/cmake_modules/FindLLVM.cmake
+++ b/cpp/cmake_modules/FindLLVM.cmake
@@ -20,21 +20,20 @@
# find_package(LLVM)
#
-set(GANDIVA_LLVM_VERSION 6.0)
-
if (APPLE)
# Also look in homebrew for a matching llvm version
find_program(BREW_BIN brew)
if (BREW_BIN)
execute_process(
- COMMAND ${BREW_BIN} --prefix "llvm@6"
+ COMMAND ${BREW_BIN} --prefix "llvm@7"
OUTPUT_VARIABLE LLVM_BREW_PREFIX
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
endif()
-find_package(LLVM ${GANDIVA_LLVM_VERSION} REQUIRED CONFIG HINTS
+find_package(LLVM ${ARROW_LLVM_VERSION} REQUIRED CONFIG HINTS
+ /usr/lib
/usr/local/opt/llvm
/usr/share
${LLVM_BREW_PREFIX}
@@ -45,14 +44,6 @@ message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
# Find the libraries that correspond to the LLVM components
llvm_map_components_to_libnames(LLVM_LIBS core mcjit native ipo bitreader target linker analysis debuginfodwarf)
-find_program(CLANG_EXECUTABLE clang
- HINTS ${LLVM_TOOLS_BINARY_DIR})
-if (CLANG_EXECUTABLE)
- message(STATUS "Found clang ${CLANG_EXECUTABLE}")
-else ()
- message(FATAL_ERROR "Couldn't find clang")
-endif ()
-
find_program(LLVM_LINK_EXECUTABLE llvm-link
HINTS ${LLVM_TOOLS_BINARY_DIR})
if (LLVM_LINK_EXECUTABLE)
@@ -61,6 +52,24 @@ else ()
message(FATAL_ERROR "Couldn't find llvm-link")
endif ()
+find_program(CLANG_EXECUTABLE
+ NAMES clang-${ARROW_LLVM_VERSION}
+ clang-${ARROW_LLVM_MAJOR_VERSION}
+ HINTS ${LLVM_TOOLS_BINARY_DIR})
+if (CLANG_EXECUTABLE)
+ message(STATUS "Found clang ${ARROW_LLVM_VERSION} ${CLANG_EXECUTABLE}")
+else ()
+ # If clang-7 not available, switch to normal clang.
+ find_program(CLANG_EXECUTABLE
+ NAMES clang
+ HINTS ${LLVM_TOOLS_BINARY_DIR})
+ if (CLANG_EXECUTABLE)
+ message(STATUS "Found clang ${CLANG_EXECUTABLE}")
+ else ()
+ message(FATAL_ERROR "Couldn't find clang")
+ endif ()
+endif ()
+
add_library(LLVM::LLVM_INTERFACE INTERFACE IMPORTED)
set_target_properties(LLVM::LLVM_INTERFACE PROPERTIES
diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake
index 43dab02..cb64ea5 100644
--- a/cpp/cmake_modules/SetupCxxFlags.cmake
+++ b/cpp/cmake_modules/SetupCxxFlags.cmake
@@ -291,7 +291,7 @@ if (NOT WIN32 AND NOT APPLE)
GET_GOLD_VERSION()
if (GOLD_VERSION)
set(MUST_USE_GOLD 1)
- else()
+ elseif(ARROW_USE_LD_GOLD)
# Can the compiler optionally enable the gold linker?
GET_GOLD_VERSION("-fuse-ld=gold")
@@ -359,10 +359,11 @@ endif()
# -DARROW_CXXFLAGS="-g" to add them
if (NOT MSVC)
if(ARROW_GGDB_DEBUG)
- set(C_FLAGS_DEBUG "-ggdb -O0")
- set(C_FLAGS_FASTDEBUG "-ggdb -O1")
- set(CXX_FLAGS_DEBUG "-ggdb -O0")
- set(CXX_FLAGS_FASTDEBUG "-ggdb -O1")
+ set(ARROW_DEBUG_SYMBOL_TYPE "gdb")
+ set(C_FLAGS_DEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O0")
+ set(C_FLAGS_FASTDEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O1")
+ set(CXX_FLAGS_DEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O0")
+ set(CXX_FLAGS_FASTDEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O1")
else()
set(C_FLAGS_DEBUG "-g -O0")
set(C_FLAGS_FASTDEBUG "-g -O1")
diff --git a/cpp/src/gandiva/engine.cc b/cpp/src/gandiva/engine.cc
index d073a3e..113ba81 100644
--- a/cpp/src/gandiva/engine.cc
+++ b/cpp/src/gandiva/engine.cc
@@ -45,8 +45,10 @@
#include <llvm/Support/raw_ostream.h>
#include <llvm/Transforms/IPO.h>
#include <llvm/Transforms/IPO/PassManagerBuilder.h>
+#include <llvm/Transforms/InstCombine/InstCombine.h>
#include <llvm/Transforms/Scalar.h>
#include <llvm/Transforms/Scalar/GVN.h>
+#include <llvm/Transforms/Utils.h>
#include <llvm/Transforms/Vectorize.h>
#if defined(_MSC_VER)
diff --git a/cpp/src/gandiva/eval_batch.h b/cpp/src/gandiva/eval_batch.h
index 093968f..50e5a48 100644
--- a/cpp/src/gandiva/eval_batch.h
+++ b/cpp/src/gandiva/eval_batch.h
@@ -85,7 +85,7 @@ class EvalBatch {
/// An array of 'num_buffers_', each containing a buffer. The buffer
/// sizes depends on the data type, but all of them have the same
/// number of slots (equal to num_records_).
- std::unique_ptr<uint8_t* []> buffers_array_;
+ std::unique_ptr<uint8_t*[]> buffers_array_;
std::unique_ptr<LocalBitMapsHolder> local_bitmaps_holder_;
diff --git a/cpp/src/gandiva/local_bitmaps_holder.h b/cpp/src/gandiva/local_bitmaps_holder.h
index ae0ba53..77dd01d 100644
--- a/cpp/src/gandiva/local_bitmaps_holder.h
+++ b/cpp/src/gandiva/local_bitmaps_holder.h
@@ -53,7 +53,7 @@ class LocalBitMapsHolder {
std::vector<std::unique_ptr<uint8_t[]>> local_bitmaps_vec_;
/// An array of the local bitmaps.
- std::unique_ptr<uint8_t* []> local_bitmaps_array_;
+ std::unique_ptr<uint8_t*[]> local_bitmaps_array_;
int64_t local_bitmap_size_;
};
diff --git a/dev/tasks/gandiva-jars/travis.linux.yml b/dev/tasks/gandiva-jars/travis.linux.yml
index 8526b48..7c5eb33 100644
--- a/dev/tasks/gandiva-jars/travis.linux.yml
+++ b/dev/tasks/gandiva-jars/travis.linux.yml
@@ -50,8 +50,8 @@ before_script:
script:
- mkdir -p dist
- - arrow/dev/tasks/gandiva-jars/build-cpp.sh
- - arrow/dev/tasks/gandiva-jars/build-java.sh
+ - arrow/dev/tasks/gandiva-jars/build-cpp.sh || travis_terminate 1
+ - arrow/dev/tasks/gandiva-jars/build-java.sh || travis_terminate 1
deploy:
provider: releases
diff --git a/dev/tasks/gandiva-jars/travis.osx.yml b/dev/tasks/gandiva-jars/travis.osx.yml
index 8c0627b..b801725 100644
--- a/dev/tasks/gandiva-jars/travis.osx.yml
+++ b/dev/tasks/gandiva-jars/travis.osx.yml
@@ -40,8 +40,8 @@ before_script:
script:
- mkdir -p dist
- - arrow/dev/tasks/gandiva-jars/build-cpp.sh
- - arrow/dev/tasks/gandiva-jars/build-java.sh
+ - arrow/dev/tasks/gandiva-jars/build-cpp.sh || travis_terminate 1
+ - arrow/dev/tasks/gandiva-jars/build-java.sh || travis_terminate 1
deploy:
provider: releases
diff --git a/python/manylinux1/scripts/build_clang.sh b/python/manylinux1/scripts/build_clang.sh
index 0bf4979..45cd068 100755
--- a/python/manylinux1/scripts/build_clang.sh
+++ b/python/manylinux1/scripts/build_clang.sh
@@ -18,7 +18,7 @@
source /multibuild/manylinux_utils.sh
-export LLVM_VERSION="6.0.0"
+export LLVM_VERSION="7.0.1"
curl -sL http://releases.llvm.org/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz -o cfe-${LLVM_VERSION}.src.tar.xz
unxz cfe-${LLVM_VERSION}.src.tar.xz
tar xf cfe-${LLVM_VERSION}.src.tar
diff --git a/python/manylinux1/scripts/build_llvm.sh b/python/manylinux1/scripts/build_llvm.sh
index a61af79..ccca2e9 100755
--- a/python/manylinux1/scripts/build_llvm.sh
+++ b/python/manylinux1/scripts/build_llvm.sh
@@ -18,7 +18,7 @@
source /multibuild/manylinux_utils.sh
-export LLVM_VERSION="6.0.0"
+export LLVM_VERSION="7.0.1"
curl -sL http://releases.llvm.org/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz -o llvm-${LLVM_VERSION}.src.tar.xz
unxz llvm-${LLVM_VERSION}.src.tar.xz
tar xf llvm-${LLVM_VERSION}.src.tar
diff --git a/r/lint.sh b/r/lint.sh
index 8a9a2fb..f29932f 100755
--- a/r/lint.sh
+++ b/r/lint.sh
@@ -20,8 +20,7 @@
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
CPP_BUILD_SUPPORT=$SOURCE_DIR/../cpp/build-support
-LLVM_VERSION=6.0
-CLANG_FORMAT=clang-format-$LLVM_VERSION
+CLANG_FORMAT=clang-format-7
$CPP_BUILD_SUPPORT/run_clang_format.py \
--clang_format_binary=$CLANG_FORMAT \