Closed Bug 1864745 Opened 1 year ago Closed 1 year ago

SeaMonkey link failure with recent system icu

Categories

(SeaMonkey :: Build Config, defect)

SeaMonkey 2.53 Branch
defect

Tracking

(Not tracked)

RESOLVED FIXED
seamonkey2.53

People

(Reporter: psychonaut, Unassigned)

References

Details

Attachments

(2 files)

783.30 KB, application/x-bzip
Details
29.48 KB, application/x-zip-compressed
Details

I'm unable to build SeaMonkey 2.53.18b1 on openSUSE Tumbleweed due to linker errors:

[ 1552s] toolkit/library/libxul.so
[ 1552s] rm -f libxul.so
[ 1552s] /var/lib/build/ccache/bin/g++ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wc++2a-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=pessimizing-move -Wno-error=self-move -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wno-error=deprecated-copy -Wno-error=unused-but-set-variable -Wformat -Wformat-overflow=2 -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -fno-strict-aliasing -fimplicit-constexpr -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O2 -fomit-frame-pointer -funwind-tables  -fPIC -shared -Wl,-z,defs -Wl,--gc-sections -Wl,-h,libxul.so -o libxul.so /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/obj-x86_64-pc-linux-gnu/toolkit/library/libxul_so.list   -lpthread -fstack-protector-strong -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,nocopyreloc -Wl,-Bsymbolic-functions -Wl,--build-id=sha1 /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/toolkit/library/StaticXULComponents.ld -Wl,-rpath-link,/home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/obj-x86_64-pc-linux-gnu/dist/bin -Wl,-rpath-link,/usr/lib   ../../js/src/build/libjs_static.a x86_64-unknown-linux-gnu/release/libgkrust.a ../../comm/ldap/c-sdk/libraries/libldap/libldap60.so ../../comm/ldap/c-sdk/libraries/libldif/libldif60.so ../../comm/ldap/c-sdk/libraries/libprldap/libprldap60.so ../../security/sandbox/linux/libmozsandbox.so ../../config/external/lgpllibs/liblgpllibs.so ../../config/external/sqlite/libmozsqlite3.so ../../widget/gtk/mozgtk/libmozgtk.so -Wl,--version-script,symverscript  -L/usr/lib64 -lplds4 -lplc4 -lnspr4 -lpthread -ldl -licui18n -licuuc -licudata -lz -lm -lrt -lX11 -lX11-xcb -lxcb -lXcomposite -lXcursor -lXdamage -lXext -lXfixes -lXi -lXrender -lc -Wl,-rpath-link,/usr/lib64 -lssl3 -lsmime3 -lnss3 -lnssutil3 -lfreetype -lfontconfig -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lwebp -lwebpdemux -lasound -ldbus-glib-1 -ldbus-1 -lxcb-shm -lpangoft2-1.0 -lXt -lgthread-2.0 -lproxy
[ 1561s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: warning: /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/toolkit/library/StaticXULComponents.ld contains output sections; did you forget -T?
[ 1574s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/obj-x86_64-pc-linux-gnu/toolkit/library/../../intl/locale/gtk/OSPreferences_gtk.o: in function `mozilla::intl::OSPreferences::ReadSystemLocales(nsTArray<nsTString<char> >&)':
[ 1574s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/intl/locale/gtk/OSPreferences_gtk.cpp:24:(.text._ZN7mozilla4intl13OSPreferences17ReadSystemLocalesER8nsTArrayI9nsTStringIcEE+0x1c): undefined reference to `uloc_getDefault_73'
[ 1581s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src10.o): in function `js::DateTimeInfo::computeUTCOffsetMilliseconds(long)':
[ 1581s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/DateTime.cpp:387:(.text._ZN2js12DateTimeInfo28computeUTCOffsetMillisecondsEl+0x57): undefined reference to `icu_73::BasicTimeZone::getOffsetFromLocal(double, int, int, int&, int&, UErrorCode&) const'
[ 1581s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src10.o): in function `js::DateTimeInfo::timeZone()':
[ 1581s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/DateTime.cpp:483:(.text._ZN2js12DateTimeInfo28computeUTCOffsetMillisecondsEl+0x8f): undefined reference to `icu_73::TimeZone::createDefault()'
[ 1581s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/DateTime.cpp:483:(.text._ZN2js12DateTimeInfo28computeDSTOffsetMillisecondsEl+0x87): undefined reference to `icu_73::TimeZone::createDefault()'
[ 1581s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/DateTime.cpp:483:(.text._ZN2js12DateTimeInfo30computeLocalOffsetMillisecondsEl+0x87): undefined reference to `icu_73::TimeZone::createDefault()'
[ 1581s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src10.o): in function `js::DateTimeInfo::internalTimeZoneDisplayName(char16_t*, unsigned long, long, char const*)':
[ 1581s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/DateTime.cpp:445:(.text._ZN2js12DateTimeInfo27internalTimeZoneDisplayNameEPDsmlPKc+0x255): undefined reference to `icu_73::TimeZone::getDisplayName(signed char, icu_73::TimeZone::EDisplayType, icu_73::Locale const&, icu_73::UnicodeString&) const'
[ 1581s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src10.o): in function `js::DateTimeInfo::timeZone()':
[ 1581s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/DateTime.cpp:483:(.text._ZN2js12DateTimeInfo27internalTimeZoneDisplayNameEPDsmlPKc+0x2f7): undefined reference to `icu_73::TimeZone::createDefault()'
[ 1582s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src16.o): in function `JSRuntime::getDefaultLocale()':
[ 1582s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/Runtime.cpp:564:(.text._ZN9JSRuntime16getDefaultLocaleEv.part.0+0xa): undefined reference to `uloc_getDefault_73'
[ 1582s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/vm/Runtime.cpp:564:(.text._ZN9JSRuntime16getDefaultLocaleEv+0x24): undefined reference to `uloc_getDefault_73'
[ 1582s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src3.o): in function `js::intl_numberingSystem(JSContext*, unsigned int, JS::Value*)':
[ 1582s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/builtin/intl/NumberFormat.cpp:219:(.text._ZN2js20intl_numberingSystemEP9JSContextjPN2JS5ValueE+0x89): undefined reference to `unumsys_open_73'
[ 1582s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/builtin/intl/NumberFormat.cpp:227:(.text._ZN2js20intl_numberingSystemEP9JSContextjPN2JS5ValueE+0x9c): undefined reference to `unumsys_getName_73'
[ 1582s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: ../../js/src/build/libjs_static.a(Unified_cpp_js_src3.o): in function `js::ScopedICUObject<UNumberingSystem, &unumsys_close_73>::~ScopedICUObject()':
[ 1582s] /home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/js/src/builtin/intl/ScopedICUObject.h:30:(.text._ZN2js20intl_numberingSystemEP9JSContextjPN2JS5ValueE+0xc5): undefined reference to `unumsys_close_73'
[ 1587s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: libxul.so: hidden symbol `_ZN6icu_738TimeZone13createDefaultEv' isn't defined
[ 1587s] /usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: final link failed: bad value
[ 1587s] collect2: error: ld returned 1 exit status
[ 1587s] make[4]: *** [/home/abuild/rpmbuild/BUILD/seamonkey-2.53.18b1/mozilla/config/rules.mk:635: libxul.so] Error 1

I worked around the problem by removing ac_add_options --with-system-icu from my .mozconfig. Is this just some coincidental incompatibility between SeaMonkey's and openSUSE's libicu (the latter is on version 73.2) or is this a bona fide bug in SeaMonkey?

Gentoo seems to have problems too here. Not a bug but an incompatibility with later icu versions. Using system libraries is always hit and miss. Internal 2.53 icu is now at 64.2. When I find the time I try to update it but because of changes inside icu this usually needs other backports and so takes time.

Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: 2.53.18b1 fails to link: "final link failed: bad value", "hidden symbol `…' isn't defined", "undefined reference to `…'" → SeaMonkey link failure with recent system icu

Hi, I'm on gentoo and haven't had any issues with compiling+linking against system icu-73.2

Have you used lto? gcc-13 is pretty broken when dealing with lto

No, we disabled LTO a long time ago due to build errors.

I have to take that back, I wasn't having problem with compiling seamonkey-2.53.17.1 against systems icu-73.2

I haven't had a chance yet to port the gentoo patchset to fully apply to the changed code base, but you if you can add your full build log from Tumbleweed build, I may be able to see something of relevance in there.

Attached file build.log.bz2

OK, see attached for the build log.

reproduced with gcc-12, --enable-system-icu (v73.2) and seamonkey-2.53.18b1:

16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src10.o): in function js::DateTimeInfo::computeUTCOffsetMilliseconds(long)': 16:56.01 Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo28computeUTCOffsetMillisecondsEl+0x57): undefined reference toicu::BasicTimeZone::getOffsetFromLocal(double, int, int, int&, int&, UErrorCode&) const'
16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo28computeUTCOffsetMillisecondsEl+0x8f): undefined reference to icu::TimeZone::createDefault()' 16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src10.o): in functionjs::DateTimeInfo::computeDSTOffsetMilliseconds(long)':
16:56.01 Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo28computeDSTOffsetMillisecondsEl+0x87): undefined reference to icu::TimeZone::createDefault()' 16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src10.o): in functionjs::DateTimeInfo::computeLocalOffsetMilliseconds(long)':
16:56.01 Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo30computeLocalOffsetMillisecondsEl+0x87): undefined reference to icu::TimeZone::createDefault()' 16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src10.o): in functionjs::DateTimeInfo::timeZone()':
16:56.01 Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo8timeZoneEv+0x15): undefined reference to icu::TimeZone::createDefault()' 16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src10.o): in functionjs::DateTimeInfo::internalTimeZoneDisplayName(char16_t*, unsigned long, long, char const*)':
16:56.01 Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo27internalTimeZoneDisplayNameEPDsmlPKc+0x255): undefined reference to icu::TimeZone::getDisplayName(signed char, icu::TimeZone::EDisplayType, icu::Locale const&, icu::UnicodeString&) const' 16:56.01 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: Unified_cpp_js_src10.cpp:(.text._ZN2js12DateTimeInfo27internalTimeZoneDisplayNameEPDsmlPKc+0x2f7): undefined reference toicu::TimeZone::createDefault()'
16:56.02 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src16.o): in function JSRuntime::getDefaultLocale() [clone .part.0]': 16:56.02 Unified_cpp_js_src16.cpp:(.text._ZN9JSRuntime16getDefaultLocaleEv.part.0+0xa): undefined reference touloc_getDefault'
16:56.02 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src16.o): in function JSRuntime::getDefaultLocale()': 16:56.02 Unified_cpp_js_src16.cpp:(.text._ZN9JSRuntime16getDefaultLocaleEv+0x24): undefined reference touloc_getDefault'
16:56.04 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../build/libjs_static.a(Unified_cpp_js_src3.o): in function js::intl_numberingSystem(JSContext*, unsigned int, JS::Value*)': 16:56.04 Unified_cpp_js_src3.cpp:(.text._ZN2js20intl_numberingSystemEP9JSContextjPN2JS5ValueE+0x89): undefined reference tounumsys_open'
16:56.04 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: Unified_cpp_js_src3.cpp:(.text._ZN2js20intl_numberingSystemEP9JSContextjPN2JS5ValueE+0x9c): undefined reference to unumsys_getName' 16:56.04 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: Unified_cpp_js_src3.cpp:(.text._ZN2js20intl_numberingSystemEP9JSContextjPN2JS5ValueE+0xc5): undefined reference tounumsys_close'
16:56.18 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: ../../../dist/bin/jsapi-tests: hidden symbol `unumsys_getName' isn't defined
16:56.18 /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: final link failed: bad value
16:56.19 collect2: error: ld returned 1 exit status
16:56.19 gmake[4]: *** [/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/config/rules.mk:493: ../../../dist/bin/jsapi-tests] Error 1
16:56.19 gmake[4]: Leaving directory '/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/seamonk/js/src/jsapi-tests'
16:56.19 gmake[3]: *** [/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/config/recurse.mk:74: js/src/jsapi-tests/target] Error 2
16:56.19 gmake[3]: Leaving directory '/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/seamonk'
16:56.19 gmake[2]: *** [/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/config/recurse.mk:34: compile] Error 2
16:56.19 gmake[2]: Leaving directory '/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/seamonk'
16:56.19 gmake[1]: *** [/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/config/rules.mk:361: default] Error 2
16:56.19 gmake[1]: Leaving directory '/var/tmp/portage/www-client/seamonkey-2.53.18_beta1/work/seamonkey-2.53.18b1/seamonk'
16:56.19 gmake: *** [client.mk:124: build] Error 2
16:56.19 0 compiler warnings present.

have you tried diffing the tarballs for the /intl/ stuff?

(In reply to tt_1 from comment #7)

have you tried diffing the tarballs for the /intl/ stuff?

No. Given Frank-Rainer's Comment 2, I was planning on waiting for him to update the internal libicu and will just omit --with-system-icu for now.

there are more issues with icu-74_1: https://bugzilla.mozilla.org/show_bug.cgi?id=1862601

from seamonkey-2.53.17.1:

4:16.77 In file included from Unified_cpp_intl_lwbrk0.cpp:2:
4:16.77 /var/tmp/portage/www-client/seamonkey-2.53.17.1/work/seamonkey-2.53.17.1/intl/lwbrk/LineBreaker.cpp: In function ‘int8_t GetClass(uint32_t)’:
4:16.78 /var/tmp/portage/www-client/seamonkey-2.53.17.1/work/seamonkey-2.53.17.1/intl/lwbrk/LineBreaker.cpp:565:28: error: static assertion failed: Gecko vs ICU LineBreak class mismatch
4:16.78 565 | static_assert(U_LB_COUNT == mozilla::ArrayLength(sUnicodeLineBreakToClass),
4:16.78 | ^

and exactly same error with seamonkey-2.53.18b1

See Also: → 1862601
Attached file icu.zip

Might be possible that this error happens because of missing build stuff backports. Please try the attached three patches for 2.53.18b1. If possible with both variants with and without system icu.

If it works we will put it into the final 2.53.18.

This will not fix the error mentioned in Bug 1862601

yes, this fixes 2.53.18b1 link errors with --enable-system-icu, and against icu-73_2

tested the fix successfully for 2.53.18b1 and --without-system-icu

you might want to run a rc1 for your windows builds?

It is fixed in the final. Windows builds are fine. Source is up in gitlab already. Builds should appear in the next days.

Blocks: 1861842
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → seamonkey2.53
See Also: → 1933117
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: