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)

Reply via email to