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"

Reply via email to