You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Kouhei Sutou (Jira)" <ji...@apache.org> on 2022/09/17 21:29:00 UTC

[jira] [Comment Edited] (ARROW-17763) [C++] Allow Bazel to pass custom __DATE__, __TIME__, and __TIMESTAMP__ flags to Arrow's toolchain

    [ https://issues.apache.org/jira/browse/ARROW-17763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17606153#comment-17606153 ] 

Kouhei Sutou edited comment on ARROW-17763 at 9/17/22 9:28 PM:
---------------------------------------------------------------

Thank you, [~jinshang]. That's an excellent reference!

I was able to get Arrow building in Bazel with Bazel's rules_foreign_cc by introducing a small patch to remove the {{ESCAPE_QUOTES}} option when {{src/arrow/util/config.h}} is generated:
{quote}{{— cpp/cmake_modules/ThirdpartyToolchain.cmake}}
{{+++ cpp/cmake_modules/ThirdpartyToolchain.cmake}}
{{@@ -4871,6 +4871,6 @@ message(STATUS "All bundled static libraries: ${ARROW_BUNDLED_STATIC_LIBS}")}}
 # {{Write out the package configurations.}}

{{-configure_file("src/arrow/util/config.h.cmake" "src/arrow/util/config.h" ESCAPE_QUOTES)}}
{{+configure_file("src/arrow/util/config.h.cmake" "src/arrow/util/config.h")}}
{{install(FILES "${ARROW_BINARY_DIR}/src/arrow/util/config.h"}}
{{DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/util")}}
{quote}
This patch can be applied when the HTTP archive is downloaded and extracted:
{quote}{{http_archive(}}
{{    name = "arrow",}}
{{    build_file = "//third_party/github.com/apache/arrow:BUILD.bazel",}}
{{    strip_prefix = "apache-arrow-9.0.0",}}
{{    patches = ["//third_party/github.com/apache/arrow:ThirdpartyToolchain.cmake.patch"],}}
{{    urls = [}}
{{        "https://github.com/apache/arrow/archive/refs/tags/apache-arrow-9.0.0.tar.gz"}}
{{    ],}}
{{)}}
{quote}
Is there a specific rationale for escaping quotes when {{src/arrow/util/config.h}} is being generated? Is it feasible/practical to remove ESCAPE_QUOTES so that Arrow can be built easier in Bazel projects?

Thank you!


was (Author: JIRAUSER295875):
Thank you, [~jinshang]. That's an excellent reference!

I was able to get Arrow building in Bazel with Bazel's rules_foreign_cc by introducing a small patch to remove the {{ESCAPE_QUOTES}} option when {{src/arrow/util/config.h}} is generated:
{quote}{{— cpp/cmake_modules/ThirdpartyToolchain.cmake}}
{{+++ cpp/cmake_modules/ThirdpartyToolchain.cmake}}
{{@@ -4871,6 +4871,6 @@ message(STATUS "All bundled static libraries: ${ARROW_BUNDLED_STATIC_LIBS}")}}
 # {{Write out the package configurations.}}

{{-configure_file("src/arrow/util/config.h.cmake" "src/arrow/util/config.h" ESCAPE_QUOTES)}}
{{+configure_file("src/arrow/util/config.h.cmake" "src/arrow/util/config.h")}}
{{install(FILES "${ARROW_BINARY_DIR}/src/arrow/util/config.h"}}
{{DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/util")}}
{quote}
This patch can be applied when the HTTP archive is downloaded and extracted:
{quote}{{http_archive(}}
{{    name = "arrow",}}
{{    build_file = "//third_party/github.com/apache/arrow:BUILD.bazel",}}
{{    strip_prefix = "apache-arrow-9.0.0",}}
{{    patches = ["//third_party/github.com/apache/arrow:ThirdpartyToolchain.cmake.patch"],}}
{{    urls = [}}
{{        "https://github.com/apache/arrow/archive/refs/tags/apache-arrow-9.0.0.tar.gz"}}
{{    ],}}
{{)}}
{quote}
Is there a specific rationale for escaping quotes when {{src/arrow/util/config.h }}is being generated? Is it feasible/practical to remove ESCAPE_QUOTES so that Arrow can be built easier in Bazel projects?

Thank you!

> [C++] Allow Bazel to pass custom __DATE__, __TIME__, and __TIMESTAMP__ flags to Arrow's toolchain
> -------------------------------------------------------------------------------------------------
>
>                 Key: ARROW-17763
>                 URL: https://issues.apache.org/jira/browse/ARROW-17763
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++
>    Affects Versions: 9.0.0
>            Reporter: Stefan Novak
>            Priority: Major
>
> Hello!
> I've been looking into incorporating Arrow into a Bazel build build project and have been having some challenges getting it to work.
> I've been using Bazel's [rules_foreign_cc|https://bazelbuild.github.io/rules_foreign_cc/main/index.html] to call CMake, however the build process is erroring out as [described by another community member|https://github.com/bazelbuild/rules_foreign_cc/issues/879].
> One thing that I've learned: Bazel's C++ integration will specify {{\_\_DATE\_\_}}, {{\_\_TIME\_\_}}, and {{\_\_TIMESTAMP\_\_}} flags to ensure reproducible builds.
> These values are expected to be quoted strings. However, when Arrow's toolchain [translates|https://github.com/bazelbuild/bazel/blob/5.3.0/tools/cpp/unix_cc_configure.bzl#L622-L624]] {{CMAKE_CXX_FLAGS}} to {{ARROW_CXX_COMPILER_FLAGS}}, CMake is [calling|https://github.com/apache/arrow/blob/apache-arrow-9.0.0/cpp/cmake_modules/ThirdpartyToolchain.cmake#L4874] {{configure_file(...)}} with the {{ESCAPE_QUOTES}} option which is mucking up the parsing.
> Does anyone happen to have any recommendations for a workaround or a fix?
> Thank you! I appreciate everyone's efforts in continuing to develop Arrow.
> Cheers,
> Stefan



--
This message was sent by Atlassian Jira
(v8.20.10#820010)