Bug 14981

Summary: package/qt5/qt5webengine: build fails with undefined reference to `icu_70::Unicode ...
Product: buildroot Reporter: Dominik Michael Rauh <dmrauh>
Component: OtherAssignee: unassigned
Status: RESOLVED MOVED    
Severity: normal CC: buildroot, yann.morin.1998
Priority: P5    
Version: 2022.02.4   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Host: Target:
Build:

Description Dominik Michael Rauh 2022-08-31 15:00:24 UTC

    
Comment 1 Dominik Michael Rauh 2022-08-31 15:16:20 UTC
When building qt5webengine on Buildroot 2022.02.04, the builds fails with the
linker errors at the end of the bug report.

This is probably because on my system "icu" version 71 is installed and
"-L/usr/lib" comes before "-L/home/rauhdomi/Code/output/host/lib" that contains
Buildroot's "host-icu" with version 70.

I have confirmed my hypothesis by running the failing command manually with
"-L/home/rauhdomi/Code/output/host/lib" coming first, the error was gone.

This bug is related to Bug 14931
(https://bugs.busybox.net/show_bug.cgi?id=14931), where those
"GN_HOST_EXTRA_LDFLAGS" have been introduced.

Looking forward too your comments!

Dominik

[82/15365] LINK v8_snapshot/gen-regexp-special-case
FAILED: v8_snapshot/gen-regexp-special-case
/home/rauhdomi/Code/output/build/qt5webengine-5.15.8/host-bin/python "../../3rdparty/chromium/build/toolchain/gcc_link_wrapper.py" --output="v8_snapshot/gen-regexp-special-case" -- /usr/bin/g++ -pie -Wl,--fatal-warnings -Wl,--build-id=sha1 -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,defs -Wl,--as-needed -m64 -pie -Wl,--disable-new-dtags -Wl,-O2 -Wl,--gc-sections -L/usr/lib -L/home/rauhdomi/Code/output/host/lib -Wl,-rpath,/home/rauhdomi/Code/output/host/lib -o "v8_snapshot/gen-regexp-special-case" -Wl,--start-group @"v8_snapshot/gen-regexp-special-case.rsp"  -Wl,--end-group  -ldl -lpthread -lrt -licui18n -licuuc -licudata
/usr/bin/ld: v8_snapshot/obj/v8/gen-regexp-special-case/gen-regexp-special-case.o: in function `v8::internal::PrintSet(std::basic_ofstream<char, std::char_traits<char> >&, char const*, icu_70::UnicodeSet const&)':
gen-regexp-special-case.cc:(.text._ZN2v88internal8PrintSetERSt14basic_ofstreamIcSt11char_traitsIcEEPKcRKN6icu_7010UnicodeSetE+0x8b): undefined reference to `icu_70::UnicodeSet::getRangeStart(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal8PrintSetERSt14basic_ofstreamIcSt11char_traitsIcEEPKcRKN6icu_7010UnicodeSetE+0xb6): undefined reference to `icu_70::UnicodeSet::getRangeEnd(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal8PrintSetERSt14basic_ofstreamIcSt11char_traitsIcEEPKcRKN6icu_7010UnicodeSetE+0xdf): undefined reference to `icu_70::UnicodeSet::getRangeCount() const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal8PrintSetERSt14basic_ofstreamIcSt11char_traitsIcEEPKcRKN6icu_7010UnicodeSetE+0xed): undefined reference to `icu_70::UnicodeSet::getRangeStart(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal8PrintSetERSt14basic_ofstreamIcSt11char_traitsIcEEPKcRKN6icu_7010UnicodeSetE+0xfa): undefined reference to `icu_70::UnicodeSet::getRangeEnd(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal8PrintSetERSt14basic_ofstreamIcSt11char_traitsIcEEPKcRKN6icu_7010UnicodeSetE+0x121): undefined reference to `icu_70::UnicodeSet::getRangeStart(int) const'
/usr/bin/ld: v8_snapshot/obj/v8/gen-regexp-special-case/gen-regexp-special-case.o: in function `v8::internal::PrintSpecial(std::basic_ofstream<char, std::char_traits<char> >&)':
gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x30): undefined reference to `icu_70::UnicodeSet::UnicodeSet()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x46): undefined reference to `icu_70::UnicodeSet::UnicodeSet()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x5c): undefined reference to `icu_70::UnicodeSet::UnicodeSet()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x75): undefined reference to `icu_70::UnicodeString::UnicodeString(char const*)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x87): undefined reference to `icu_70::UnicodeSet::UnicodeSet(icu_70::UnicodeString const&, UErrorCode&)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x8f): undefined reference to `icu_70::UnicodeString::~UnicodeString()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0xd5): undefined reference to `icu_70::UnicodeSet::set(int, int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0xe2): undefined reference to `icu_70::UnicodeSet::closeOver(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0xed): undefined reference to `icu_70::UnicodeString::UnicodeString(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0xf5): undefined reference to `icu_70::UnicodeString::toUpper()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x123): undefined reference to `icu_70::UnicodeString::~UnicodeString()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x140): undefined reference to `icu_70::UnicodeSet::getRangeCount() const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x152): undefined reference to `icu_70::UnicodeSet::getRangeStart(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x17b): undefined reference to `icu_70::UnicodeString::~UnicodeString()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x1ba): undefined reference to `icu_70::UnicodeSet::getRangeEnd(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x1dc): undefined reference to `icu_70::UnicodeString::UnicodeString(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x1e4): undefined reference to `icu_70::UnicodeString::toUpper()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x207): undefined reference to `icu_70::UnicodeString::char32At(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x237): undefined reference to `icu_70::UnicodeSet::getRangeCount() const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x26b): undefined reference to `icu_70::UnicodeSet::add(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x2a7): undefined reference to `icu_70::UnicodeSet::getRangeCount() const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x2c3): undefined reference to `icu_70::UnicodeSet::getRangeStart(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x2db): undefined reference to `icu_70::UnicodeSet::getRangeEnd(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x2ff): undefined reference to `icu_70::UnicodeString::UnicodeString(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x307): undefined reference to `icu_70::UnicodeString::toUpper()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x33c): undefined reference to `icu_70::UnicodeString::~UnicodeString()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x34c): undefined reference to `icu_70::UnicodeSet::set(int, int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x359): undefined reference to `icu_70::UnicodeSet::closeOver(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x368): undefined reference to `icu_70::UnicodeSet::removeAll(icu_70::UnicodeSet const&)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x370): undefined reference to `icu_70::UnicodeSet::getRangeCount() const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x384): undefined reference to `icu_70::UnicodeSet::getRangeStart(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x391): undefined reference to `icu_70::UnicodeSet::getRangeEnd(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x3a7): undefined reference to `icu_70::UnicodeString::UnicodeString(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x3af): undefined reference to `icu_70::UnicodeString::toUpper()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x3d7): undefined reference to `icu_70::UnicodeString::~UnicodeString()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x3ee): undefined reference to `icu_70::UnicodeSet::getRangeEnd(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x422): undefined reference to `icu_70::UnicodeString::char32At(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x44c): undefined reference to `icu_70::UnicodeSet::add(int)'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x463): undefined reference to `icu_70::UnicodeString::char32At(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x48c): undefined reference to `icu_70::UnicodeString::char32At(int) const'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x50d): undefined reference to `icu_70::UnicodeSet::~UnicodeSet()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x515): undefined reference to `icu_70::UnicodeSet::~UnicodeSet()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x51d): undefined reference to `icu_70::UnicodeSet::~UnicodeSet()'
/usr/bin/ld: gen-regexp-special-case.cc:(.text._ZN2v88internal12PrintSpecialERSt14basic_ofstreamIcSt11char_traitsIcEE+0x525): undefined reference to `icu_70::UnicodeSet::~UnicodeSet()'
collect2: error: ld returned 1 exit status
Comment 2 Dominik Michael Rauh 2022-09-02 06:59:04 UTC
Hi all,

I found a solution to my problem, that may also be a viable fix to go upstream:

https://paste.debian.net/1252483/

It makes sure that "extra_ldflags" always come before "ldflags", so that
libraries are always looked for in Buildroot's "${HOST_DIR}/lib" first.

Please take notice that the patch has to be applied to package
"qt5webengine-chromium"!

Regards,
Dominik
Comment 3 Yann E. MORIN 2024-06-15 15:04:06 UTC
Thank you for your report.

The issue tracker for the Buildroot project has been moved to
the Gitlab.com issue tracker:
    https://gitlab.com/buildroot.org/buildroot/-/issues

We are taking this opportunity to close old issues in this old
tracker. If you believe your issue is still relevant, please
open one in the new issue tracker.

Thank you!