Opened 2 years ago
Closed 2 years ago
#18799 closed defect (fixed)
Fixes for packages affected by icu-74.1
| Reported by: | Bruce Dubbs | Owned by: | blfs-book |
|---|---|---|---|
| Priority: | normal | Milestone: | 12.1 |
| Component: | BOOK | Version: | git |
| Severity: | normal | Keywords: | |
| Cc: |
Description (last modified by )
Several packages will need updates for icu-74.1.
Current known packages are:
libreoffice(done at 00b933f310)qtwebengine(done at c51bc3f4d9)spidermonkeyfirefoxthunderbirdcontinue using shipped ICUseamonkey(r12.0-591-g7be485e948)- others TBD
Change History (23)
comment:1 by , 2 years ago
follow-up: 3 comment:2 by , 2 years ago
| Description: | modified (diff) |
|---|
Firefox:
/home/xry111/sources/12.1/firefox-115.4.0/intl/lwbrk/LineBreaker.cpp:439:17: error: static assertion failed due to requirement 'U_LB_COUNT == mozilla::ArrayLength(sUnicodeLineBreakToClass)': Gecko vs ICU LineBreak class mismatch
comment:3 by , 2 years ago
| Description: | modified (diff) |
|---|
Replying to Xi Ruoyao:
Firefox:
/home/xry111/sources/12.1/firefox-115.4.0/intl/lwbrk/LineBreaker.cpp:439:17: error: static assertion failed due to requirement 'U_LB_COUNT == mozilla::ArrayLength(sUnicodeLineBreakToClass)': Gecko vs ICU LineBreak class mismatch
Done at r12.0-533-g2281985533.
follow-up: 7 comment:4 by , 2 years ago
| Description: | modified (diff) |
|---|
Thunderbird needs the same workaround as Firefox, done at r12.0-536-g4ae4523d55.
comment:5 by , 2 years ago
| Type: | enhancement → defect |
|---|
comment:6 by , 2 years ago
| Description: | modified (diff) |
|---|
follow-up: 8 comment:7 by , 2 years ago
| Description: | modified (diff) |
|---|
Replying to Xi Ruoyao:
Thunderbird needs the same workaround as Firefox, done at r12.0-536-g4ae4523d55.
Reverted because the BLFS book does not use system ICU. The issue preventing us from using the system ICU is still not fixed in ICU 74.
comment:8 by , 2 years ago
Replying to Xi Ruoyao:
Replying to Xi Ruoyao:
Thunderbird needs the same workaround as Firefox, done at r12.0-536-g4ae4523d55.
Reverted because the BLFS book does not use system ICU. The issue preventing us from using the system ICU is still not fixed in ICU 74.
Thunderbird and Firefox patch their internal copy of ICU:
The patch is intl/icu-patches/bug-1790071-ICU-22132-standardize-vtzone-output.diff in both the Firefox and Thunderbird source trees.
For my builds I patch ICU and have FF/TB use the system ICU.
The patch still applies to ICU-74.1.
comment:9 by , 2 years ago
It looks like this is the patch:
diff --git a/icu4c/source/i18n/vtzone.cpp b/icu4c/source/i18n/vtzone.cpp
index 3035106701..5e738e11fa 100644
--- a/icu4c/source/i18n/vtzone.cpp
+++ b/icu4c/source/i18n/vtzone.cpp
@@ -1735,14 +1735,14 @@ VTimeZone::write(VTZWriter& writer, UErrorCode& status) const {
}
}
} else {
- UnicodeString icutzprop;
- UVector customProps(nullptr, uhash_compareUnicodeString, status);
+ UVector customProps(uprv_deleteUObject, uhash_compareUnicodeString, status);
if (olsonzid.length() > 0 && icutzver.length() > 0) {
- icutzprop.append(olsonzid);
- icutzprop.append(u'[');
- icutzprop.append(icutzver);
- icutzprop.append(u']');
- customProps.addElement(&icutzprop, status);
+ LocalPointer<UnicodeString> icutzprop(new UnicodeString(ICU_TZINFO_PROP), status);
+ icutzprop->append(olsonzid);
+ icutzprop->append(u'[');
+ icutzprop->append(icutzver);
+ icutzprop->append(u']');
+ customProps.adoptElement(icutzprop.orphan(), status);
}
writeZone(writer, *tz, &customProps, status);
}
comment:10 by , 2 years ago
I don't like the idea using Mozilla's patch which not approved by the ICU developers. We all know that Mozilla has a bad tendency to randomly hack upstream packages and cover up real issues... (LLVM 16 nightmare.)
follow-up: 12 comment:11 by , 2 years ago
Except for spidermonkey and qtwebengine the packages in the desription are end packages. Why not just have them use their internal copy of ICU and there's no need to fix?
follow-up: 13 comment:12 by , 2 years ago
Replying to Joe Locash:
Except for spidermonkey and qtwebengine the packages in the desription are end packages. Why not just have them use their internal copy of ICU and there's no need to fix?
Because we know how to fix them, and they are end packages so in the worst case (the fix is wrong) we'll not blow up other packages. So why not saving some SBUs?
comment:13 by , 2 years ago
Replying to Xi Ruoyao:
Replying to Joe Locash:
Except for spidermonkey and qtwebengine the packages in the desription are end packages. Why not just have them use their internal copy of ICU and there's no need to fix?
Because we know how to fix them
If we cannot figure out a fix we'll use the internal copy of ICU as the last resort.
comment:14 by , 2 years ago
qtwebengine:
sed 's/^#define BA_LB_COUNT.*$/#define BA_LB_COUNT 40/' \
-i src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc
Not sure if this is the "correct" fix.
follow-up: 16 comment:15 by , 2 years ago
libreoffice: https://gerrit.libreoffice.org/c/core/+/158749, but it seems failing the CI.
follow-up: 18 comment:16 by , 2 years ago
Replying to Xi Ruoyao:
libreoffice: https://gerrit.libreoffice.org/c/core/+/158749, but it seems failing the CI.
Looks like they still have:
CustomTarget/i18npool/breakiterator/line.brk createRuleBasedBreakIterator: ICU Error "U_BRK_UNRECOGNIZED_OPTION" at line 17, column 14 make[1]: *** [/home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_gcc_release_64/i18npool/CustomTarget_breakiterator.mk:92: /home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_gcc_release_64/workdir/CustomTarget/i18npool/breakiterator/line.brk] Error 12
comment:17 by , 2 years ago
| Description: | modified (diff) |
|---|
comment:18 by , 2 years ago
Replying to pierre:
Replying to Xi Ruoyao:
libreoffice: https://gerrit.libreoffice.org/c/core/+/158749, but it seems failing the CI.
Looks like they still have:
CustomTarget/i18npool/breakiterator/line.brk createRuleBasedBreakIterator: ICU Error "U_BRK_UNRECOGNIZED_OPTION" at line 17, column 14
This is because there is an obsolete, now removed, option (!!LBCMNoChain) in the file 18npool/source/breakiterator/data/line.txt. The build can be made to pass with:
sed -e /LBCM/d -i i18npool/source/breakiterator/data/line.txt
Note that The commit referenced above is not necessary for the build. It just adds an option for CJK languages, that I am unable to test!
comment:19 by , 2 years ago
Blessings upon pierre for finding the spot that needed to be changed. I confirm that removing !!LBCMNoChain solves libreoffice.
comment:20 by , 2 years ago
SeaMonkey is slightly different from Firefox:
(for i in {43..47}; do
sed '/ZWJ/s/$/,CLASS_CHARACTER/' -i intl/lwbrk/LineBreaker.cpp || exit $?
done)
comment:21 by , 2 years ago
| Description: | modified (diff) |
|---|
comment:22 by , 2 years ago
| Description: | modified (diff) |
|---|
comment:23 by , 2 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
All issues appear to be fixed. Closing.

SpiderMonkey test suite statistics updated at r12.0-529-ga192a33046. No runtime issues observed with gnome and polkit.