Skip to content

[Bug]: ICU4C can't be linked, or way of linking not obvious #7130

@jwbee

Description

@jwbee

What happened?

I can't figure out how to use the module. The target common:platform globs together all C++ sources, so one cannot use :platform along with any other target, yet all other targets depend on :platform, creating an apparently unavoidable ODR violation, such as this one:

=10007==ERROR: AddressSanitizer: odr-violation (0xec62df9fffe0):
  [1] size=384 'icu_76::LatinCase::TO_LOWER_NORMAL' /proc/self/cwd/external/icu~/icu4c/source/common/ucase.cpp:539 in /root/.cache/bazel/_bazel_root/76ff821df17995dcc346608cc47ffe11/execroot/_main/bazel-out/aarch64-opt/bin/src/test_framework/unit_tests/../../../_solib_aarch64/libexternal_Sicu~_Sicu4c_Ssource_Scommon_Slibucase.so
  [2] size=384 'icu_76::LatinCase::TO_LOWER_NORMAL' /proc/self/cwd/external/icu~/icu4c/source/common/ucase.cpp:539 in /root/.cache/bazel/_bazel_root/76ff821df17995dcc346608cc47ffe11/execroot/_main/bazel-out/aarch64-opt/bin/src/test_framework/unit_tests/../../../_solib_aarch64/libexternal_Sicu~_Sicu4c_Ssource_Scommon_Slibplatform.so

After searching github thoroughly, I can find no users of this module, and active projects that use bazel and ICU, such as zetasql, are still building it with cmake. How is the module to be used, if at all?

Version

Development (host) and target OS/architectures:
Linux jorts 6.8.0-1035-aws #37~22.04.1-Ubuntu SMP Wed Aug 13 13:30:28 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux

Output of bazel --version:
bazel 7.7.1

Language(s) and/or frameworks involved:
C++ w/ LLVM 19

How to reproduce

Any other information?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions