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 2018/12/04 15:32:25 UTC

[arrow] branch master updated: ARROW-3931: [C++] Make possible to build regardless of LANG

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 ffc5154  ARROW-3931: [C++] Make possible to build regardless of LANG
ffc5154 is described below

commit ffc51542747b0a80518fd018bb8c8ec8087f0976
Author: sarutak <sa...@oss.nttdata.co.jp>
AuthorDate: Tue Dec 4 09:32:17 2018 -0600

    ARROW-3931: [C++] Make possible to build regardless of LANG
    
    At the time of building C++ libs, CompilerInfo.cmake checks the version of compiler to be used.
    How to check is string matching of output of gcc -v or like clang -v.
    When LANG is not related to English, build will fail because string match fails.
    The following is the case of  ja_JP.UTF-8 (Japanese).
    
    ```
    CMake Error at cmake_modules/CompilerInfo.cmake:92 (message):
      Unknown compiler.  Version info:
    
      組み込み spec を使用しています。
    
      COLLECT_GCC=/usr/bin/c++
    
      COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
    
      ターゲット: x86_64-redhat-linux
    
      configure 設定: ../configure --prefix=/usr --mandir=/usr/share/man
      --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla
      --enable-bootstrap --enable-shared --enable-threads=posix
      --enable-checking=release --with-system-zlib --enable-__cxa_atexit
      --disable-libunwind-exceptions --enable-gnu-unique-object
      --enable-linker-build-id --with-linker-hash-style=gnu
      --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto
      --enable-plugin --enable-initfini-array --disable-libgcj
      --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install
      --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install
      --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64
      --build=x86_64-redhat-linux
    
      スレッドモデル: posix
    
      gcc バージョン 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
    ```
    
    I fixed this issue by modifying CompilerInfo.cmake.
    
    Author: sarutak <sa...@oss.nttdata.co.jp>
    Author: Wes McKinney <we...@apache.org>
    
    Closes #3077 from sarutak/fix-CompilerInfo and squashes the following commits:
    
    0de995ef6 <Wes McKinney> Create compiler version command as list to appease MSVC
    199117d00 <sarutak> Fixed to set LANG=C only when Unix or Apple
    87d3d1715 <sarutak> Fixed CompilerInfo to make possible to build regardless of LANG
---
 cpp/cmake_modules/CompilerInfo.cmake | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/cpp/cmake_modules/CompilerInfo.cmake b/cpp/cmake_modules/CompilerInfo.cmake
index 76f692b..faa1291 100644
--- a/cpp/cmake_modules/CompilerInfo.cmake
+++ b/cpp/cmake_modules/CompilerInfo.cmake
@@ -21,14 +21,21 @@ if (NOT MSVC)
   set(COMPILER_GET_VERSION_SWITCH "-v")
 endif()
 
-message(INFO "Compiler command: ${CMAKE_CXX_COMPILER}")
+set(COMPILER_VERSION_COMMAND "${CMAKE_CXX_COMPILER}" "${COMPILER_GET_VERSION_SWITCH}")
+
+if (UNIX OR APPLE)
+  set(COMPILER_VERSION_COMMAND "env" "LANG=C" ${COMPILER_VERSION_COMMAND})
+endif()
+
+string(REPLACE ";" " " COMPILER_VERSION_COMMAND_STR "${COMPILER_VERSION_COMMAND}")
+message(STATUS "Compiler command: ${COMPILER_VERSION_COMMAND_STR}")
 # Some gcc seem to output their version on stdout, most do it on stderr, simply
 # merge both pipes into a single variable
-execute_process(COMMAND "${CMAKE_CXX_COMPILER}" ${COMPILER_GET_VERSION_SWITCH}
+execute_process(COMMAND ${COMPILER_VERSION_COMMAND}
                 OUTPUT_VARIABLE COMPILER_VERSION_FULL
                 ERROR_VARIABLE COMPILER_VERSION_FULL)
-message(INFO "Compiler version: ${COMPILER_VERSION_FULL}")
-message(INFO "Compiler id: ${CMAKE_CXX_COMPILER_ID}")
+message(STATUS "Compiler version: ${COMPILER_VERSION_FULL}")
+message(STATUS "Compiler id: ${CMAKE_CXX_COMPILER_ID}")
 string(TOLOWER "${COMPILER_VERSION_FULL}" COMPILER_VERSION_FULL_LOWER)
 
 if(MSVC)