Hi Alp,

On Nov 11, 2007, at 7:34 PM, Alp Toker wrote:

The existing qmake-based build system is shared by the GTK+ and Qt ports.

Until recently, this arrangement has not been too problematic for the
GTK+ porters, with the idea being that qmake makes life easier for
developers at the expense of a little inconvenience for users (in the
sense of application developers rather than end users).

However, it has recently become clear that qmake is actually making life
more difficult for developers. It turns out that the existing qmake
build system fails to do basic dependency tracking, leaving both
developers and users with crashy builds, with the only way to get a
stable build being to do a full clean and rebuild after every update.

In the last week I've had to explain why people's builds are crashing to
maybe half a dozen people on WebKit and GNOME-related channels.

Mark and I have attempted to fix the dependency tracking a number of
times, but we've both found qmake to be poorly documented, and our
attempts to fix it ended up breaking the build even more in certain
configurations. My informal attempts to get assistance from the
Trolltech guys doing the Qt port have gone unanswered. I have no doubt
that we would be able to fix these issues in a matter of minutes using a
better understood or documented build system.

Moreover, it has turned out that the qmake build dependency is more than
just a little inconvenience for users. It makes the GTK+ port
inaccessible to a lot of developers. Using anything but the latest Linux
distributions, including cross-compilation frameworks like Scratchbox,
you have to build the whole of Qt just to get qmake, which takes over an hour and almost a gigabyte of disk space for me. That's at least 5 times
as long as it takes to build the whole of JavaScriptCore, WebCore and
WebKit. Even in distributions that ship a recent binary of qmake, it is often bundled into the same binary package as the rest of Qt, making it
a seriously large dependency.

Now that the GTK+ port is getting attention from beyond a core team of
developers, I think such a heavy build dependency is no longer acceptable.


If either the Wx or Qt porters are willing to share a new build system
with the GTK+ port, they should speak up now. We're willing to consider
any build system that does not incur a huge dependency (ruling out
qmake) and that is actively maintained and does not have verbose XML
makefiles (ruling out Bakefile and Ant-like build systems respectively).
cmake and autotools are fair game here, for example.

If we cannot reach a conclusion, the GTK+ port will most likely go ahead
and switch to autotools. Work has already started to provide an
autotools-based build system at
http://git.ndesk.org/?p=javascriptcore-modular

An unforeseen benefit of the new build system is that it is modular,
rather than monolithic, and has no dependency on GLib/GTK+ or any other framework. This means that it will now be possible to use JavaScriptCore
as a standalone scripting engine independently of WebKit.


I hope I've accurately summarised the thoughts of all those involved here.

(It's quite unfortunate that we might end up contributing to the current
proliferation of build systems, but I think it's fair to say that the
qmake dependency is right now the biggest single issue holding back
development and acceptance of the GTK+ port. If other ports are willing
to compromise in the same way as we are on a shared solution, this
proliferation can still be avoided.)

Unfortunately, I don't see room to compromise on my end because neither autotools or cmake will meet my needs without a fair amount more effort on my part (effort I'd rather spend putting into improving wxWebKit itself), and I pretty much get all of the other benefits you mentioned are obtained by switching away from qmake, so there's not really any plus for me. Honestly, I find the Bakefile build system to not be very verbose at all thanks to its use of templates, which allow me to group together settings needed by various components and reuse them easily. The largest files are the *Sources.xml files, but those are very light on XML tags and are mostly text files, and are easy to update and maintain, IMHO. Over the past couple weeks, I in fact did a lot of refactoring on the build system and it was quite quick to do and I'm really pleased with the results. I haven't yet found a (cross- platform) tool that lets me be as productive as Bakefile does, which is the bottom line for me as my time is limited.

The one downside to Bakefile is that it's newer than other systems and over time I've bumped into a few rough edges, but most of those have gotten fixed. Even with having to make a few temporary workarounds, though, I find it saves me a lot of time in other areas that more than makes up for it.

Anyway, I won't press the matter; I admit I don't have a Unix background and both autotools and cmake build systems look and feel like large shell scripts to me, which I personally find hard to work with and maintain. People with a Unix background are very used to them, though, and seem to prefer them, so I guess it's just a matter of different perspectives.

Regards,

Kevin


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

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

Reply via email to