Bug 89125 - The whole world rebuilds when you touch any IDL file
Summary: The whole world rebuilds when you touch any IDL file
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Maciej Stachowiak
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-06-14 13:50 PDT by Maciej Stachowiak
Modified: 2013-01-11 00:41 PST (History)
10 users (show)

See Also:


Attachments
Patch (7.38 KB, patch)
2012-06-14 13:54 PDT, Maciej Stachowiak
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Maciej Stachowiak 2012-06-14 13:50:12 PDT
The whole world rebuilds when you touch any IDL file
Comment 1 Maciej Stachowiak 2012-06-14 13:54:09 PDT
Created attachment 147644 [details]
Patch
Comment 2 Maciej Stachowiak 2012-06-14 13:57:14 PDT
The introduction of Supplemental support in IDLs a while back resulted in a situation where changing any IDL file would cause every bindings file to be regenerated, even ones whose interfaces are not supplemented. As a result, this would cause nearly a world build of WebCore every time.

My attached patch fixes it for build systems that use DerivedSources.make. I do not know how to fix it for other build systems though.
Comment 3 Adam Barth 2012-06-14 14:03:04 PDT
@haraken: I thought you fixed this issue a while back.  Did this regress?
Comment 4 Maciej Stachowiak 2012-06-14 14:15:57 PDT
Committed r120361: <http://trac.webkit.org/changeset/120361>
Comment 5 Kentaro Hara 2012-06-14 17:20:16 PDT
Comment on attachment 147644 [details]
Patch

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

The approach looks reasonable. Thank you very much for fixing this.

Would it be possible to make the same change to cmake (UseJSC.cmake, UseV8.pm), qmake (DerivedSources.pri), automake (GNUMakefile.am) and GYP (WebCore.gyp)? Actually the reason why I didn't take your approach (i.e. generate makefile dynamically) was that I was not sure if I can describe the "dynamic dependencies" in other build systems than makefile (I think it would be impossible in GYP). So I had been seeking for another approach that requires static dependencies only (https://bugs.webkit.org/show_bug.cgi?id=76970). No good idea for now though:)

> Source/WebCore/DerivedSources.make:953
> -SUPPLEMENTAL_DEPENDENCY_FILE = ./supplemental_dependency.tmp
> +SUPPLEMENTAL_DEPENDENCY_FILE = ./SupplementalDependencies.txt

In the future we want to make the rename in all other build systems. ./SupplementalDependencies.txt is a better name.

> Source/WebCore/bindings/scripts/preprocess-idls.pl:115
> +    my @all_dependencies = [];

Nit: This line is not needed.
Comment 6 Adam Barth 2012-06-14 17:28:13 PDT
This isn't such a big deal in the Chromium build system because Chromium cats all the derived source files together into large compilation units anyway, so there isn't much of a difference.  I think that's why I didn't notice that this issue still existed.
Comment 7 Alexis Menard (darktears) 2012-06-25 06:30:32 PDT
(In reply to comment #4)
> Committed r120361: <http://trac.webkit.org/changeset/120361>

It broke building WebKit in Xcode with the WebKit workspace :(