Joe McDonnell created IMPALA-12346: -------------------------------------- Summary: ARM core job fails with link error due to Boost locale's ICU dependency Key: IMPALA-12346 URL: https://issues.apache.org/jira/browse/IMPALA-12346 Project: IMPALA Issue Type: Bug Components: Infrastructure Affects Versions: Impala 4.3.0 Reporter: Joe McDonnell
On ubuntu-20.04-from-scratch-ARM, the core job fails with the following issue linking impalad: {noformat} 15:37:21 ../../../toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/lib/libboost_locale.a(icu_backend.o):icu_backend.cpp:function boost::locale::impl_icu::create_localization_backend(): error: undefined reference to 'icu_66::Locale::Locale()' 15:37:21 ../../../toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/lib/libboost_locale.a(icu_backend.o):icu_backend.cpp:function boost::locale::impl_icu::icu_localization_backend::clone() const: error: undefined reference to 'icu_66::Locale::Locale()' 15:37:21 ../../../toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/lib/libboost_locale.a(icu_backend.o):icu_backend.cpp:function boost::locale::impl_icu::icu_localization_backend::install(std::locale const&, unsigned int, unsigned int): error: undefined reference to 'icu_66::Locale::createCanonical(char const*)' ...{noformat} Boost locale has an implementation that uses the ICU library and a non-ICU implementation that uses only the standard C++ libraries: "Boost.Locale creates the natural glue between the C++ locales framework, iostreams, and the powerful ICU library. Boost.Locale provides non-ICU based localization support as well. It is based on the operating system native API or on the standard C++ library support. Sacrificing some less important features, Boost.Locale becomes less powerful but lighter and easier to deploy." The native-toolchain inside Docker used for the standard toolchain uses the non-ICU version. The ARM job (not in Docker) is detecting ICU and building the ICU version. Option 1: Disable building the ICU implementation even if ICU is present. (This can be done by passing boost.locale.icu=off to boost's b2 script.) Option 2: Always use the ICU implementation and take an explicit dependency on ICU. Option 1 seems easier if we don't need the extra ICU functionality. -- This message was sent by Atlassian Jira (v8.20.10#820010)