Bug 23086 - REGRESSION(r39540/r39541): Windows build fails due to ICU errors
Summary: REGRESSION(r39540/r39541): Windows build fails due to ICU errors
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows XP
: P2 Normal
Assignee: Nobody
URL:
Keywords: Regression
Depends on:
Blocks:
 
Reported: 2009-01-02 21:50 PST by Brent Fulgham
Modified: 2009-01-04 21:41 PST (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brent Fulgham 2009-01-02 21:50:50 PST
Windows builds now fail with the following errors:

4>TextIterator.cpp
4>..\editing\TextIterator.cpp(1193) : error C3861: 'usearch_open_3_6': identifier not found
4>..\editing\TextIterator.cpp(1236) : error C3861: 'usearch_getCollator_3_6': identifier not found
4>..\editing\TextIterator.cpp(1238) : error C2065: 'UCollationStrength' : undeclared identifier
4>..\editing\TextIterator.cpp(1238) : error C2146: syntax error : missing ';' before identifier 'strength'
4>..\editing\TextIterator.cpp(1238) : error C2065: 'strength' : undeclared identifier
4>..\editing\TextIterator.cpp(1238) : error C2065: 'UCOL_TERTIARY' : undeclared identifier
4>..\editing\TextIterator.cpp(1238) : error C2065: 'UCOL_PRIMARY' : undeclared identifier
4>..\editing\TextIterator.cpp(1239) : error C3861: 'ucol_getStrength_3_6': identifier not found
4>..\editing\TextIterator.cpp(1240) : error C3861: 'ucol_setStrength_3_6': identifier not found
4>..\editing\TextIterator.cpp(1241) : error C3861: 'usearch_reset_3_6': identifier not found
4>..\editing\TextIterator.cpp(1245) : error C3861: 'usearch_setPattern_3_6': identifier not found
4>..\editing\TextIterator.cpp(1291) : error C3861: 'usearch_setText_3_6': identifier not found
4>..\editing\TextIterator.cpp(1294) : error C3861: 'usearch_first_3_6': identifier not found
4>..\editing\TextIterator.cpp(1297) : error C2065: 'USEARCH_DONE' : undeclared identifier
4>..\editing\TextIterator.cpp(1315) : error C3861: 'usearch_getMatchedLength_3_6': identifier not found

The link libraries provided in the 'update-webkit' download do not seem to export these symbols.
Comment 1 Mark Rowe (bdash) 2009-01-02 22:30:23 PST
I think the problem here is that WebKitAuxiliaryLibrary.zip contains out of date headers and link libraries for ICU.  The headers have UCONFIG_NO_COLLATION defaulting to 1, which I believe matches the version of ICU that shipped with Safari 3.0.  The version of ICU that shipped with Safari 3.2 (and perhaps even Safari 3.1) has UCONFIG_NO_COLLATION defaulting to 0 (that is, it has collation support).  We just need to get the appropriate versions of the ICU headers and link libraries into WebKitAuxiliaryLibrary.zip.
Comment 2 Brent Fulgham 2009-01-02 22:45:13 PST
(In reply to comment #1)
> I think the problem here is that WebKitAuxiliaryLibrary.zip contains out of
> date headers and link libraries for ICU. 

I can confirm that changing the setting of UCONFIG_NO_COLLATION to 0 does allow TextIterator.cpp to compile without errors or warnings.

Of course, the overall link still fails due to missing symbols.
Comment 3 Brent Fulgham 2009-01-03 16:48:54 PST
WORKAROUND: For any Windows users, until Apple corrects the libraries distributed with update-webkit, you can grab the two Windows link libraries you will need from here:

http://idisk.mac.com/bfulgham-Public/icu_36_libs.zip.

1. Please the two files (icuuc.lib, icuin.lib) in %WEBKITLIBRARIES%/win/lib.
2. Please note that you will also need to change the header file "include/unicode/uconfig.h":

change the line:
#define UCONFIG_NO_COLLATION 1

to:
#define UCONFIG_NO_COLLATION 0
Comment 4 Darin Adler 2009-01-04 21:41:41 PST
http://trac.webkit.org/changeset/39594

Since this is a build fix I checked it in without waiting for review. Please let me know if this doesn't work.