Bug 50867 - [Gtk] WebKitGtk+ doesn't build on Mac OS X 10.6
Summary: [Gtk] WebKitGtk+ doesn't build on Mac OS X 10.6
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.6
: P2 Normal
Assignee: Nobody
URL:
Keywords: Gtk
Depends on: 51659
Blocks:
  Show dependency treegraph
 
Reported: 2010-12-11 02:07 PST by Koan-Sin Tan
Modified: 2011-01-12 10:14 PST (History)
12 users (show)

See Also:


Attachments
a quick patch to make WebKitGtk+ build on Mac OS X (4.14 KB, patch)
2010-12-11 02:36 PST, Koan-Sin Tan
mrowe: review-
Details | Formatted Diff | Diff
proposed patch to make WebKitGtk+ build on Mac OS X (3.63 KB, patch)
2010-12-12 03:35 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (3.63 KB, patch)
2010-12-12 04:34 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (3.64 KB, patch)
2010-12-21 18:51 PST, Koan-Sin Tan
mrobinson: review-
Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (4.25 KB, patch)
2010-12-22 22:59 PST, Koan-Sin Tan
mrowe: review-
Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (4.85 KB, patch)
2010-12-23 21:53 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (5.25 KB, patch)
2010-12-24 00:33 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (5.10 KB, patch)
2010-12-26 19:39 PST, Koan-Sin Tan
mrobinson: review-
Details | Formatted Diff | Diff
Proposed patch to make WebKitGtk+ build on Mac OS X (5.54 KB, patch)
2010-12-27 19:11 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
Version of the patch incorporating Sam's suggestion (5.52 KB, patch)
2010-12-28 16:10 PST, Martin Robinson
mrowe: review-
Details | Formatted Diff | Diff
patch incorporated Martin's modifications and Mark's comments (5.40 KB, patch)
2010-12-28 18:43 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
proposed patch (200.46 KB, patch)
2011-01-05 00:57 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
proposed patch (5.42 KB, patch)
2011-01-09 18:00 PST, Koan-Sin Tan
mrobinson: review-
Details | Formatted Diff | Diff
proposed patch (5.50 KB, patch)
2011-01-11 21:08 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff
proposed patch (5.56 KB, patch)
2011-01-11 21:54 PST, Koan-Sin Tan
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Koan-Sin Tan 2010-12-11 02:07:30 PST
WebKitGtk+ doesn't build on Mac OS X 10.6 with MacPorts. "WebKitTools/Scripts/build-webkit --gtk" doesn't build, because
1. it requires geolocation, which is not in MacPorts, so "WebKitTools/Scripts/build-webkit --gtk --no-geolocation"
2. some files need to be modified, to run "build-webkit --gtk --no-geolocation", I'll submit a ptach
3. "WebKitTools/Scripts/run-launcher --gtk" doesn't launch the browser, because of wrong library path. Modification will be included in the path too
Comment 1 Koan-Sin Tan 2010-12-11 02:36:59 PST
Created attachment 76297 [details]
a quick patch to make WebKitGtk+ build on Mac OS X
Comment 2 Mark Rowe (bdash) 2010-12-11 06:58:40 PST
Comment on attachment 76297 [details]
a quick patch to make WebKitGtk+ build on Mac OS X

The changes in WebCore at the very least require explanation in the ChangeLog.

The change in UUID.cpp does not seem correct -- it looks as though it sends GTK on Mac OS X down the “not implemented” path.  Presumably if there is in fact a reason for this change then the ChangeLog entry would mention it.
Comment 3 Koan-Sin Tan 2010-12-11 18:58:16 PST
(In reply to comment #2)
> (From update of attachment 76297 [details])
> The changes in WebCore at the very least require explanation in the ChangeLog.
> 
> The change in UUID.cpp does not seem correct -- it looks as though it sends GTK on Mac OS X down the “not implemented” path.  Presumably if there is in fact a reason for this change then the ChangeLog entry would mention it.

Because CFString will be undeclared type with OS(DARWIN) && PLATFORM(GTK). Anyway, I know other ways to deal with this. will update the patch later. Thanks
Comment 4 Mark Rowe (bdash) 2010-12-12 01:07:54 PST
(In reply to comment #3)
> Because CFString will be undeclared type with OS(DARWIN) && PLATFORM(GTK). Anyway, I know other ways to deal with this. will update the patch later. Thanks

The file includes <CoreFoundation/CoreFoundation.h>.  CFString will be declared as a result of that.
Comment 5 Koan-Sin Tan 2010-12-12 01:37:51 PST
(In reply to comment #4)
> (In reply to comment #3)
> > Because CFString will be undeclared type with OS(DARWIN) && PLATFORM(GTK). Anyway, I know other ways to deal with this. will update the patch later. Thanks
> 
> The file includes <CoreFoundation/CoreFoundation.h>.  CFString will be declared as a result of that.

Yes, but I think I didn't explain it clear. The  problem is that CFString is not declared in the String class ("PlatformString"), which is included/declared in UUID.h. So #define WTF_PLATFORM_CF before including UUID.h is needed. If this sounds reasonable, I'll submit a modified patch.
Comment 6 Koan-Sin Tan 2010-12-12 03:35:28 PST
Created attachment 76319 [details]
proposed patch to make WebKitGtk+ build on Mac OS X

In UUID.cpp, let createCanonicalUUIDString be OS(DARWIN) one
Comment 7 Early Warning System Bot 2010-12-12 04:20:05 PST
Attachment 76319 [details] did not build on qt:
Build output: http://queues.webkit.org/results/6964087
Comment 8 WebKit Review Bot 2010-12-12 04:23:10 PST
Attachment 76319 [details] did not build on gtk:
Build output: http://queues.webkit.org/results/6896074
Comment 9 Koan-Sin Tan 2010-12-12 04:34:32 PST
Created attachment 76322 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

Oops, #endif is not in the right place
Comment 10 Koan-Sin Tan 2010-12-21 18:51:41 PST
Created attachment 77178 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

same as 76322, WebKitTools/ --> Toos/
Comment 11 Martin Robinson 2010-12-22 06:37:02 PST
Comment on attachment 77178 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

View in context: https://bugs.webkit.org/attachment.cgi?id=77178&action=review

> Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:38
> +#if OS(DARWIN) && PLATFORM(GTK)
> +#define Cursor       QD_Cursor 
> +#endif
>  #include "PluginObject.h"
> +#if OS(DARWIN) && PLATFORM(GTK)
> +#undef Cursor
> +#endif
>  #include "PluginTest.h"
>  
>  #include "npapi.h"

Where is Cursor referenced? It probably makes sense to do this closer to that place.

> Tools/Scripts/webkitdirs.pm:600
> -        if (-e $libraryDir . "libwebkitgtk-3.0.so") {
> +        if (isDarwin() and -d "$libraryDir") {
> +            return $libraryDir . "libwebkitgtk-1.0.dylib";
> +        } elsif (-e $libraryDir . "libwebkitgtk-3.0.so") {
>              return $libraryDir . "libwebkitgtk-3.0.so";

You don't properly handle the GTK+ 2.x case here.

> WebCore/ChangeLog:9
> +        on Darwain, so that PlatformString knows CFString. 

Should be 'Darwin'. :)

> WebCore/ChangeLog:13
> +        * config.h: (OS(DARWIN) && PLATFORM(GTK)) doesn't like ctypes

It's hard for me to understand exactly what the issue is here. Where does OS(DARWIN) && PLATFORM(GTK) use ctypes, that it breaks the build to disallow them.

> WebCore/config.h:136
> +#if !PLATFORM(QT) && !PLATFORM(WX) && !PLATFORM(CHROMIUM) && !PLATFORM(CHROMIUM) && !(OS(DARWIN) && PLATFORM(GTK))

You've added an extra !PLATFORM(CHROMIUM).

> WebCore/platform/UUID.cpp:35
> +#if OS(DARWIN) && PLATFORM(GTK)
> +#define WTF_PLATFORM_CF 1
> +#endif
>  #include "UUID.h"

It seems really unusual to do something like that and do it before the second include. Maybe there's a cleaner way to do it?
Comment 12 Koan-Sin Tan 2010-12-22 16:18:06 PST
(In reply to comment #11)
> (From update of attachment 77178 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=77178&action=review
> 
> > Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:38
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#define Cursor       QD_Cursor 
> > +#endif
> >  #include "PluginObject.h"
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#undef Cursor
> > +#endif
> >  #include "PluginTest.h"
> >  
> >  #include "npapi.h"
> 
> Where is Cursor referenced? It probably makes sense to do this closer to that place.

somewhere in #include "PluginObject.h", I'l dig it out.
And #include <X11/Xlib.h> will define Cursor again.
So, must #undef it before X11/Xlib.h
 
> > Tools/Scripts/webkitdirs.pm:600
> > -        if (-e $libraryDir . "libwebkitgtk-3.0.so") {
> > +        if (isDarwin() and -d "$libraryDir") {
> > +            return $libraryDir . "libwebkitgtk-1.0.dylib";
> > +        } elsif (-e $libraryDir . "libwebkitgtk-3.0.so") {
> >              return $libraryDir . "libwebkitgtk-3.0.so";
> 
> You don't properly handle the GTK+ 2.x case here.
> 

I don't understand the GTK+ 2.x case, can you tell me more?

> 
> Should be 'Darwin'. :)
>

Thanks, will fix it.
 
> > WebCore/ChangeLog:13
> > +        * config.h: (OS(DARWIN) && PLATFORM(GTK)) doesn't like ctypes
> 
> It's hard for me to understand exactly what the issue is here. Where does OS(DARWIN) && PLATFORM(GTK) use ctypes, that it breaks the build to disallow them.
>

I forgot the detail, will dig it out.
 
> 
> You've added an extra !PLATFORM(CHROMIUM).
>

I'll fix it, thanks.
 
> > WebCore/platform/UUID.cpp:35
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#define WTF_PLATFORM_CF 1
> > +#endif
> >  #include "UUID.h"
> 
> It seems really unusual to do something like that and do it before the second include. Maybe there's a cleaner way to do it?

move it into UUID.h? must define this before #include "PlatformString.h", which is the first include in UUID.h
Comment 13 Koan-Sin Tan 2010-12-22 18:03:29 PST
(In reply to comment #11)
> > WebCore/ChangeLog:13
> > +        * config.h: (OS(DARWIN) && PLATFORM(GTK)) doesn't like ctypes
> 
> It's hard for me to understand exactly what the issue is here. Where does OS(DARWIN) && PLATFORM(GTK) use ctypes, that it breaks the build to disallow them.
> 

This is a bit tricky. Any Gtk file that includes <libintl.h>or <glib/gi18n-lib.h> will have trouble.
On Mac, libintl.h will include <xlocale.h>

<xclocale.h> includes <xlocale/_ctype.h>, which uses isacii(). If we use "DisallowCType.h"  (isascii() is disallowed), we'll see message shown below. Of course, we can do something like "#undef isascii" before including libintl.h or  glib/gi18n-lib.h, but don't use "DisallowCType.h" is easier.

In file included from /usr/include/xlocale.h:77,
                 from /usr/local/include/libintl.h:24,
                 from /opt/local/include/glib-2.0/glib/gi18n-lib.h:25,
                 from ../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:30:
/usr/include/xlocale/_ctype.h: In function ‘int __istype_l(__darwin_ct_rune_t, long unsigned int, _xlocale*)’:
/usr/include/xlocale/_ctype.h:47: error: ‘isascii_WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h’ was not declared in this scope
/usr/include/xlocale/_ctype.h: In function ‘__darwin_ct_rune_t __toupper_l(__darwin_ct_rune_t, _xlocale*)’:
/usr/include/xlocale/_ctype.h:54: error: ‘isascii_WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h’ was not declared in this scope
/usr/include/xlocale/_ctype.h: In function ‘__darwin_ct_rune_t __tolower_l(__darwin_ct_rune_t, _xlocale*)’:
/usr/include/xlocale/_ctype.h:61: error: ‘isascii_WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h’ was not declared in this scope
Comment 14 Koan-Sin Tan 2010-12-22 19:56:55 PST
(In reply to comment #11)
> (From update of attachment 77178 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=77178&action=review
> 
> > Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:38
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#define Cursor       QD_Cursor 
> > +#endif
> >  #include "PluginObject.h"
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#undef Cursor
> > +#endif
> >  #include "PluginTest.h"
> >  
> >  #include "npapi.h"
> 
> Where is Cursor referenced? It probably makes sense to do this closer to that place.
> 

PluginObject.h will include WebCore/bridge/npapi.h and include QuickDraw stuff, which will typedef Cursor, and X11/Xlib.h wil #define Cursor again. That's the problem
Comment 15 Koan-Sin Tan 2010-12-22 22:59:55 PST
Created attachment 77307 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

add more explanations to Changelogs, fixed some typos
Comment 16 Mark Rowe (bdash) 2010-12-23 13:02:16 PST
Comment on attachment 77307 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

View in context: https://bugs.webkit.org/attachment.cgi?id=77307&action=review

> WebCore/platform/UUID.h:37
>  #include "PlatformString.h"

This change to UUID.h is simply not correct.  It’s unsafe to alter the PLATFORM defines in individual files like this, even more so from a header file.
Comment 17 Koan-Sin Tan 2010-12-23 15:14:03 PST
(In reply to comment #16)
> (From update of attachment 77307 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=77307&action=review
> 
> > WebCore/platform/UUID.h:37
> >  #include "PlatformString.h"
> 
> This change to UUID.h is simply not correct.  It’s unsafe to alter the PLATFORM defines in individual files like this, even more so from a header file.

OK, how about #define PLATFORM_CF for  (OS(DARWIN) && PLATFORM(GTK)) in JavaScriptCore/wt/Platform.h? Will this be a correct change?
Comment 18 Koan-Sin Tan 2010-12-23 21:53:18 PST
Created attachment 77402 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

let OS(DARWIN) && PLATFORM(GTK) use the Chromium Linux one to generate UUID so that we can avoid the conflicts between CoreFoundation and Gtk/X11
Comment 19 Koan-Sin Tan 2010-12-24 00:33:02 PST
Created attachment 77407 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

same as 77402, #include necessary headers
Comment 20 Eric Seidel (no email) 2010-12-24 09:09:01 PST
Comment on attachment 77407 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

View in context: https://bugs.webkit.org/attachment.cgi?id=77407&action=review

In general looks fine.  The Cursor re-def looks scary and fragile.

> Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:35
> +#if OS(DARWIN) && PLATFORM(GTK)
> +#define Cursor       QD_Cursor 
> +#endif
>  #include "PluginObject.h"
> +#if OS(DARWIN) && PLATFORM(GTK)
> +#undef Cursor
> +#endif

Why is this needed?
Comment 21 Koan-Sin Tan 2010-12-24 18:14:00 PST
(In reply to comment #20)
> (From update of attachment 77407 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=77407&action=review
> 
> In general looks fine.  The Cursor re-def looks scary and fragile.
> 

Yes. I know :-)

> > Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:35
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#define Cursor       QD_Cursor 
> > +#endif
> >  #include "PluginObject.h"
> > +#if OS(DARWIN) && PLATFORM(GTK)
> > +#undef Cursor
> > +#endif
> 
> Why is this needed?

To avoid typedef conflict. PluginObject.h will include WebCore/bridge/npapi.h and include QuickDraw stuff, which will typedef Cursor, and X11/Xlib.h wil typedef Cursor again. That's the problem.

I tried to avoid including QuickDraw without success. Because many headers in the<ApplicationServices/ApplicationServices.h>, which is used to include QuickDraw, depends on QuickDraw.
Comment 22 Koan-Sin Tan 2010-12-26 19:39:13 PST
Created attachment 77472 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

removed the scary Cursor re-def mentioned by Martin and Eric by adding -DXP_UNIX to TestNetscapePlugin_libtestnetscapeplugin_la_CPPFLAGS in Tools/GNUmakefile.am.
Comment 23 Martin Robinson 2010-12-27 11:18:58 PST
Comment on attachment 77472 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

View in context: https://bugs.webkit.org/attachment.cgi?id=77472&action=review

Great updates. Sorry that I forgot to explain my webkitdirs.pm comment earlier. I've included that below.

> Tools/Scripts/webkitdirs.pm:599
> -        if (-e $libraryDir . "libwebkitgtk-3.0.so") {
> +        if (isDarwin() and -d "$libraryDir") {
> +            return $libraryDir . "libwebkitgtk-1.0.dylib";
> +        } elsif (-e $libraryDir . "libwebkitgtk-3.0.so") {

I still think this needs to handle the GTK 3.x case properly. It makes sense to just make the library extension conditional. For example (untested):

my $extension = isDarwin() ? "dylib" : "so";
if (-e $libraryDir . "libwebkitgtk-3.0.$extension") {
    return $libraryDir . "libwebkitgtk-3.0.$extension";
}
return $libraryDir . "libwebkitgtk-1.0.$extension";

> WebCore/config.h:-136
>  // this breaks compilation of <QFontDatabase>, at least, so turn it off for now
>  // Also generates errors on wx on Windows, presumably because these functions
>  // are used from wx headers.
> -#if !PLATFORM(QT) && !PLATFORM(WX) && !PLATFORM(CHROMIUM)

Might want to update the comment to explain why this is necessary for GTK+ here too.

> WebCore/platform/UUID.cpp:46
> +#elif OS(LINUX) && PLATFORM(CHROMIUM) || OS(DARWIN) && PLATFORM(GTK)

Is it possible to use parenthesis here to make this less ambiguous to the reader?

> WebCore/platform/UUID.cpp:96
> +#elif OS(LINUX) && PLATFORM(CHROMIUM) || OS(DARWIN) && PLATFORM(GTK)

Same here.
Comment 24 Koan-Sin Tan 2010-12-27 16:56:41 PST
(In reply to comment #23)
> (From update of attachment 77472 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=77472&action=review
> 
> Great updates. Sorry that I forgot to explain my webkitdirs.pm comment earlier. I've included that below.
> 

Thanks, I see what you mean this time, will do it.

> > WebCore/config.h:-136
> >  // this breaks compilation of <QFontDatabase>, at least, so turn it off for now
> >  // Also generates errors on wx on Windows, presumably because these functions
> >  // are used from wx headers.
> > -#if !PLATFORM(QT) && !PLATFORM(WX) && !PLATFORM(CHROMIUM)
> 
> Might want to update the comment to explain why this is necessary for GTK+ here too.
>

OK.
 
> > WebCore/platform/UUID.cpp:46
> > +#elif OS(LINUX) && PLATFORM(CHROMIUM) || OS(DARWIN) && PLATFORM(GTK)
> 
> Is it possible to use parenthesis here to make this less ambiguous to the reader?
> 

you mean
    #elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && PLATFORM(GTK))
Yes, I agree. I like parenthesis. I did have parenthesis before, but Tools/Scripts/check-webkit-style doesn't like them. It told me
    WebCore/platform/UUID.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
I think that's a bug of check-webkit-style, since && has higher precedence than ||, I just removed parenthesis. To add them back, I have to find how to fix the check-webkit-style problem first :-)
Comment 25 Koan-Sin Tan 2010-12-27 19:11:32 PST
Created attachment 77533 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

updated 77472: added comments to WebCore/config.h and changed webkitdirs.pm as suggested by mrobinson
Comment 26 David Levin 2010-12-27 23:52:05 PST
(In reply to comment #24)
> (In reply to comment #23)
> > (From update of attachment 77472 [details] [details])
> > View in context: https://bugs.webkit.org/attachment.cgi?id=77472&action=review
> > > WebCore/platform/UUID.cpp:46
> > > +#elif OS(LINUX) && PLATFORM(CHROMIUM) || OS(DARWIN) && PLATFORM(GTK)
> > 
> > Is it possible to use parenthesis here to make this less ambiguous to the reader?
> > 
> 
> you mean
>     #elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && PLATFORM(GTK))
> Yes, I agree. I like parenthesis. I did have parenthesis before, but Tools/Scripts/check-webkit-style doesn't like them. It told me
>     WebCore/platform/UUID.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
> I think that's a bug of check-webkit-style, since && has higher precedence than ||, I just removed parenthesis. To add them back, I have to find how to fix the check-webkit-style problem first :-)

Changes that fail check-webkit-style aren't disallowed. It is advisory that there is likely an issue there. In this case, it thinks there is a function call, but there isn't.



btw, if you'd like to fix check-webkit-style, the issue is in the regex below from Tools/Scripts/webkitpy/style/checkers/cpp.py (which I found by searching for the error text):

1340	        if (search(r'\w\s+\(', function_call)
1341	            and not search(r'#\s*define|typedef', function_call)):
1342	            error(line_number, 'whitespace/parens', 4,
1343	                  'Extra space before ( in function call')
Comment 27 Koan-Sin Tan 2010-12-28 09:06:26 PST
(In reply to comment #26)
> > 
> > you mean
> >     #elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && PLATFORM(GTK))
> > Yes, I agree. I like parenthesis. I did have parenthesis before, but Tools/Scripts/check-webkit-style doesn't like them. It told me
> >     WebCore/platform/UUID.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
> > I think that's a bug of check-webkit-style, since && has higher precedence than ||, I just removed parenthesis. To add them back, I have to find how to fix the check-webkit-style problem first :-)
> 
> Changes that fail check-webkit-style aren't disallowed. It is advisory that there is likely an issue there. In this case, it thinks there is a function call, but there isn't.
> 
> 
> btw, if you'd like to fix check-webkit-style, the issue is in the regex below from Tools/Scripts/webkitpy/style/checkers/cpp.py (which I found by searching for the error text):
> 
> 1340            if (search(r'\w\s+\(', function_call)
> 1341                and not search(r'#\s*define|typedef', function_call)):
> 1342                error(line_number, 'whitespace/parens', 4,
> 1343                      'Extra space before ( in function call')


Thanks, adding a line like
        and not search(r'\A#elif', function_call)
a few lines before 1340 can avoid the problem. But this is a hack. It doesn't seem to be right . Any suggestion on how to do it properly? I'l file a bug on this
Comment 28 Martin Robinson 2010-12-28 15:36:20 PST
Comment on attachment 77533 [details]
Proposed patch to make WebKitGtk+ build on Mac OS X

View in context: https://bugs.webkit.org/attachment.cgi?id=77533&action=review

> WebCore/config.h:139
> +// OS(DARWIN) && PLATFORM(GTK): Many Gtk related files include <libintl.h> or
> +// <glib/gi18n-lib.h>. On Mac, these two include <xlocale.h>. <xclocale.h>
> +// includes <xlocale/_ctype.h>, which uses isacii(). If we disallow ctype, 
> +// we'll have problem.

Small grammar issue here. I'll fix before landing myself.

> WebCore/platform/UUID.cpp:46
> +#elif OS(LINUX) && PLATFORM(CHROMIUM) || OS(DARWIN) && PLATFORM(GTK)

Should have a parenthesis around these. I'll fix when landing.

> WebCore/platform/UUID.cpp:96
> +#elif OS(LINUX) && PLATFORM(CHROMIUM) || OS(DARWIN) && PLATFORM(GTK)

Ditto.
Comment 29 Mark Rowe (bdash) 2010-12-28 15:46:41 PST
Why isn’t UUID.cpp looking at PLATFORM(CF) when deciding whether to use the CF-based implementation?  That seems a lot more obvious to me than the mess of conditionals in the patch.
Comment 30 Martin Robinson 2010-12-28 16:10:41 PST
Created attachment 77588 [details]
Version of the patch incorporating Sam's suggestion
Comment 31 Martin Robinson 2010-12-28 16:11:53 PST
(In reply to comment #29)
> Why isn’t UUID.cpp looking at PLATFORM(CF) when deciding whether to use the CF-based implementation?  That seems a lot more obvious to me than the mess of conditionals in the patch.

I don't have OS X here to test it, but I've uploaded a patch that takes this approach. Perhaps a Koan-Sin or Sam could test it.
Comment 32 WebKit Review Bot 2010-12-28 16:13:50 PST
Attachment 77588 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Tools/ChangeLog', u'Tools/GNUmakefile.am', u'Tools/Scripts/webkitdirs.pm', u'WebCore/ChangeLog', u'WebCore/config.h', u'WebCore/platform/UUID.cpp']" exit_code: 1
WebCore/platform/UUID.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/UUID.cpp:83:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 33 Mark Rowe (bdash) 2010-12-28 16:26:27 PST
Comment on attachment 77588 [details]
Version of the patch incorporating Sam's suggestion

That appears to send Darwin-but-not-CF down the Linux path, which won’t work.
Comment 34 Martin Robinson 2010-12-28 16:30:17 PST
(In reply to comment #33)
> (From update of attachment 77588 [details])
> That appears to send Darwin-but-not-CF down the Linux path, which won’t work.

So it sounds like there may be no good way around more #ifdefs here. Now that I think of it, I'm curious why GTK+ on OS X cannot use the CF version.
Comment 35 Koan-Sin Tan 2010-12-28 16:33:10 PST
(In reply to comment #33)
> (From update of attachment 77588 [details])
> That appears to send Darwin-but-not-CF down the Linux path, which won’t work.

Yes, it won't work because OS X doesn't have /proc/sys/kernel/random/uuid, that why I added it to the OS(LINUX) && PLATFORM(CHROMIUM) part
Comment 36 WebKit Review Bot 2010-12-28 16:37:56 PST
Attachment 77588 [details] did not build on chromium:
Build output: http://queues.webkit.org/results/7274221
Comment 37 Mark Rowe (bdash) 2010-12-28 16:41:01 PST
it could be expressed more clearly as PLATFORM(DARWIN) && !PLATFORM(CF) on the correct #elif.
Comment 38 Koan-Sin Tan 2010-12-28 16:44:55 PST
(In reply to comment #34)
> (In reply to comment #33)
> > (From update of attachment 77588 [details] [details])
> > That appears to send Darwin-but-not-CF down the Linux path, which won’t work.
> 
> So it sounds like there may be no good way around more #ifdefs here. Now that I think of it, I'm curious why GTK+ on OS X cannot use the CF version.

To use CF version, we need PLATFORM(CF) to be true before including UUID.h, or before including PlatformString.h in UUID.h. That looks unsafe
Comment 39 Mark Rowe (bdash) 2010-12-28 16:47:11 PST
(In reply to comment #34)
> (In reply to comment #33)
> > (From update of attachment 77588 [details] [details])
> > That appears to send Darwin-but-not-CF down the Linux path, which won’t work.
> 
> So it sounds like there may be no good way around more #ifdefs here.

You didn’t implement what I suggested.  What I suggested would be both clearer and correct.
Comment 40 Martin Robinson 2010-12-28 16:51:42 PST
(In reply to comment #39)
> You didn’t implement what I suggested.  What I suggested would be both clearer and correct.

Sorry. I misunderstood your first comment. I was doing some minor cleanup on the patch while you posted your comment, so it seemed weird to land it without taking a shot at doing what you suggested. From your followup comment, I see that it was incorrect. I'll let Koan-Sin follow up, since he can actually test the change.
Comment 41 Koan-Sin Tan 2010-12-28 18:43:35 PST
Created attachment 77597 [details]
patch incorporated Martin's modifications and Mark's comments

using OS(DARWIN) and PLATFORM(CF)  to determine which UUID generation function we should use UUID.cpp


Note that  #elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && !PLATFORM(CF)) will run into a bug of check-webkit-style and && has higher precedence than ||, so I just removed parentheses
Comment 42 Mark Rowe (bdash) 2010-12-28 18:53:41 PST
(In reply to comment #41)
> Note that  #elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && !PLATFORM(CF)) will run into a bug of check-webkit-style and && has higher precedence than ||, so I just removed parentheses

It would be preferable to keep the more obvious style, file a bug about the bogus warning, and then simply ignore it for this patch.
Comment 43 Koan-Sin Tan 2010-12-28 19:12:13 PST
(In reply to comment #42)
> (In reply to comment #41)
> > Note that  #elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && !PLATFORM(CF)) will run into a bug of check-webkit-style and && has higher precedence than ||, so I just removed parentheses
> 
> It would be preferable to keep the more obvious style, file a bug about the bogus warning, and then simply ignore it for this patch.

Done, bug 51695
Comment 44 Koan-Sin Tan 2011-01-05 00:57:59 PST
Created attachment 77981 [details]
proposed patch

updated patch, differences from 77597:
1. add parenthese in platform/UUID.cpp because bug 51695 is fixed
2. Tools/Scripts/webkitdirs.pm is updated because it was changed a bit
Comment 45 WebKit Review Bot 2011-01-05 01:00:56 PST
Attachment 77981 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files']" exit_code: 1
Total errors found: 0 in 0 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 46 Koan-Sin Tan 2011-01-09 18:00:28 PST
Created attachment 78359 [details]
 proposed patch

rebased: WebCore -> Source/WebCore
Comment 47 WebKit Review Bot 2011-01-09 18:21:09 PST
Attachment 78359 [details] did not build on chromium:
Build output: http://queues.webkit.org/results/7411089
Comment 48 Build Bot 2011-01-10 06:58:27 PST
Attachment 78359 [details] did not build on win:
Build output: http://queues.webkit.org/results/7413099
Comment 49 Martin Robinson 2011-01-11 09:04:53 PST
Comment on attachment 78359 [details]
 proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=78359&action=review

Looks good, but I think there is a remaining issue below.

> Source/WebCore/platform/UUID.cpp:74
> -#elif OS(DARWIN)
> +elif OS(DARWIN) && PLATFORM(CF)

I don't think it's right here to remove the #
Comment 50 Koan-Sin Tan 2011-01-11 21:08:42 PST
Created attachment 78647 [details]
proposed patch

add the # back
Comment 51 WebKit Review Bot 2011-01-11 21:47:38 PST
Attachment 78647 [details] did not build on chromium:
Build output: http://queues.webkit.org/results/7431134
Comment 52 Koan-Sin Tan 2011-01-11 21:54:04 PST
Created attachment 78651 [details]
proposed patch

a #elif in 78647 is not in the right place, sorry about that
Comment 53 Martin Robinson 2011-01-12 10:04:37 PST
Comment on attachment 78651 [details]
proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=78651&action=review

> Tools/ChangeLog:9
> +        [Gtk] WebKitGtk+ doesn't build on Mac OS X 10.6
> +        https://bugs.webkit.org/show_bug.cgi?id=50867
> +
> +        [Gtk] WebKitGtk+ doesn't build on Mac OS X 10.6
> +        https://bugs.webkit.org/show_bug.cgi?id=50867

You have a double ChangeLog line here. I'll land this and fix that.
Comment 54 Martin Robinson 2011-01-12 10:12:33 PST
Committed r75619: <http://trac.webkit.org/changeset/75619>