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)