Opened 5 months ago

Closed 5 months ago

#20568 closed enhancement (fixed)

icu4c-76.1

Reported by: Bruce Dubbs Owned by: Douglas R. Reno
Priority: normal Milestone: 12.3
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

New major version.

Change History (33)

comment:1 by Douglas R. Reno, 5 months ago

This version fixes an issue with the tests that crops up when you use Python 3.13 with ICU 75:

make[1]: Entering directory '/sources/icu4c-75.1/icu/source/data'
PYTHONPATH=../python python3 -m icutools.databuilder.test
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/sources/icu4c-75.1/icu/source/python/icutools/databuilder/test/__main__.py", line 6, in <module>
    from . import filtration_test
  File "/sources/icu4c-75.1/icu/source/python/icutools/databuilder/test/filtration_test.py", line 421, in <module>
    suite = unittest.makeSuite(FiltrationTest)
            ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/unittest/__init__.py", line 80, in __getattr__
    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
AttributeError: module 'unittest' has no attribute 'makeSuite'
make[1]: *** [Makefile:139: check-local] Error 1
make[1]: Leaving directory '/sources/icu4c-75.1/icu/source/data'
make: *** [Makefile:153: check-recursive] Error 2

ICU 76.1 works well though on this new VM.

comment:2 by Xi Ruoyao, 5 months ago

It also fixes the test failure in libical (the sed in libical is still needed though).

comment:3 by Xi Ruoyao, 5 months ago

spidermonkey needs an adaption:

sed 's/icu-i18n/icu-uc &/' -i js/moz.configure

(It seems because icu_76::UnicodeSet::~UnicodeSet etc. are in libicuuc.so.76 but the counterparts like icu_75::UnicodeSet::~UnicodeSet were in libicui18n.so.75.)

comment:4 by Xi Ruoyao, 5 months ago

158 (!) failures in spidermonkey.

in reply to:  4 comment:5 by Xi Ruoyao, 5 months ago

Replying to Xi Ruoyao:

158 (!) failures in spidermonkey.

And 6 failures in spidermonkey jit tests (all in "timezone.js").

comment:6 by Xi Ruoyao, 5 months ago

webkitgtk needs to be adapted:

sed '/U_SHOW_CPLUSPLUS_API/a#define U_SHOW_CPLUSPLUS_HEADER_API 0' -i Source/WTF/wtf/Platform.h

in reply to:  3 comment:7 by Xi Ruoyao, 5 months ago

Replying to Xi Ruoyao:

spidermonkey needs an adaption:

sed 's/icu-i18n/icu-uc &/' -i js/moz.configure

(It seems because icu_76::UnicodeSet::~UnicodeSet etc. are in libicuuc.so.76 but the counterparts like icu_75::UnicodeSet::~UnicodeSet were in libicui18n.so.75.)

Likewise for evolution-data-server:

sed '/pkg_check_modules/s/icu-i18n/& icu-uc/' -i CMakeLists.txt

comment:8 by martyj19, 5 months ago

In icu-i18n.pc there is a change from Requires: icu-uc to Requires.private: icu-uc and I suppose there is some argument that should be reverted, rather than fixing it in every dependent place. I have done that at least temporarily to fix the one case I observed in node.js and plan to see what other distros decide to do.

in reply to:  8 ; comment:9 by Xi Ruoyao, 5 months ago

Replying to martyj19:

In icu-i18n.pc there is a change from Requires: icu-uc to Requires.private: icu-uc and I suppose there is some argument that should be reverted, rather than fixing it in every dependent place. I have done that at least temporarily to fix the one case I observed in node.js and plan to see what other distros decide to do.

The change is quite deliberate and logical: https://unicode-org.atlassian.net/browse/ICU-22610, thus I cannot see why it'll be reverted.

The logic is to allow downstream to avoid -licuuc etc. if not necessary. If they really need -licuuc they should announce it explicitly, i.e. using something like my sed.

Unnecessary -l options are always considered harmful esp. after xz incident. And they hurts LFS more than "major" distros because the "majors" patch Binutils to make --as-needed the default for ld while we don't.

Last edited 5 months ago by Xi Ruoyao (previous) (diff)

in reply to:  9 comment:10 by martyj19, 5 months ago

Replying to Xi Ruoyao:

Replying to martyj19:

In icu-i18n.pc there is a change from Requires: icu-uc to Requires.private: icu-uc and I suppose there is some argument that should be reverted, rather than fixing it in every dependent place. I have done that at least temporarily to fix the one case I observed in node.js and plan to see what other distros decide to do.

The change is quite deliberate and logical: https://unicode-org.atlassian.net/browse/ICU-22610, thus I cannot see why it'll be reverted.

The logic is to allow downstream to avoid -licuuc etc. if not necessary. If they really need -licuuc they should announce it explicitly, i.e. using something like my sed.

Unnecessary -l options are always considered harmful esp. after xz incident. And they hurts LFS more than "major" distros because the "majors" patch Binutils to make --as-needed the default for ld while we don't.

Thank you for the commentary on binutils. I hadn't known about that and I agree a revert is unlikely. I do note there is no mention of this change in the ICU release notes even though it creates unplanned work for other projects.

I find it an unfortunate aspect of open source that a project can create an unbounded amount of unplanned work for distro packagers and dependent project maintainers with no prior notice. A few projects are repeat offenders with respect to that.

I don't see an obvious reason why node.js didn't work already because it appears to mention icuuc and that will need to be looked at.

comment:11 by Xi Ruoyao, 5 months ago

For node.js

sed '/pkgicu/s/icu-i18n/& icu-uc/' -i configure.py

works for me.

in reply to:  3 comment:12 by Xi Ruoyao, 5 months ago

Replying to Xi Ruoyao:

spidermonkey needs an adaption:

sed 's/icu-i18n/icu-uc &/' -i js/moz.configure

(It seems because icu_76::UnicodeSet::~UnicodeSet etc. are in libicuuc.so.76 but the counterparts like icu_75::UnicodeSet::~UnicodeSet were in libicui18n.so.75.)

Firefox needs it too.

comment:13 by Joe Locash, 5 months ago

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  481 |                         ((startIndex >> 8) & 0xFF),
      |                         ~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/unicode/utrans.h:23,
                 from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:44:
/usr/include/unicode/uset.h:1655:10: error: 'u16string_view' in namespace 'std' does not name a type
 1655 |     std::u16string_view operator*() const {
      |          ^~~~~~~~~~~~~~
/usr/include/unicode/uset.h:1763:5: error: 'UnicodeString' does not name a type
 1763 |     UnicodeString operator*() const {
      |     ^~~~~~~~~~~~~
In file included from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:46:
/usr/include/unicode/ucol.h:1553:37: error: 'ConvertibleToU16StringView' was not declared in this scope
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:65: error: template argument 1 is invalid
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                 ^
/usr/include/unicode/ucol.h:1553:25: error: '<expression error>' in namespace 'std' does not name a type
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:67: error: expected '>' before '&&' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                   ^~
/usr/include/unicode/ucol.h:1553:100: error: expected unqualified-id before '>' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                                                    ^
/usr/include/unicode/ucol.h:1571:16: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1571:35: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                                   ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:16: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:33: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                                 ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:10: error: 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const' cannot be overloaded with 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h:1571:10: note: previous declaration 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1575:32: error: request for member 'getBuffer' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/include/unicode/ucol.h:1575:50: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h:1576:32: error: request for member 'getBuffer' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1576:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1576:50: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1585:21: error: request for member 'data' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1585:33: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                                 ^~~~~~
/usr/include/unicode/ucol.h:1586:21: error: request for member 'data' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1586:33: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                                 ^~~~~~
make[5]: *** [make.rules:102: /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/temp/Release/common/unicode_util.o] Error 1
make[4]: *** [Makefile:187: master_process] Error 2
make[3]: *** [Makefile:66: firebird] Error 2
make[2]: *** [Makefile:6: firebird] Error 2
make[1]: *** [/tmp/build/libreoffice-24.8.2.1/external/firebird/ExternalProject_firebird.mk:30: /tmp/build/libreoffice-24.8.2.1/workdir/ExternalProject/firebird/build] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:294: build] Error 2

Disable firebird with: --disable-firebird-sdbc

in reply to:  13 comment:14 by Xi Ruoyao, 5 months ago

Replying to Joe Locash:

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  481 |                         ((startIndex >> 8) & 0xFF),
      |                         ~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/unicode/utrans.h:23,
                 from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:44:
/usr/include/unicode/uset.h:1655:10: error: 'u16string_view' in namespace 'std' does not name a type
 1655 |     std::u16string_view operator*() const {
      |          ^~~~~~~~~~~~~~

/* snip */

I guess this is the same issue as WebKitGTK encounters. See https://unicode-org.atlassian.net/browse/ICU-22954.

comment:15 by Douglas R. Reno, 5 months ago

Thunderbird should not be impacted as it uses a bundled copy of ICU.

comment:16 by Douglas R. Reno, 5 months ago

Firefox and Spidermonkey were fixed at abc56ebd7727d163bb61384de9127ba34727a079

in reply to:  13 ; comment:17 by Douglas R. Reno, 5 months ago

Replying to Joe Locash:

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  481 |                         ((startIndex >> 8) & 0xFF),
      |                         ~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/unicode/utrans.h:23,
                 from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:44:
/usr/include/unicode/uset.h:1655:10: error: 'u16string_view' in namespace 'std' does not name a type
 1655 |     std::u16string_view operator*() const {
      |          ^~~~~~~~~~~~~~
/usr/include/unicode/uset.h:1763:5: error: 'UnicodeString' does not name a type
 1763 |     UnicodeString operator*() const {
      |     ^~~~~~~~~~~~~
In file included from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:46:
/usr/include/unicode/ucol.h:1553:37: error: 'ConvertibleToU16StringView' was not declared in this scope
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:65: error: template argument 1 is invalid
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                 ^
/usr/include/unicode/ucol.h:1553:25: error: '<expression error>' in namespace 'std' does not name a type
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:67: error: expected '>' before '&&' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                   ^~
/usr/include/unicode/ucol.h:1553:100: error: expected unqualified-id before '>' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                                                    ^
/usr/include/unicode/ucol.h:1571:16: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1571:35: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                                   ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:16: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:33: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                                 ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:10: error: 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const' cannot be overloaded with 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h:1571:10: note: previous declaration 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1575:32: error: request for member 'getBuffer' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/include/unicode/ucol.h:1575:50: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h:1576:32: error: request for member 'getBuffer' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1576:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1576:50: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1585:21: error: request for member 'data' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1585:33: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                                 ^~~~~~
/usr/include/unicode/ucol.h:1586:21: error: request for member 'data' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1586:33: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                                 ^~~~~~
make[5]: *** [make.rules:102: /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/temp/Release/common/unicode_util.o] Error 1
make[4]: *** [Makefile:187: master_process] Error 2
make[3]: *** [Makefile:66: firebird] Error 2
make[2]: *** [Makefile:6: firebird] Error 2
make[1]: *** [/tmp/build/libreoffice-24.8.2.1/external/firebird/ExternalProject_firebird.mk:30: /tmp/build/libreoffice-24.8.2.1/workdir/ExternalProject/firebird/build] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:294: build] Error 2

Disable firebird with: --disable-firebird-sdbc

I've got a patch that I'm going to test for this that also includes a buildfix for libcdr with icu-76. Going to be a little bit before I get there though as I have a couple other issues that I need to take care of

in reply to:  17 ; comment:18 by Joe Locash, 5 months ago

Replying to Douglas R. Reno:

Replying to Joe Locash:

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  481 |                         ((startIndex >> 8) & 0xFF),
      |                         ~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/unicode/utrans.h:23,
                 from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:44:
/usr/include/unicode/uset.h:1655:10: error: 'u16string_view' in namespace 'std' does not name a type
 1655 |     std::u16string_view operator*() const {
      |          ^~~~~~~~~~~~~~
/usr/include/unicode/uset.h:1763:5: error: 'UnicodeString' does not name a type
 1763 |     UnicodeString operator*() const {
      |     ^~~~~~~~~~~~~
In file included from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:46:
/usr/include/unicode/ucol.h:1553:37: error: 'ConvertibleToU16StringView' was not declared in this scope
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:65: error: template argument 1 is invalid
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                 ^
/usr/include/unicode/ucol.h:1553:25: error: '<expression error>' in namespace 'std' does not name a type
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:67: error: expected '>' before '&&' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                   ^~
/usr/include/unicode/ucol.h:1553:100: error: expected unqualified-id before '>' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                                                    ^
/usr/include/unicode/ucol.h:1571:16: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1571:35: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                                   ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:16: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:33: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                                 ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:10: error: 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const' cannot be overloaded with 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h:1571:10: note: previous declaration 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1575:32: error: request for member 'getBuffer' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/include/unicode/ucol.h:1575:50: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h:1576:32: error: request for member 'getBuffer' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1576:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1576:50: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1585:21: error: request for member 'data' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1585:33: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                                 ^~~~~~
/usr/include/unicode/ucol.h:1586:21: error: request for member 'data' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1586:33: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                                 ^~~~~~
make[5]: *** [make.rules:102: /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/temp/Release/common/unicode_util.o] Error 1
make[4]: *** [Makefile:187: master_process] Error 2
make[3]: *** [Makefile:66: firebird] Error 2
make[2]: *** [Makefile:6: firebird] Error 2
make[1]: *** [/tmp/build/libreoffice-24.8.2.1/external/firebird/ExternalProject_firebird.mk:30: /tmp/build/libreoffice-24.8.2.1/workdir/ExternalProject/firebird/build] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:294: build] Error 2

Disable firebird with: --disable-firebird-sdbc

I've got a patch that I'm going to test for this that also includes a buildfix for libcdr with icu-76. Going to be a little bit before I get there though as I have a couple other issues that I need to take care of

I can test the patch if you post it. I didn't see a build failure with libcdr?

in reply to:  6 ; comment:19 by Douglas R. Reno, 5 months ago

Replying to Xi Ruoyao:

webkitgtk needs to be adapted:

sed '/U_SHOW_CPLUSPLUS_API/a#define U_SHOW_CPLUSPLUS_HEADER_API 0' -i Source/WTF/wtf/Platform.h

WebKitGTK fixed at 1b39e5ae6e017ff5eee5d9a1c0b6ac4854889516

in reply to:  18 ; comment:20 by Douglas R. Reno, 5 months ago

Replying to Joe Locash:

Replying to Douglas R. Reno:

Replying to Joe Locash:

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  481 |                         ((startIndex >> 8) & 0xFF),
      |                         ~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/unicode/utrans.h:23,
                 from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:44:
/usr/include/unicode/uset.h:1655:10: error: 'u16string_view' in namespace 'std' does not name a type
 1655 |     std::u16string_view operator*() const {
      |          ^~~~~~~~~~~~~~
/usr/include/unicode/uset.h:1763:5: error: 'UnicodeString' does not name a type
 1763 |     UnicodeString operator*() const {
      |     ^~~~~~~~~~~~~
In file included from /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/unicode_util.cpp:46:
/usr/include/unicode/ucol.h:1553:37: error: 'ConvertibleToU16StringView' was not declared in this scope
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:65: error: template argument 1 is invalid
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                 ^
/usr/include/unicode/ucol.h:1553:25: error: '<expression error>' in namespace 'std' does not name a type
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1553:67: error: expected '>' before '&&' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                   ^~
/usr/include/unicode/ucol.h:1553:100: error: expected unqualified-id before '>' token
 1553 |         typename = std::enable_if_t<ConvertibleToU16StringView<T> && ConvertibleToU16StringView<U>>>
      |                                                                                                    ^
/usr/include/unicode/ucol.h:1571:16: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1571:35: error: 'UnicodeString' has not been declared
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |                                   ^~~~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:16: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:33: error: 'StringPiece' has not been declared
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |                                 ^~~~~~~~~~~
/usr/include/unicode/ucol.h:1580:10: error: 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const' cannot be overloaded with 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1580 |     bool match(StringPiece lhs, StringPiece rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h:1571:10: note: previous declaration 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const'
 1571 |     bool match(UnicodeString lhs, UnicodeString rhs) const {
      |          ^~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1575:32: error: request for member 'getBuffer' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1575:17: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/include/unicode/ucol.h:1575:50: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1575 |                 toUCharPtr(lhs.getBuffer()), lhs.length(),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h:1576:32: error: request for member 'getBuffer' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                ^~~~~~~~~
/usr/include/unicode/ucol.h:1576:17: error: there are no arguments to 'toUCharPtr' that depend on a template parameter, so a declaration of 'toUCharPtr' must be available [-fpermissive]
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                 ^~~~~~~~~~
/usr/include/unicode/ucol.h:1576:50: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1576 |                 toUCharPtr(rhs.getBuffer()), rhs.length()),
      |                                                  ^~~~~~
/usr/include/unicode/ucol.h: In member function 'bool icu::header::collator::internal::Predicate<Compare, result>::match(int, int) const':
/usr/include/unicode/ucol.h:1585:21: error: request for member 'data' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1585:33: error: request for member 'length' in 'lhs', which is of non-class type 'int'
 1585 |                 lhs.data(), lhs.length(),
      |                                 ^~~~~~
/usr/include/unicode/ucol.h:1586:21: error: request for member 'data' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                     ^~~~
/usr/include/unicode/ucol.h:1586:33: error: request for member 'length' in 'rhs', which is of non-class type 'int'
 1586 |                 rhs.data(), rhs.length(),
      |                                 ^~~~~~
make[5]: *** [make.rules:102: /tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/temp/Release/common/unicode_util.o] Error 1
make[4]: *** [Makefile:187: master_process] Error 2
make[3]: *** [Makefile:66: firebird] Error 2
make[2]: *** [Makefile:6: firebird] Error 2
make[1]: *** [/tmp/build/libreoffice-24.8.2.1/external/firebird/ExternalProject_firebird.mk:30: /tmp/build/libreoffice-24.8.2.1/workdir/ExternalProject/firebird/build] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:294: build] Error 2

Disable firebird with: --disable-firebird-sdbc

I've got a patch that I'm going to test for this that also includes a buildfix for libcdr with icu-76. Going to be a little bit before I get there though as I have a couple other issues that I need to take care of

I can test the patch if you post it. I didn't see a build failure with libcdr?

I'll attach it to the ticket after this comment. Let me know what you get :)

by Douglas R. Reno, 5 months ago

in reply to:  20 ; comment:21 by Joe Locash, 5 months ago

Replying to Douglas R. Reno:

Replying to Joe Locash:

Replying to Douglas R. Reno:

Replying to Joe Locash:

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  <SNIP>

I've got a patch that I'm going to test for this that also includes a buildfix for libcdr with icu-76. Going to be a little bit before I get there though as I have a couple other issues that I need to take care of

I can test the patch if you post it. I didn't see a build failure with libcdr?

I'll attach it to the ticket after this comment. Let me know what you get :)

Builds fine with your patch.

comment:22 by Douglas R. Reno, 5 months ago

Awesome, thank you! I'll contribute this upstream later as well, with the exception of the libcdr portion this was just something I came up with while I was bored waiting on something else to run.

comment:23 by Douglas R. Reno, 5 months ago

evolution-data-server fixed at ecf96132a70ca55d3647c8b56b2cb05e457059d4

comment:24 by Douglas R. Reno, 5 months ago

I definitely wasn't expecting xfsprogs to have problems:

Building scrub
    [LD]     xfs_scrub
/usr/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
/usr/bin/ld: /lib/libicuuc.so.76: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
make[1]: *** [include/buildrules:36: scrub] Error 2
make: *** [Makefile:84: default] Error 2
renodr [ /sources/xfsprogs-6.11.0/xfsprogs-6.11.0 ]$

Going to go find a fix and put it into the book.

in reply to:  24 comment:25 by Douglas R. Reno, 5 months ago

Replying to Douglas R. Reno:

I definitely wasn't expecting xfsprogs to have problems:

Building scrub
    [LD]     xfs_scrub
/usr/bin/ld: unicrash.o: undefined reference to symbol 'uiter_setString_76'
/usr/bin/ld: /lib/libicuuc.so.76: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [../include/buildrules:65: xfs_scrub] Error 1
make[1]: *** [include/buildrules:36: scrub] Error 2
make: *** [Makefile:84: default] Error 2
renodr [ /sources/xfsprogs-6.11.0/xfsprogs-6.11.0 ]$

Going to go find a fix and put it into the book.

xfsprogs fixed at a1f54add56ec4e2453aa37899abb5fbacba80dfa

in reply to:  19 comment:26 by Xi Ruoyao, 5 months ago

Replying to Douglas R. Reno:

Replying to Xi Ruoyao:

webkitgtk needs to be adapted:

sed '/U_SHOW_CPLUSPLUS_API/a#define U_SHOW_CPLUSPLUS_HEADER_API 0' -i Source/WTF/wtf/Platform.h

WebKitGTK fixed at 1b39e5ae6e017ff5eee5d9a1c0b6ac4854889516

The sed command wasn't correct and I've just fixed it at e913053502bf20192505e11f777154bbfb4bfa37.

comment:27 by Douglas R. Reno, 5 months ago

Owner: changed from blfs-book to Douglas R. Reno
Status: newassigned

in reply to:  21 comment:28 by Douglas R. Reno, 5 months ago

Replying to Joe Locash:

Replying to Douglas R. Reno:

Replying to Joe Locash:

Replying to Douglas R. Reno:

Replying to Joe Locash:

I see a build failure in libreoffice when it builds firebird:

/tmp/build/libreoffice-24.8.2.1/workdir/UnpackedTarball/firebird/src/common/StatementMetadata.cpp:481:44: warning: narrowing conversion of '((startIndex >> 8) & 255)' from 'unsigned int' to 'UCHAR' {aka 'unsigned char'} [-Wnarrowing]
  <SNIP>

I've got a patch that I'm going to test for this that also includes a buildfix for libcdr with icu-76. Going to be a little bit before I get there though as I have a couple other issues that I need to take care of

I can test the patch if you post it. I didn't see a build failure with libcdr?

I'll attach it to the ticket after this comment. Let me know what you get :)

Builds fine with your patch.

libreoffice fixed at d537d2302c252483c9abd235ed72de76f891598a

in reply to:  11 comment:29 by Douglas R. Reno, 5 months ago

Replying to Xi Ruoyao:

For node.js

sed '/pkgicu/s/icu-i18n/& icu-uc/' -i configure.py

works for me.

Fixed at 75a22898397ba16a8916421aa19edcd917070f0c

in reply to:  2 comment:30 by Douglas R. Reno, 5 months ago

Replying to Xi Ruoyao:

It also fixes the test failure in libical (the sed in libical is still needed though).

Fixed at 362e49b8e9a3c03ca13578d27e50365a021da176

in reply to:  4 comment:31 by Douglas R. Reno, 5 months ago

Replying to Xi Ruoyao:

158 (!) failures in spidermonkey.

This (and the JIT tests) have had their text updated at aeb01ecb266225960fe759efeaef5e307d23c082

comment:32 by Douglas R. Reno, 5 months ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.