This is an automated email from the ASF dual-hosted git repository.
kou 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 abdeb40 ARROW-11204: [C++] Fix build failures with bundled gRPC and
Protobuf
abdeb40 is described below
commit abdeb40fb7db78a1316feab378e155fcc58cdca2
Author: Sutou Kouhei <[email protected]>
AuthorDate: Tue Jan 12 15:44:40 2021 +0900
ARROW-11204: [C++] Fix build failures with bundled gRPC and Protobuf
This is caused by ARROW-9400, 0ed34c83c6b1e862c3d8aad6bc9374759b64ea55 .
There are some problems:
* "-Dprotobuf_MSVC_STATIC_RUNTIME=" (empty value) is a problem with non
MSVC
* Can't find RE2 with CMake 3.11 or older
A failure log (no useful information):
https://github.com/ursa-labs/crossbow/runs/1675885130#step:5:877
FAILED: grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure
cd /.../grpc_ep-prefix/src/grpc_ep-build &&
cmake -P
/.../grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-RELEASE.cmake &&
cmake -E touch /.../grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure
CMake Error at
/.../grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-RELEASE.cmake:16
(message):
Command failed: 1
'/usr/bin/cmake'
'-DCMAKE_C_COMPILER=/usr/bin/cc'
'-DCMAKE_CXX_COMPILER=/usr/bin/c++'
'-DCMAKE_AR=/usr/bin/ar'
'-DCMAKE_RANLIB=/usr/bin/ranlib'
'-DCMAKE_BUILD_TYPE=RELEASE'
'-DCMAKE_C_FLAGS=...'
'-DCMAKE_C_FLAGS_RELEASE=...'
'-DCMAKE_CXX_FLAGS=...'
'-DCMAKE_CXX_FLAGS_RELEASE=...'
'-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY='
'-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY='
'-DCMAKE_PREFIX_PATH=';/.../protobuf_ep-install;;/.../cares_ep-install;;/.../absl_ep-install''
'-DgRPC_ABSL_PROVIDER=package'
'-DgRPC_BUILD_CSHARP_EXT=OFF'
'-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF'
'-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF'
'-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF'
'-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF'
'-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF'
'-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF'
'-DgRPC_BUILD_TESTS=OFF'
'-DgRPC_CARES_PROVIDER=package'
'-DgRPC_GFLAGS_PROVIDER=package'
'-DgRPC_MSVC_STATIC_RUNTIME='
'-DgRPC_PROTOBUF_PROVIDER=package'
'-DgRPC_PROTOBUF_PACKAGE_TYPE=CONFIG'
'-DgRPC_RE2_PROVIDER=package'
'-DgRPC_SSL_PROVIDER=package'
'-DgRPC_ZLIB_PROVIDER=package'
'-DgRPC_MSVC_STATIC_RUNTIME='
'-DCMAKE_INSTALL_PREFIX=/.../grpc_ep-install'
'-DCMAKE_INSTALL_LIBDIR=lib'
'-DBUILD_SHARED_LIBS=OFF'
'-GNinja'
'/.../grpc_ep-prefix/src/grpc_ep'
See also
/.../grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-*.log
Closes #9157 from kou/cpp-grpc-bundled
Authored-by: Sutou Kouhei <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
---
cpp/cmake_modules/ThirdpartyToolchain.cmake | 14 ++++++------
dev/tasks/linux-packages/apache-arrow/debian/rules | 8 ++++++-
dev/tasks/linux-packages/package-task.rb | 25 ++++++++++++++++------
3 files changed, 33 insertions(+), 14 deletions(-)
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 6a3ce85..9cca412 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -1363,7 +1363,6 @@ macro(build_protobuf)
-DCMAKE_INSTALL_LIBDIR=lib
"-DCMAKE_INSTALL_PREFIX=${PROTOBUF_PREFIX}"
-Dprotobuf_BUILD_TESTS=OFF
- -Dprotobuf_MSVC_STATIC_RUNTIME=${ARROW_USE_STATIC_CRT}
-Dprotobuf_DEBUG_POSTFIX=)
if(MSVC AND NOT ARROW_USE_STATIC_CRT)
list(APPEND PROTOBUF_CMAKE_ARGS "-Dprotobuf_MSVC_STATIC_RUNTIME=OFF")
@@ -2411,6 +2410,10 @@ macro(build_grpc)
add_dependencies(grpc_dependencies gflags_ep)
endif()
+ if(RE2_VENDORED)
+ add_dependencies(grpc_dependencies re2_ep)
+ endif()
+
add_dependencies(grpc_dependencies ${ARROW_PROTOBUF_LIBPROTOBUF}
c-ares::cares
ZLIB::ZLIB)
@@ -2424,10 +2427,13 @@ macro(build_grpc)
get_target_property(GRPC_GFLAGS_INCLUDE_DIR ${GFLAGS_LIBRARIES}
INTERFACE_INCLUDE_DIRECTORIES)
get_filename_component(GRPC_GFLAGS_ROOT "${GRPC_GFLAGS_INCLUDE_DIR}"
DIRECTORY)
+ get_target_property(GRPC_RE2_INCLUDE_DIR re2::re2
INTERFACE_INCLUDE_DIRECTORIES)
+ get_filename_component(GRPC_RE2_ROOT "${GRPC_RE2_INCLUDE_DIR}" DIRECTORY)
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_PB_ROOT}")
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_GFLAGS_ROOT}")
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_CARES_ROOT}")
+ set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_RE2_ROOT}")
# ZLIB is never vendored
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${ZLIB_ROOT}")
@@ -2460,15 +2466,9 @@ macro(build_grpc)
-DgRPC_RE2_PROVIDER=package
-DgRPC_SSL_PROVIDER=package
-DgRPC_ZLIB_PROVIDER=package
- -DgRPC_MSVC_STATIC_RUNTIME=${ARROW_USE_STATIC_CRT}
-DCMAKE_INSTALL_PREFIX=${GRPC_PREFIX}
-DCMAKE_INSTALL_LIBDIR=lib
-DBUILD_SHARED_LIBS=OFF)
- if(RE2_VENDORED)
- list(APPEND GRPC_CMAKE_ARGS -Dre2_ROOT=${RE2_PREFIX}
- -DCMAKE_POLICY_DEFAULT_CMP0074=NEW)
- add_dependencies(grpc_dependencies re2_ep)
- endif()
if(OPENSSL_ROOT_DIR)
list(APPEND GRPC_CMAKE_ARGS -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR})
endif()
diff --git a/dev/tasks/linux-packages/apache-arrow/debian/rules
b/dev/tasks/linux-packages/apache-arrow/debian/rules
index 94e113e..f6cd159 100755
--- a/dev/tasks/linux-packages/apache-arrow/debian/rules
+++ b/dev/tasks/linux-packages/apache-arrow/debian/rules
@@ -21,6 +21,11 @@ override_dh_auto_configure:
ARROW_CUDA=OFF; \
ARROW_PLASMA=OFF; \
fi; \
+ if pkg-config --exists re2; then \
+ ARROW_RE2_SOURCE=; \
+ else \
+ ARROW_RE2_SOURCE=BUNDLED; \
+ fi; \
dh_auto_configure \
--sourcedirectory=cpp \
--builddirectory=cpp_build \
@@ -45,7 +50,8 @@ override_dh_auto_configure:
-DCMAKE_UNITY_BUILD=ON \
-DPARQUET_REQUIRE_ENCRYPTION=ON \
-DPythonInterp_FIND_VERSION=ON \
- -DPythonInterp_FIND_VERSION_MAJOR=3
+ -DPythonInterp_FIND_VERSION_MAJOR=3 \
+ -Dre2_SOURCE=$${ARROW_RE2_SOURCE}
override_dh_auto_build:
dh_auto_build \
diff --git a/dev/tasks/linux-packages/package-task.rb
b/dev/tasks/linux-packages/package-task.rb
index b729234..b66dd5e 100644
--- a/dev/tasks/linux-packages/package-task.rb
+++ b/dev/tasks/linux-packages/package-task.rb
@@ -122,7 +122,7 @@ class PackageTask
image
end
- def docker_run(os, architecture)
+ def docker_run(os, architecture, console: false)
id = os
id = "#{id}-#{architecture}" if architecture
image = docker_image(os, architecture)
@@ -162,7 +162,8 @@ class PackageTask
build_command_line.concat(docker_build_options(os, architecture))
run_command_line.concat(docker_run_options(os, architecture))
build_command_line << docker_context
- run_command_line.concat([image, "/host/build.sh"])
+ run_command_line << image
+ run_command_line << "/host/build.sh" unless console
sh(*build_command_line)
sh(*run_command_line)
@@ -288,7 +289,7 @@ class PackageTask
raise NotImplementedError, message
end
- def apt_build
+ def apt_build(console: false)
tmp_dir = "#{apt_dir}/tmp"
rm_rf(tmp_dir)
mkdir_p(tmp_dir)
@@ -310,7 +311,7 @@ VERSION=#{@deb_upstream_version}
cd(apt_dir) do
distribution, version, architecture = target.split("-", 3)
os = "#{distribution}-#{version}"
- docker_run(os, architecture)
+ docker_run(os, architecture, console: console)
end
end
end
@@ -340,6 +341,12 @@ VERSION=#{@deb_upstream_version}
task :build => build_dependencies do
apt_build if enable_apt?
end
+
+ namespace :build do
+ task :console => build_dependencies do
+ apt_build(console: true) if enable_apt?
+ end
+ end
end
desc "Release APT repositories"
@@ -408,7 +415,7 @@ VERSION=#{@deb_upstream_version}
"#{yum_dir}/#{@rpm_package}.spec.in"
end
- def yum_build
+ def yum_build(console: false)
tmp_dir = "#{yum_dir}/tmp"
rm_rf(tmp_dir)
mkdir_p(tmp_dir)
@@ -438,7 +445,7 @@ RELEASE=#{@rpm_release}
cd(yum_dir) do
distribution, version, architecture = target.split("-", 3)
os = "#{distribution}-#{version}"
- docker_run(os, architecture)
+ docker_run(os, architecture, console: console)
end
end
end
@@ -467,6 +474,12 @@ RELEASE=#{@rpm_release}
task :build => build_dependencies do
yum_build if enable_yum?
end
+
+ namespace :build do
+ task :console => build_dependencies do
+ yum_build(console: true) if enable_yum?
+ end
+ end
end
desc "Release Yum repositories"