Bug 229608

Summary: [CMake] ICU 61.2 is required to build WebKit since r281375
Product: WebKit Reporter: Carlos Alberto Lopez Perez <clopez>
Component: CMakeAssignee: Carlos Alberto Lopez Perez <clopez>
Status: RESOLVED FIXED    
Severity: Normal CC: annulen, bugs-noreply, cgarcia, clopez, dino, ews-watchlist, gyuyoung.kim, mcatanzaro, mmaxfield, ryuan.choi, sergio, ysuzuki
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=227832
https://bugs.webkit.org/show_bug.cgi?id=229607
https://bugs.webkit.org/show_bug.cgi?id=209694
https://bugs.webkit.org/show_bug.cgi?id=235367
Attachments:
Description Flags
Patch
none
Patch none

Description Carlos Alberto Lopez Perez 2021-08-27 07:03:28 PDT
Since r281375 building WebKit with ICU 60.2 causes this build failure: 

[364/6028] Building CXX object Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp.o
FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp.o 
/usr/lib/ccache/c++  -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DGETTEXT_PACKAGE=\"WebKit2GTK-4.0\" -DHAVE_CONFIG_H=1 -DJSC_COMPILATION -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_bmalloc -DWEBKITGTK_API_VERSION_STRING=\"4.0\" -IJavaScriptCore/Headers -I. -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/b3 -I../../Source/JavaScriptCore/b3/air -I../../Source/JavaScriptCore/bindings -I../../Source/JavaScriptCore/builtins -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/disassembler/ARM64 -I../../Source/JavaScriptCore/disassembler/udis86 -I../../Source/JavaScriptCore/domjit -I../../Source/JavaScriptCore/ftl -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/debugger -I../../Source/JavaScriptCore/inspector -I../../Source/JavaScriptCore/inspector/agents -I../../Source/JavaScriptCore/inspector/augmentable -I../../Source/JavaScriptCore/inspector/remote -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/llint -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/runtime -I../../Source/JavaScriptCore/tools -I../../Source/JavaScriptCore/wasm -I../../Source/JavaScriptCore/wasm/js -I../../Source/JavaScriptCore/yarr -IJavaScriptCore/DerivedSources -IJavaScriptCore/DerivedSources/inspector -IJavaScriptCore/DerivedSources/runtime -IJavaScriptCore/DerivedSources/yarr -I../../Source/JavaScriptCore/API/glib -IJavaScriptCoreGLib/DerivedSources/jsc -IJavaScriptCoreGLib/Headers -I../../Source/JavaScriptCore/inspector/remote/glib -IWTF/Headers -Ibmalloc/Headers -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -Wextra -Wall -Wno-expansion-to-defined -Wno-attributes -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-tautological-compare  -fno-strict-aliasing -fno-exceptions -fno-rtti -O3 -DNDEBUG -fPIC   -ffp-contract=off -std=c++1z -MD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp.o -c JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp
In file included from ../../Source/JavaScriptCore/runtime/IntlCache.cpp:27:0,
                 from JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp:7:
../../Source/JavaScriptCore/runtime/IntlCache.h:42:89: error: ‘UDateTimePGDisplayWidth’ has not been declared
     Vector<UChar, 32> getFieldDisplayName(const CString& locale, UDateTimePatternField, UDateTimePGDisplayWidth, UErrorCode&);
                                                                                         ^~~~~~~~~~~~~~~~~~~~~~~
In file included from JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp:7:0:
../../Source/JavaScriptCore/runtime/IntlCache.cpp:56:102: error: ‘UDateTimePGDisplayWidth’ has not been declared
 Vector<UChar, 32> IntlCache::getFieldDisplayName(const CString& locale, UDateTimePatternField field, UDateTimePGDisplayWidth width, UErrorCode& status)
                                                                                                      ^~~~~~~~~~~~~~~~~~~~~~~
../../Source/JavaScriptCore/runtime/IntlCache.cpp: In member function ‘WTF::Vector<char16_t, 32> JSC::IntlCache::getFieldDisplayName(const WTF::CString&, UDateTimePatternField, int, UErrorCode&)’:
../../Source/JavaScriptCore/runtime/IntlCache.cpp:62:42: error: ‘udatpg_getFieldDisplayName’ was not declared in this scope
     status = callBufferProducingFunction(udatpg_getFieldDisplayName, sharedGenerator, field, width, buffer);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../Source/JavaScriptCore/runtime/IntlCache.cpp:62:42: note: suggested alternative: ‘getFieldDisplayName’
     status = callBufferProducingFunction(udatpg_getFieldDisplayName, sharedGenerator, field, width, buffer);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
                                          getFieldDisplayName
[365/6028] Building CXX object Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/runtime/IntlDateTimeFormat.cpp.o
FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/runtime/IntlDateTimeFormat.cpp.o 
/usr/lib/ccache/c++  -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DGETTEXT_PACKAGE=\"WebKit2GTK-4.0\" -DHAVE_CONFIG_H=1 -DJSC_COMPILATION -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_bmalloc -DWEBKITGTK_API_VERSION_STRING=\"4.0\" -IJavaScriptCore/Headers -I. -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/b3 -I../../Source/JavaScriptCore/b3/air -I../../Source/JavaScriptCore/bindings -I../../Source/JavaScriptCore/builtins -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/disassembler/ARM64 -I../../Source/JavaScriptCore/disassembler/udis86 -I../../Source/JavaScriptCore/domjit -I../../Source/JavaScriptCore/ftl -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/debugger -I../../Source/JavaScriptCore/inspector -I../../Source/JavaScriptCore/inspector/agents -I../../Source/JavaScriptCore/inspector/augmentable -I../../Source/JavaScriptCore/inspector/remote -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/llint -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/runtime -I../../Source/JavaScriptCore/tools -I../../Source/JavaScriptCore/wasm -I../../Source/JavaScriptCore/wasm/js -I../../Source/JavaScriptCore/yarr -IJavaScriptCore/DerivedSources -IJavaScriptCore/DerivedSources/inspector -IJavaScriptCore/DerivedSources/runtime -IJavaScriptCore/DerivedSources/yarr -I../../Source/JavaScriptCore/API/glib -IJavaScriptCoreGLib/DerivedSources/jsc -IJavaScriptCoreGLib/Headers -I../../Source/JavaScriptCore/inspector/remote/glib -IWTF/Headers -Ibmalloc/Headers -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -fdiagnostics-color=always -Wextra -Wall -Wno-expansion-to-defined -Wno-attributes -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-tautological-compare  -fno-strict-aliasing -fno-exceptions -fno-rtti -O3 -DNDEBUG -fPIC   -ffp-contract=off -std=c++1z -MD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/runtime/IntlDateTimeFormat.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/runtime/IntlDateTimeFormat.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/runtime/IntlDateTimeFormat.cpp.o -c ../../Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp
In file included from ../../Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:30:0:
../../Source/JavaScriptCore/runtime/IntlCache.h:42:89: error: ‘UDateTimePGDisplayWidth’ has not been declared
     Vector<UChar, 32> getFieldDisplayName(const CString& locale, UDateTimePatternField, UDateTimePGDisplayWidth, UErrorCode&);
                                                                                         ^~~~~~~~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.

From https://build.webkit.org/#/builders/71/builds/214
Comment 1 Carlos Alberto Lopez Perez 2021-08-27 07:09:44 PDT
Requiring ICU 61.2 seems OK according to https://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy because Ubuntu-18.04 ships ICU 60.2 but it has passed more than a year since Ubuntu-20.04 has been out and Debian-10 ships ICU 63.
Comment 2 Carlos Alberto Lopez Perez 2021-08-27 07:12:11 PDT
Created attachment 436621 [details]
Patch
Comment 3 Carlos Alberto Lopez Perez 2021-08-27 07:58:18 PDT
Created attachment 436625 [details]
Patch
Comment 4 Yusuke Suzuki 2021-08-27 11:16:30 PDT
Comment on attachment 436625 [details]
Patch

r=me
Comment 5 EWS 2021-08-27 11:41:36 PDT
Committed r281708 (241054@main): <https://commits.webkit.org/241054@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436625 [details].
Comment 6 Michael Catanzaro 2021-09-23 13:59:04 PDT
(In reply to Carlos Alberto Lopez Perez from comment #1)
> Requiring ICU 61.2 seems OK according to
> https://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy because
> Ubuntu-18.04 ships ICU 60.2 but it has passed more than a year since
> Ubuntu-20.04 has been out and Debian-10 ships ICU 63.

I was wondering when this would happen. I had been hoping to keep updating WebKitGTK in RHEL 8 for five years, but knew it likely wouldn't be possible due to the three-year upstream policy. (We have ICU 60.3.) Will continue to update to latest 2.32.x for as long as it's still supported.