-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
bump(main/libicu): 78.1 #27221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
bump(main/libicu): 78.1 #27221
Conversation
|
Arch dropped This patch was previously necessary for Thunderbird 115's calender tab to function correctly. Still no lead on the symbol issues, can't get it to add Linker errors:
make[1]: Making `all' in `makeconv'
make[2]: Entering directory '/home/builder/.termux-build/libicu/build/tools/makeconv'
(deps) /home/builder/.termux-build/libicu/src/source/tools/makeconv/ucnvstat.c
(deps) /home/builder/.termux-build/libicu/src/source/tools/makeconv/makeconv.cpp
(deps) /home/builder/.termux-build/libicu/src/source/tools/makeconv/genmbcs.cpp
(deps) /home/builder/.termux-build/libicu/src/source/tools/makeconv/gencnvex.c
aarch64-linux-android-clang ... /home/builder/.termux-build/libicu/src/source/tools/makeconv/gencnvex.c
cd ../.. \
&& CONFIG_FILES=tools/makeconv/makeconv.1 CONFIG_HEADERS= /bin/bash ./config.status
aarch64-linux-android-clang++ ... /home/builder/.termux-build/libicu/src/source/tools/makeconv/genmbcs.cpp
aarch64-linux-android-clang++ ... /home/builder/.termux-build/libicu/src/source/tools/makeconv/makeconv.cpp
aarch64-linux-android-clang ... /home/builder/.termux-build/libicu/src/source/tools/makeconv/ucnvstat.c
config.status: creating tools/makeconv/makeconv.1
aarch64-linux-android-clang++ -fstack-protector-strong -Oz -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -std=c++17 -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -o ../../bin/makeconv gencnvex.o genmbcs.o makeconv.o ucnvstat.o -L../../lib -licutu -L../../lib -licui18n -L../../lib -licuuc -L../../stubdata -licudata -lpthread -lm
ld.lld: error: undefined symbol: uprv_malloc_78
>>> referenced by gencnvex.c
>>> gencnvex.o:(CnvExtOpen)
>>> referenced by genmbcs.cpp
>>> genmbcs.o:(MBCSOpen)
>>> referenced by genmbcs.cpp
>>> genmbcs.o:(MBCSAddTable(NewConverter*, UCMTable*, UConverterStaticData*))
>>> referenced 1 more times
ld.lld: error: undefined symbol: uprv_free_78
>>> referenced by gencnvex.c
>>> gencnvex.o:(CnvExtClose)
>>> referenced by genmbcs.cpp
>>> genmbcs.o:(MBCSClose(NewConverter*))
>>> referenced by genmbcs.cpp
>>> genmbcs.o:(MBCSClose(NewConverter*))
>>> referenced 2 more times
ld.lld: error: undefined symbol: u_strFromUTF32_78
>>> referenced by gencnvex.c
>>> gencnvex.o:(generateToUTable)
>>> referenced by gencnvex.c
>>> gencnvex.o:(generateToUTable)
ld.lld: error: undefined symbol: u_getVersion_78
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: u_getDataDirectory_78
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: icu_78::StringPiece::StringPiece(char const*)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
>>> referenced 3 more times
ld.lld: error: undefined symbol: icu_78::CharString::ensureEndsWithFileSeparator(UErrorCode&)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: icu_78::CharString::truncate(int)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: icu_78::CharString::lastIndexOf(char) const
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: uprv_stricmp_78
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: uprv_isInvariantString_78
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: u_errorName_78
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
>>> referenced by makeconv.cpp
>>> makeconv.o:(main)
ld.lld: error: undefined symbol: icu_78::CharString::appendPathPart(icu_78::StringPiece, UErrorCode&)
>>> referenced by makeconv.cpp
>>> makeconv.o:(OUTLINED_FUNCTION_14)
ld.lld: error: undefined symbol: icu_78::CharString::append(char const*, int, UErrorCode&)
>>> referenced by makeconv.cpp
>>> makeconv.o:(icu_78::CharString::append(icu_78::StringPiece, UErrorCode&))
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Makefile:81: ../../bin/makeconv] Error 1
make[2]: Leaving directory '/home/builder/.termux-build/libicu/build/tools/makeconv'
make[1]: *** [Makefile:47: all-recursive] Error 2
make[1]: Leaving directory '/home/builder/.termux-build/libicu/build/tools'
make: *** [Makefile:153: all-recursive] Error 2 |
packages/libicu/build.sh
Outdated
| } | ||
|
|
||
| termux_step_post_massage() { | ||
| local _GUARD_FILE="lib/libicuuc.so.77" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be incremented, and at the same time, all reverse dependencies rebuilt.
| Fixes the VTIMEZONE generator of libicu producing an invalid VTIMEZONE, | ||
| which if unpatched, would cause the error | ||
| JavaScript error: resource:///modules/calendar/Ical.sys.mjs, line 1942: ParserError: invalid line (no token ";" or ":") "America/Chicago[2025a]" | ||
| in Thunderbird 115 and newer, which would cause multiple UI elements to be missing or broken. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can remove this if you want, but I am personally very certain that removing it would break Termux's thunderbird and make Termux's thunderbird borderline unusably bugged.
The reason why Arch Linux might have removed it is because:
- They removed
--with-system-icufrom theirthunderbirdpackage https://gitlab.archlinux.org/archlinux/packaging/packages/thunderbird/-/commit/ec006d89f73d603595724c974cfce4518d1df9fa- (which might be a bit awkward for us to follow as an example because our
libicupackage has other patches including an Android-specific patch)
- (which might be a bit awkward for us to follow as an example because our
- Thunderbird 144 (and also Firefox 145) don't currently compile with
libicu78 because of an unrelated compilation error, so they might have taken that to mean there seemed to be no need for them to keep the patch applied at the moment
personally I think Arch Linux's decision to immediately remove the patch when they could no longer compile Thunderbird with unvendored libicu is questionable, but if you want to follow what they do closely, you can go for it.
I'd prefer to try to compile Termux thunderbird with libicu 78 by patching Thunderbird + Firefox, if possible. I kind of think I understand the error a little bit so I might be able to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I managed to make a patch which makes Firefox and Thunderbird compile with libicu 78 without the error.
My patch is original code, but is based on my research of looking at this previous change in Firefox/Thunderbird
https://hg-edge.mozilla.org/try/rev/d5f3b0c4f08a426ce00a153c04e177eecb6820e2
and combining it with this commit in libicu 78
--- a/intl/lwbrk/LineBreaker.cpp
+++ b/intl/lwbrk/LineBreaker.cpp
@@ -454,6 +454,7 @@ static int8_t GetClass(uint32_t u, LineBreakRule aLevel,
/* AKSARA_START = 45, [AS] */ CLASS_CHARACTER,
/* VIRAMA_FINAL = 46, [VF] */ CLASS_CHARACTER,
/* VIRAMA = 47, [VI] */ CLASS_CHARACTER,
+ /* U_LB_UNAMBIGUOUS_HYPHEN = 48, [HH] */ CLASS_CHARACTER,
};
static_assert(U_LB_COUNT == std::size(sUnicodeLineBreakToClass),There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably best to just keep the existing patch then if it still solves the issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I managed to make a patch which makes Firefox and Thunderbird compile with
libicu78 without the error.My patch is original code, but is based on my research of looking at this previous change in Firefox/Thunderbird
https://hg-edge.mozilla.org/try/rev/d5f3b0c4f08a426ce00a153c04e177eecb6820e2
and combining it with this commit in
libicu78--- a/intl/lwbrk/LineBreaker.cpp +++ b/intl/lwbrk/LineBreaker.cpp @@ -454,6 +454,7 @@ static int8_t GetClass(uint32_t u, LineBreakRule aLevel, /* AKSARA_START = 45, [AS] */ CLASS_CHARACTER, /* VIRAMA_FINAL = 46, [VF] */ CLASS_CHARACTER, /* VIRAMA = 47, [VI] */ CLASS_CHARACTER, + /* U_LB_UNAMBIGUOUS_HYPHEN = 48, [HH] */ CLASS_CHARACTER, }; static_assert(U_LB_COUNT == std::size(sUnicodeLineBreakToClass),
Actually, if that's the entire patch, I can definitely add that to Firefox/Thunderbird and we'll just drop the libicu patch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, if that's the entire patch, I can definitely add that to Firefox/Thunderbird and we'll just drop the libicu patch.
like I explained, removing the libicu patch will probably cause thunderbird to become extremely messed up and glitchy, but if you really want to remove it you can and then I might request to add it back afterward if I can still reproduce the problem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably best to just keep the existing patch then if it still solves the issue.
there are two separate issues involving thunderbird, one of them is fixed by the LineBreaker.cpp patch and the other one is fixed by the libicu patch
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eh let's keep it for now and we can test if your patch above is a suitable replacement later.
I have determined that the symbol errors are prefix pollution |
Should have thought of that, must have been from the ffmpeg rebuild tests. |
|
There is a problem with |
Yeah I got nothing... |
|
Looks like |
|
The CI is getting hit pretty hard by the rebuilds. |
That is also related to NDK r28c. I tried to fix that for a long time (several months), but I haven't been able to. The error is extremely complicated. I believe the error is likely to be reproducible on FreeBSD once FreeBSD attempts to bump their |
|
CI was running out of space. |
This error in the current Rust in some packages
but I'm not sure if there is any case where doing that could have a side effect or not. I don't really know what it means |
|
Got everything that will build building now. Let's look at the damage.
This PR cannot go ahead until we have |
I just applied help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
|
55 | let old_len = (&(*old)).len();
| ++ + |
OpenBSD has it at 2.50.1, that might be helpful? Though I assume you've already looked at that. |
I did not know that, thanks. That makes it seem like the issue is completely specific to Android, but there could be an unknown difference between the build settings of each package. |
I might have started to figure out what is wrong with |
|
The build error in |
Currently fails with symbol errors.
Need to investigate.
Rebuild list:
Can be done in this PR:
cargo's suggestion worked to fix the issue)Probably need their own PRs:
revbump(x11/webkitgtk-6.0): libicu 78.1 rebuild #27241)