You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@kudu.apache.org by "Marton Greber (Code Review)" <ge...@cloudera.org> on 2022/08/01 16:06:11 UTC

[kudu-CR] KUDU-3374 Add build support for M1 and macOS Monterey

Hello Tidy Bot, Zoltan Chovan, Alexey Serbin, Attila Bukor, Kudu Jenkins, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/18770

to look at the new patch set (#12).

Change subject: KUDU-3374 Add build support for M1 and macOS Monterey
......................................................................

KUDU-3374 Add build support for M1 and macOS Monterey

The macOS Monterey OS upgrade broke glog 0.3.5, moreover building Kudu
with LLVM 9 on Apple silicon is not really feasible. There has been
multiple non-merged patches submitted to tackle these issues:
Upgrade glog to 0.6.0 [1]
Fix codegen build on MacOS Monterey [2]
Fix building on Apple M1 [3]
Upgrade to LLVM 11 and IWYU 0.15 [4]
This patch squashes all of the above and provides the necessary
glue changes.

LLVM is updated to version 11 and glog to version 0.6.0 to fix the
initial build issues. Building the glog tests has to be turned off as
it causes linker error in TSAN build. The optional ZLIB dependency in
LLVM-IWYU is removed as the original issue -mentioned in the comments-
has been resolved, and this caused build issues on Unix. [5] The
homebrew prefix is changed from /usr/local to /opt/homebrew on ARM macs.
In places where package locations are provided, an ARM alternative
location has been added. Added a patch [6] to fix null pointer
dereference in rapidjson. Added another patch [7] containing assertions
to a similar suppress clang warnings in rapidjson. Building tests in
glog has to be turned off [8] as it causes linker error in tsan build.
With the clang upgrade it now links against libatomic in TSAN builds. In
dist-test.py libatomic is added to the list of shipped libraries as it
was missing on the target machines. A couple of new TSAN races
came up with LLVM regexes, added those to the sanitizer suppression
list.

[1] Change-Id: https://gerrit.cloudera.org/#/c/18460/
[2] Change-Id: https://gerrit.cloudera.org/#/c/18461/
[3] Change-Id: https://gerrit.cloudera.org/#/c/18464/
[4] Change-Id: https://gerrit.cloudera.org/#/c/16768/
[5] https://github.com/include-what-you-use/include-what-you-use/
    issues/539
[6] https://github.com/Tencent/rapidjson/pull/727
[7] https://github.com/Tencent/rapidjson/pull/757
[8] https://github.com/google/glog/issues/54

Change-Id: I9877f95340b969308c317a6bac50665ff78e329e
---
M CMakeLists.txt
M build-support/dist_test.py
M build-support/iwyu/mappings/glog.imp
M cmake_modules/FindKerberosPrograms.cmake
M src/kudu/codegen/CMakeLists.txt
M src/kudu/codegen/code_generator.cc
M src/kudu/codegen/module_builder.cc
M src/kudu/common/row_operations-test.cc
M src/kudu/fs/dir_util-test.cc
M src/kudu/gutil/atomicops-internals-macosx.h
M src/kudu/gutil/dynamic_annotations.c
M src/kudu/gutil/dynamic_annotations.h
M src/kudu/ranger/ranger_client.cc
M src/kudu/security/test/mini_kdc.cc
M src/kudu/server/diagnostics_log.cc
M src/kudu/server/pprof_path_handlers.cc
M src/kudu/tablet/concurrent_btree.h
M src/kudu/util/async_logger.cc
M src/kudu/util/async_logger.h
M src/kudu/util/debug-util.cc
M src/kudu/util/debug/trace_logging.h
M src/kudu/util/flags.cc
M src/kudu/util/logging-test.cc
M src/kudu/util/logging.cc
M src/kudu/util/logging.h
M src/kudu/util/logging_test_util.h
M src/kudu/util/minidump.cc
M src/kudu/util/rw_mutex-test.cc
M src/kudu/util/sanitizer_options.cc
M thirdparty/build-definitions.sh
M thirdparty/build-thirdparty.sh
M thirdparty/download-thirdparty.sh
M thirdparty/package-llvm.sh
D thirdparty/patches/glog-fix-symbolization.patch
D thirdparty/patches/glog-issue-198-fix-unused-warnings.patch
D thirdparty/patches/glog-issue-54-dont-build-tests.patch
A thirdparty/patches/glog-make-internals-visible.patch
M thirdparty/patches/glog-support-stacktrace-for-aarch64.patch
A thirdparty/patches/gmock-remove-unused-gunit-iwyu-pragma.patch
D thirdparty/patches/llvm-iwyu-include-picker.patch
D thirdparty/patches/llvm-iwyu-sized-deallocation.patch
A thirdparty/patches/rapidjson-assertions-for-clang-warnings.patch
A thirdparty/patches/rapidjson-avoid-pointer-arithmetic-on-null-pointer.patch
M thirdparty/preflight.py
M thirdparty/vars.sh
45 files changed, 279 insertions(+), 705 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/70/18770/12
-- 
To view, visit http://gerrit.cloudera.org:8080/18770
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I9877f95340b969308c317a6bac50665ff78e329e
Gerrit-Change-Number: 18770
Gerrit-PatchSet: 12
Gerrit-Owner: Marton Greber <gr...@gmail.com>
Gerrit-Reviewer: Alexey Serbin <al...@apache.org>
Gerrit-Reviewer: Attila Bukor <ab...@apache.org>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Marton Greber <gr...@gmail.com>
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Zoltan Chovan <zc...@cloudera.com>