Re: [webkit-dev] webkit-patch and SVN

2010-04-15 Thread Darin Fisher
On Wed, Apr 14, 2010 at 5:06 PM, Adam Barth aba...@webkit.org wrote:

 On Wed, Apr 14, 2010 at 4:52 PM, Geoffrey Garen gga...@apple.com wrote:
  I'd rather keep the current behavior and have it operate on the entire
  repository. I think it will be too easy to make mistakes and leave out
  large portions of a patch if it only operates upon the current working
  directory.
 
  That's a fixable mistake, though, if/when it happens.
 
  Taking huge amounts of time unnecessarily diff'ing the LayoutTests
 directory is a fixed cost that is unavoidable and unfixable.

 How long is a huge amount of time?  Here are some stats from my
 laptop.  In the first run, I suspect webkit was not in my disk cache
 (since I recently compiled another checkout):

 ~/svn/webkit3$ time svn diff
 real0m23.437s
 user0m1.936s
 sys 0m7.531s

 In the second run, I suspect webkit was in my disk cache:

 ~/svn/webkit3$ time svn diff
 real0m8.929s
 user0m2.019s
 sys 0m6.012s

 ~/svn/webkit3$ svn --version
 svn, version 1.6.3 (r38063)

 If the diff is taking much longer than these times, you probably have
 a borked SVN working copy.  We've seen really slow working copies when
 the working copy was created with SVN 1.5 and then upgraded to 1.6.
 If your SVN is slow, you might consider blowing away your working copy
 and making a new one with SVN 1.6.

 Adam



This may not seem like a huge difference, but 23 seconds is enough to
encourage me to cd WebCore before running svn-create-patch or
prepare-ChangeLog.

-Darin
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] webkit-patch and SVN

2010-04-15 Thread Adam Barth
On Wed, Apr 14, 2010 at 11:47 PM, Darin Fisher da...@chromium.org wrote:
 On Wed, Apr 14, 2010 at 5:06 PM, Adam Barth aba...@webkit.org wrote:
 On Wed, Apr 14, 2010 at 4:52 PM, Geoffrey Garen gga...@apple.com wrote:
  I'd rather keep the current behavior and have it operate on the entire
  repository. I think it will be too easy to make mistakes and leave out
  large portions of a patch if it only operates upon the current working
  directory.
 
  That's a fixable mistake, though, if/when it happens.
 
  Taking huge amounts of time unnecessarily diff'ing the LayoutTests
  directory is a fixed cost that is unavoidable and unfixable.

 How long is a huge amount of time?  Here are some stats from my
 laptop.  In the first run, I suspect webkit was not in my disk cache
 (since I recently compiled another checkout):

 ~/svn/webkit3$ time svn diff
 real    0m23.437s
 user    0m1.936s
 sys     0m7.531s

 In the second run, I suspect webkit was in my disk cache:

 ~/svn/webkit3$ time svn diff
 real    0m8.929s
 user    0m2.019s
 sys     0m6.012s

 ~/svn/webkit3$ svn --version
 svn, version 1.6.3 (r38063)

 If the diff is taking much longer than these times, you probably have
 a borked SVN working copy.  We've seen really slow working copies when
 the working copy was created with SVN 1.5 and then upgraded to 1.6.
 If your SVN is slow, you might consider blowing away your working copy
 and making a new one with SVN 1.6.

 This may not seem like a huge difference, but 23 seconds is enough to
 encourage me to cd WebCore before running svn-create-patch or
 prepare-ChangeLog.

Does that mean you're not writing tests for your changes?  ;)

I don't have a good sense for what SVN workflows are like.  I've
switched over to SVN for a bit to try to understand how it works, but
I haven't learned all the tricks yet.

Adam
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] webkit-patch and SVN

2010-04-15 Thread Darin Fisher
On Thu, Apr 15, 2010 at 12:09 AM, Adam Barth aba...@webkit.org wrote:

 On Wed, Apr 14, 2010 at 11:47 PM, Darin Fisher da...@chromium.org wrote:
  On Wed, Apr 14, 2010 at 5:06 PM, Adam Barth aba...@webkit.org wrote:
  On Wed, Apr 14, 2010 at 4:52 PM, Geoffrey Garen gga...@apple.com
 wrote:
   I'd rather keep the current behavior and have it operate on the
 entire
   repository. I think it will be too easy to make mistakes and leave
 out
   large portions of a patch if it only operates upon the current
 working
   directory.
  
   That's a fixable mistake, though, if/when it happens.
  
   Taking huge amounts of time unnecessarily diff'ing the LayoutTests
   directory is a fixed cost that is unavoidable and unfixable.
 
  How long is a huge amount of time?  Here are some stats from my
  laptop.  In the first run, I suspect webkit was not in my disk cache
  (since I recently compiled another checkout):
 
  ~/svn/webkit3$ time svn diff
  real0m23.437s
  user0m1.936s
  sys 0m7.531s
 
  In the second run, I suspect webkit was in my disk cache:
 
  ~/svn/webkit3$ time svn diff
  real0m8.929s
  user0m2.019s
  sys 0m6.012s
 
  ~/svn/webkit3$ svn --version
  svn, version 1.6.3 (r38063)
 
  If the diff is taking much longer than these times, you probably have
  a borked SVN working copy.  We've seen really slow working copies when
  the working copy was created with SVN 1.5 and then upgraded to 1.6.
  If your SVN is slow, you might consider blowing away your working copy
  and making a new one with SVN 1.6.
 
  This may not seem like a huge difference, but 23 seconds is enough to
  encourage me to cd WebCore before running svn-create-patch or
  prepare-ChangeLog.

 Does that mean you're not writing tests for your changes?  ;)

 I don't have a good sense for what SVN workflows are like.  I've
 switched over to SVN for a bit to try to understand how it works, but
 I haven't learned all the tricks yet.

 Adam



It is common for me to re-create WebCore/ChangeLog as I modify my solution,
and I've also worked on a fair number of patches that are just porting /
getting existing tests to pass :-/

My workflow with svn is to work from a subdirectory if I can to minimize the
cost of svn operations.  If I need to work from the topmost directory, then
I typically specify the directories I'm interested in on the svn command
line (e.g., svn commit WebCore LayoutTests).  That way the commands run
faster.

-Darin
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Qt is now a core builder

2010-04-15 Thread William Siegrist
One thing I noticed is that the Core-only waterfall does not show any changes 
in the change column (because we're not sending them with any specific 
category). If that bothers anyone, I can change the svn hooks. The console does 
not have this problem. 

-Bill


On Apr 15, 2010, at 6:22 AM, William Siegrist wrote:

 The master has been reconfigured. Now there are two links, Core Console and 
 Core Waterfall on the main page which will show just the core builders. The 
 regular Console view also separates the builders by category, but will show 
 all of them. 
 
 -Bill
 
 
 
 On Apr 14, 2010, at 9:17 AM, William Siegrist wrote:
 
 I was thinking of something like the following, assuming we want to have 
 core builders still. The URL to see only core builders would be:
 
 http://build.webkit.org/console?category=core
 http://build.webkit.org/waterfall?category=core
 
 ... and we could use redirects or just add new links to the main page.
 
 
 
 Index: master.cfg
 ===
 --- master.cfg   (revision 57518)
 +++ master.cfg   (working copy)
 @@ -16,6 +16,8 @@
 import re
 import simplejson
 
 +from webkitpy.common.net.buildbot import BuildBot as wkbuildbot
 +
 WithProperties = properties.WithProperties
 
 class ConfigureBuild(buildstep.BuildStep):
 @@ -369,6 +371,9 @@
 
config = simplejson.load(open('config.json'))
 
 +# use webkitpy's buildbot module to test for core builders
 +wkbb = wkbuildbot()
 +
c['slaves'] = [BuildSlave(slave['name'], passwords[slave['name']], 
 max_builds=1) for slave in config['slaves']]
 
c['schedulers'] = []
 @@ -397,6 +402,10 @@
 
builder[factory] = factory(*factoryArgs)
 
 +builder[category] = noncore
 +if wkbb._is_core_builder(builder['name']):
 +builder[category] = core
 +
c['builders'].append(builder)
 
 loadBuilderConfig(c)
 
 
 
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] svn stopped to commit into WebKit

2010-04-15 Thread Anton Muhin
Dear WebKitters,

just a couple of moments ago svn stopped to commit into WebKit for me:

svn: Commit blocked by pre-commit hook (exit code 1) with output:
svnlook: Can't write to stream: Broken pipe

The following files contain tab characters:

trunk/LayoutTests/ChangeLog

Please use spaces instead to indent.
If you must commit a file with tabs, use svn propset to set the
allow-tabs property.

Any chances someone is changing pre-commit hooks?  And if yes, was
this change intentional?

tia and yours,
anton.
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] svn stopped to commit into WebKit

2010-04-15 Thread William Siegrist
On Apr 15, 2010, at 6:54 AM, Anton Muhin wrote:

 Dear WebKitters,
 
 just a couple of moments ago svn stopped to commit into WebKit for me:
 
 svn: Commit blocked by pre-commit hook (exit code 1) with output:
 svnlook: Can't write to stream: Broken pipe
 
The following files contain tab characters:
 
trunk/LayoutTests/ChangeLog
 
Please use spaces instead to indent.
If you must commit a file with tabs, use svn propset to set the
 allow-tabs property.
 
 Any chances someone is changing pre-commit hooks?  And if yes, was
 this change intentional?


No one has touched the pre-commit hook in a while. Are you sure you do not have 
tabs in your LayoutTests/ChangeLog?

-Bill


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] svn stopped to commit into WebKit

2010-04-15 Thread Anton Muhin
Thanks a lot, William, probably that was the case although I did
checked that before.

Anyway, I managed to commit.

yours,
anton.

On Thu, Apr 15, 2010 at 2:07 PM, William Siegrist wsiegr...@apple.com wrote:
 On Apr 15, 2010, at 6:54 AM, Anton Muhin wrote:

 Dear WebKitters,

 just a couple of moments ago svn stopped to commit into WebKit for me:

 svn: Commit blocked by pre-commit hook (exit code 1) with output:
 svnlook: Can't write to stream: Broken pipe

    The following files contain tab characters:

        trunk/LayoutTests/ChangeLog

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the
 allow-tabs property.

 Any chances someone is changing pre-commit hooks?  And if yes, was
 this change intentional?


 No one has touched the pre-commit hook in a while. Are you sure you do not 
 have tabs in your LayoutTests/ChangeLog?

 -Bill



___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] webkit-patch and SVN

2010-04-15 Thread Alexey Proskuryakov

15.04.2010, в 00:37, Darin Fisher написал(а):

 If I need to work from the topmost directory, then I typically specify the 
 directories I'm interested in on the svn command line (e.g., svn commit 
 WebCore LayoutTests).  That way the commands run faster.

That's what I usually do, but I rarely pass the whole LayoutTests directory:

prepare-ChangeLog WebCore LayoutTests/fast/dom
svn ci WebCore LayoutTests/fast/dom LayoutTests/ChangeLog

- WBR, Alexey Proskuryakov

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Qt is now a core builder

2010-04-15 Thread Ojan Vafai
omg. The green (and orange) is blinding me:
build.webkit.org/waterfall?category=core.

Bill, I tend to rely on seeing the changes in the change column. It's not
the end of the world, but if it's not too hard to do, I'd appreciate
changing the svn hooks.

Ojan

On Thu, Apr 15, 2010 at 6:49 AM, William Siegrist wsiegr...@apple.comwrote:

 One thing I noticed is that the Core-only waterfall does not show any
 changes in the change column (because we're not sending them with any
 specific category). If that bothers anyone, I can change the svn hooks. The
 console does not have this problem.

 -Bill


 On Apr 15, 2010, at 6:22 AM, William Siegrist wrote:

  The master has been reconfigured. Now there are two links, Core Console
 and Core Waterfall on the main page which will show just the core builders.
 The regular Console view also separates the builders by category, but will
 show all of them.
 
  -Bill
 
 
 
  On Apr 14, 2010, at 9:17 AM, William Siegrist wrote:
 
  I was thinking of something like the following, assuming we want to have
 core builders still. The URL to see only core builders would be:
 
  http://build.webkit.org/console?category=core
  http://build.webkit.org/waterfall?category=core
 
  ... and we could use redirects or just add new links to the main page.
 
 
 
  Index: master.cfg
  ===
  --- master.cfg   (revision 57518)
  +++ master.cfg   (working copy)
  @@ -16,6 +16,8 @@
  import re
  import simplejson
 
  +from webkitpy.common.net.buildbot import BuildBot as wkbuildbot
  +
  WithProperties = properties.WithProperties
 
  class ConfigureBuild(buildstep.BuildStep):
  @@ -369,6 +371,9 @@
 
 config = simplejson.load(open('config.json'))
 
  +# use webkitpy's buildbot module to test for core builders
  +wkbb = wkbuildbot()
  +
 c['slaves'] = [BuildSlave(slave['name'], passwords[slave['name']],
 max_builds=1) for slave in config['slaves']]
 
 c['schedulers'] = []
  @@ -397,6 +402,10 @@
 
 builder[factory] = factory(*factoryArgs)
 
  +builder[category] = noncore
  +if wkbb._is_core_builder(builder['name']):
  +builder[category] = core
  +
 c['builders'].append(builder)
 
  loadBuilderConfig(c)
 
 
 
 
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
  http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
  http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] Implementing the sizes attribute of the link tag from HTML5

2010-04-15 Thread Aaron Boodman
I would like to do it. See bug: https://bugs.webkit.org/show_bug.cgi?id=37674

Thoughts?

- a
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Implementing the sizes attribute of the link tag from HTML5

2010-04-15 Thread Dimitri Glazkov
Do it.

:DG

On Thu, Apr 15, 2010 at 2:22 PM, Aaron Boodman a...@chromium.org wrote:
 I would like to do it. See bug: https://bugs.webkit.org/show_bug.cgi?id=37674

 Thoughts?

 - a
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Implementing the sizes attribute of the link tag from HTML5

2010-04-15 Thread Maciej Stachowiak


On Apr 15, 2010, at 2:22 PM, Aaron Boodman wrote:


I would like to do it. See bug: https://bugs.webkit.org/show_bug.cgi?id=37674

Thoughts?



Seems like a good idea in general.

More specifically, what would the implementation do? The bug explains  
the syntax, but not how it would affect WebKit's behavior. (It would  
be fine, perhaps preferable, to put that info in the bug).


Regards,
Maciej

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Implementing the sizes attribute of the link tag from HTML5

2010-04-15 Thread Aaron Boodman
On Thu, Apr 15, 2010 at 3:09 PM, Maciej Stachowiak m...@apple.com wrote:

 On Apr 15, 2010, at 2:22 PM, Aaron Boodman wrote:

 I would like to do it. See bug:
 https://bugs.webkit.org/show_bug.cgi?id=37674

 Thoughts?


 Seems like a good idea in general.

 More specifically, what would the implementation do? The bug explains the
 syntax, but not how it would affect WebKit's behavior. (It would be fine,
 perhaps preferable, to put that info in the bug).

I'm not sure. I haven't looked at the existing implementation at all.
I wanted to make sure there was general consensus before diving in.
Once I have a proposed plan of attack, I will put it in the bug.

- a
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Qt is now a core builder

2010-04-15 Thread William Siegrist
On Apr 15, 2010, at 8:59 AM, Ojan Vafai wrote:

 omg. The green (and orange) is blinding me: 
 build.webkit.org/waterfall?category=core.
 
 Bill, I tend to rely on seeing the changes in the change column. It's not the 
 end of the world, but if it's not too hard to do, I'd appreciate changing the 
 svn hooks.
 


I've updated the hooks, changes now show up on the waterfall again. 

-Bill
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Implementing the sizes attribute of the link tag from HTML5

2010-04-15 Thread Maciej Stachowiak


On Apr 15, 2010, at 3:14 PM, Aaron Boodman wrote:

On Thu, Apr 15, 2010 at 3:09 PM, Maciej Stachowiak m...@apple.com  
wrote:


On Apr 15, 2010, at 2:22 PM, Aaron Boodman wrote:


I would like to do it. See bug:
https://bugs.webkit.org/show_bug.cgi?id=37674

Thoughts?



Seems like a good idea in general.

More specifically, what would the implementation do? The bug  
explains the
syntax, but not how it would affect WebKit's behavior. (It would be  
fine,

perhaps preferable, to put that info in the bug).


I'm not sure. I haven't looked at the existing implementation at all.
I wanted to make sure there was general consensus before diving in.
Once I have a proposed plan of attack, I will put it in the bug.


Well, it's hard to truly have consensus on adding feature without  
knowing what it is. That being said, I at least would love to see a  
more specific proposal for what we could do with link size.


Regards,
Maciej

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Implementing the sizes attribute of the link tag from HTML5

2010-04-15 Thread Aaron Boodman
On Thu, Apr 15, 2010 at 3:25 PM, Maciej Stachowiak m...@apple.com wrote:
 Well, it's hard to truly have consensus on adding feature without knowing
 what it is. That being said, I at least would love to see a more specific
 proposal for what we could do with link size.

I want to support bigger icons for the tabs in Chromium.

I'm not sure what the path is for fetching favicons today. Does
WebCore just implicitly do it, or does it expose the information to
the host, who later may or may not make the request?

I would like Chromium to be able to decide which icon to use from the
list on a per-document basis, so if WebCore currently assumes that any
favicon present should be loaded (or if that is configuration that is
set at a pretty high level), I would want to change that as well.

- a
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] Clean way to allow delegates for PopupMenu?

2010-04-15 Thread Gustavo Sverzut Barbieri
Hello all,

I'm part of the EFL port team and we're implementing the PopupMenu,
however EFL is a different platform as for our port it is just a
state-full canvas, not relying on any widget set/toolkit, we do not
have the concept of a menu at all!

Looking at all existing implementations, they all go straight to
native platform menus. But we can't as we want to avoid such
dependencies. What we'd like to have is a delegate, that WebCore calls
the ChromeClient that is overloaded in WebKit, giving our View user a
callback with all data.

The good news is: we did it and it works quite well.

The bad news is: we cheated and include WebKit/efl/WebCoreSupport from
PopupMenuEfl.cpp, what a shame! (although some ports *cough qt*
include in WebCore defines from WebKit)

In order to have a clean design, we'd like to know the general opinion
on how to do it. From what I see Mac already defines a similar call in
ChromeClient.h:

#if PLATFORM(MAC)
...
virtual void willPopUpMenu(NSMenu *) { }
#endif

in our case, we'd need:

#if PLATFORM(EFL)
virtual void showPopupMenu(const IntRect rect, FrameView*
view, int index) { }
virtual void hidePopupMenu() { }
#endif

so our PopupMenuEfl.cpp will just proxy to these calls.

However, although Mac does that it may not be the best solution, so to
avoid endless patches to be discussed at bugzilla I'd like to know
your opinion on the best way so our patch is right from beginning.

Regards,

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--
MSN: barbi...@gmail.com
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] [webkit meeting notes] build systems

2010-04-15 Thread Gustavo Sverzut Barbieri
On Wed, Apr 14, 2010 at 4:16 PM, Evan Martin e...@chromium.org wrote:
 On Tuesday some people gathered to discuss the build-system bingo
 within WebKit and what we can do to reduce (if not unify) the number
 of project files you need to modify when you rename a file.  I took
 the stage as a representative of Chromium's gyp project (I am
 responsible for its Linux Makefile generator).

 Here's a quick list of the different ports I'm aware of and their
 build systems.  (Sorry for the non-monospaced tabbing, hope it comes
 out ok...)

 mac        xcode
 win          vcproj
 qt            qmake (cross-platform output)
 gtk          autotools
 android    Android.mk  (I heard rumors Android isn't actually upstream
 yet, though (?))
 chrome    gyp  (cross-platform output)
 haiku       jam (?)
 brew        waf (?)

 derivative builds:
 rim          hacked version of qt (qmake)
 efl           qmake

actually we were using automake to share with gtk, but it is becoming
a mess and we're trying to help clean it. as it might not happen we
are almost done with a cmake version... adding even more entropy :-P


 sony        autotools (like gtk)
 wincairo   win + vsprops
 wince       like wincairo (different platforms: use a tree of vcproj)
 air           hacked win (?)

 Nobody is happy with the current situation where you must edit seven
 files to avoid breaking someone's build; the question is what concrete
 steps can improve it.  Everyone present seemed at least mildly
 positive on migrating to other systems, though everyone is also
 understandably skeptical of how much work would be involved.

 We (Googlers) built gyp to deal with this exact problem -- building
 Chrome (including WebKit) on Win/Mac/Linux while still producing
 natural build files for the existing IDEs.  (On Linux, we generate
 non-recursive Makefiles that get dependencies correct.)  It would take
 a non-zero amount of work to use it for building things that are not
 Chrome, as in one interpretation gyp's input data is kind of just a
 glorified ls -R in JSON syntax, but it has worked well for us.

 In general, the more complicated your platform gets (like the many
 varieties of WinCE out there) the more complicated your build system
 needs are, so I expect those would be the most work to change.  (For
 example, the RIM build generates Makefiles on Windows but doesn't use
 Visual Studio or the MS compiler, which is pretty esoteric from a
 build system feature checklist perspective.  On the other hand, they
 said it takes 7 minutes to finish generation on a fast computer, so
 they might be more interested than others in alternatives.)

 But particularly for the relatively simple builds (like the win/mac
 ports) it is likely that gyp would be adequate without much work.
 Perhaps they could serve as a proving ground for gyp.

 Concretely, I'd propose:
 - strongly encourage newer ports to hook on to an existing build,
 since new build systems add overhead for everyone
 - chromium/gyp developers should prove gyp by making it build a
 non-chromium port; that includes subtasks of
  - getting the gyp+jsc build working again (it has worked in the past)
  - see how close to the existing mac/win build files we can get with gyp

 In particular, if we can generate build files like the Apple Windows
 WebKit port, there are other projects like the Windows Cairo build and
 the WinCE work that could hopefully benefit with minor tweaking.

 From there, it would probably fall on other builds (qmake, autotools)
 to see if they can benefit from gyp's shared file lists.  From my
 brief tinkering with the GTK build I think I could generate
 Makefile.am's pretty easily; I lack experience with qmake.  But I also
 think it would be a good thing to simply reduce the number of build
 systems

EFL port is fine with whatever builds. As I just finished writing the
CMake based on autotools from GTK with quick look at Qt's and others,
I can give some useful input and review:

  1. generators need to be normalized, really. At least input/output
files need conversions to help them to be made by automatic rules.
Some scripts take input and output as parameters, some assumes files
are in the current directory and generates others in the current
directory. Others reads such information from .in makefiles and can
generate file names that are impossible to guess from the command
itself without reading the actual input files! :-(   DerivedSources...
but also generated sources elsewhere... needs to normalize it as well.

   2. while common parts are pretty straightforward to share, the
number of customization options makes the system a mess. That was one
of the biggest problems of sharing autotools with GTK, the if OPTION
then SOMETHING endif became huge.   Most of the SOMETHING is quite
similar, so if we enforce naming schemes we can have general rules
that does something like:   Option$PORT.xyz, and it will work for all
ports that supports it.   Having a configuration system that shares is

Re: [webkit-dev] [webkit meeting notes] build systems

2010-04-15 Thread Kevin Ollivier
Hi Evan,

On Apr 14, 2010, at 5:16 PM, Evan Martin wrote:

 On Tuesday some people gathered to discuss the build-system bingo
 within WebKit and what we can do to reduce (if not unify) the number
 of project files you need to modify when you rename a file.  I took
 the stage as a representative of Chromium's gyp project (I am
 responsible for its Linux Makefile generator).
 
 Here's a quick list of the different ports I'm aware of and their
 build systems.  (Sorry for the non-monospaced tabbing, hope it comes
 out ok...)
 
 macxcode
 win  vcproj
 qtqmake (cross-platform output)
 gtk  autotools
 androidAndroid.mk  (I heard rumors Android isn't actually upstream
 yet, though (?))
 chromegyp  (cross-platform output)
 haiku   jam (?)
 brewwaf (?)

wx uses waf, not sure about brew.

 derivative builds:
 rim  hacked version of qt (qmake)
 efl   qmake
 sonyautotools (like gtk)
 wincairo   win + vsprops
 wince   like wincairo (different platforms: use a tree of vcproj)
 air   hacked win (?)
 
 Nobody is happy with the current situation where you must edit seven
 files to avoid breaking someone's build; the question is what concrete
 steps can improve it.  Everyone present seemed at least mildly
 positive on migrating to other systems, though everyone is also
 understandably skeptical of how much work would be involved.

[snip]

 Concretely, I'd propose:
 - strongly encourage newer ports to hook on to an existing build,
 since new build systems add overhead for everyone
 - chromium/gyp developers should prove gyp by making it build a
 non-chromium port; that includes subtasks of
  - getting the gyp+jsc build working again (it has worked in the past)
  - see how close to the existing mac/win build files we can get with gyp
 
 In particular, if we can generate build files like the Apple Windows
 WebKit port, there are other projects like the Windows Cairo build and
 the WinCE work that could hopefully benefit with minor tweaking.
 
 From there, it would probably fall on other builds (qmake, autotools)
 to see if they can benefit from gyp's shared file lists.  From my
 brief tinkering with the GTK build I think I could generate
 Makefile.am's pretty easily; I lack experience with qmake.  But I also
 think it would be a good thing to simply reduce the number of build
 systems

FWIW, for the wx build, I have waf calculate a list of sources to build by 
passing in a set of directories (also used for setting includes) and rules 
about feature defines and port info. So a sample rule list might be compile 
any source file in any of the following root directories, and also compile any 
source file in any wx and curl subdirectory, along with any source file in a cf 
subdirectory when building on Mac. Thanks to the highly structured nature of 
the WebKit build system, this works surprisingly well. Compiling a source file 
list (of even 1200+ files) actually adds almost no time to the build but has 
saved me many hours of patching build file lists and/or sharing that 
maintenance work with some other port. 90% of the build fixes I have to commit 
these days are new platform methods that need a port implementation (or at 
least a stub).

Since waf is really just a Python API, this is all done in straight Python, and 
outside of the addition of new directories, I almost never need to update the 
build system, which is probably one reason most contributors hardly ever touch 
wx or notice it anymore, even though we're still out there chugging along at 
filling the implementation holes. ;-) 

Anyway, my $0.02 is that, in terms of immediate bang for the buck, we're 
probably better off trying to synchronize the build systems automatically in 
some way. My perception is that Qt developers will want to use qmake, GTK will 
want to use autotools, etc. and while some build systems could certainly be 
merged (e.g. as you say the Win and Mac projects for WebKit itself could be 
gyp-generated), I don't think we'll ever really narrow it down to one master 
system for a variety of reasons. I do, however, think we may be able to narrow 
the 'build system updating' process down to one step / one script that updates 
all ports simultaneously, and do so without too much effort. Since most build 
systems out there have their data stored in either XML or plain text, 
converting a build file list from one build system's data format to another is 
probably not more than a few hours of Python hacking, if that. I even long ago 
made a start on such an approach in WebKitTools/Scripts/update-sourc
 es-list.py, that used the old Bakefile XML to grab the list of common WebCore 
sources, but I bet it could be updated to pull from the .gyp file lists in no 
time. 

I really think someone should seriously consider investing some time and 
resources into improving this issue though, updating a build system doesn't 
take long but updating 7-10 build systems on almost a 

Re: [webkit-dev] [webkit meeting notes] build systems

2010-04-15 Thread Peter Kasting
On Thu, Apr 15, 2010 at 9:15 PM, Kevin Ollivier kev...@theolliviers.comwrote:

 Anyway, my $0.02 is that, in terms of immediate bang for the buck, we're
 probably better off trying to synchronize the build systems automatically in
 some way. My perception is that Qt developers will want to use qmake, GTK
 will want to use autotools, etc. and while some build systems could
 certainly be merged (e.g. as you say the Win and Mac projects for WebKit
 itself could be gyp-generated), I don't think we'll ever really narrow it
 down to one master system for a variety of reasons. I do, however, think we
 may be able to narrow the 'build system updating' process down to one step /
 one script that updates all ports simultaneously, and do so without too much
 effort.


If I'm not mistaking you, that seems to be the route Evan is discussing,
with his concrete proposal being to investigate the feasibility of making
gyp be the mechanism by which various different build systems can be
generated from a single place (rather than seven).  Or is this not what you
were saying?

Since most build systems out there have their data stored in either XML or
 plain text, converting a build file list from one build system's data format
 to another is probably not more than a few hours of Python hacking, if that.


Indeed, we already have MSVC/XCode/makefile generators for gyp, I would
assume that given those, a generator for e.g. qmake wouldn't be hard.

I really think someone should seriously consider investing some time and
 resources into improving this issue though, updating a build system doesn't
 take long but updating 7-10 build systems on almost a daily basis probably
 adds up to some pretty significant amount of time and energy that could
 probably be spent on better things.


I think that is the shared viewpoint that has led to this discussion.

PK
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev