Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Issue 212983010: Make EventInterfaces.in build step not depend on bindings generation (Closed)

Created:
6 years, 9 months ago by Nils Barth (inactive)
Modified:
6 years, 8 months ago
CC:
blink-reviews, kojih, arv+blink, jsbell+bindings_chromium.org, sof, kouhei+bindings_chromium.org, marja+watch_chromium.org, adamk+blink_chromium.org, Nate Chapin, Inactive, acolwell GONE FROM CHROMIUM
Visibility:
Public.

Description

Make EventInterfaces.in build step not depend on bindings generation Currently EventInterfaces.in generation is causing build problems (fail to rebuild) because it does not specify dependencies correctly, and it is not depended on correctly. Fixing this is hard because of wonky circular dependency between core/ and bindings/. This fixes it by moving EventInterfaces.in generation to a separate file, core_bindings_generated.gyp, and having a static list of event interfaces, so EventInterfaces.in generation does not depend on any other build steps, breaking the cycle. The build action stays in bindings/, because it depends on .idl files in modules/, and we don't want build dependencies of core/ on modules/. This also does some cleanup of generated_bindings.gyp and bindings.gypi, which incidentally moves ServiceWorkerGlobalScopeConstructors.idl into gen/blink (where it belongs), not gen/. (For ease of reviewing it doesn't move the Python file, but I can move it to build/scripts in a followup.) == Details == The simple fix for EventInterfaces.in generation (adding dependencies) creates a circular dependency between .gyp files, which causes Mac build bot to fail. (This isn't a circular dependency between GYP *targets*, so builds correctly on other platforms), Breaking the circular dependency by omitting it breaks Android build. The specific dependency problem is that core/core_generated.gyp:make_core_generated ...needs to depend on generation of EventInterfaces.in, ...which is currently in bindings/generated_bindings.gyp:generated_bindings but this depends on core/core_generated.gyp:generated_testing_idls (for generated IDL files), which creates a cycle of *files*: core/core_generated.gyp -> bindings/generated_bindings.gyp -> core/core_generated.gyp We break this by having core/core_generated.gyp:make_core_generated depend on bindings/core_bindings_generated.gyp:core_bindings_generated ...which has no dependency targets. The dependency on bindings/ is because current EventInterfaces.in generation dynamically computes the list of event interfaces (based on ancestry: inherits from Event), which depends on the global 'compute_interfaces_info' step in bindings/, which computes ancestry and a whole lot more. This can be solved by instead having a static list of event interface IDL files, which breaks the dependency, and also avoids unnecessary regenerations (only regen on event .idl file changes, not any .idl file change) and simplifies the code. Previous build failure/proposed fix: Add RuntimeEnabled info to InterfaceInfo.pickle. https://codereview.chromium.org/208953004/ Quick fix: Fix dependencies for EventInterfaces.in https://codereview.chromium.org/209723002/ ...reverted in: Revert of Fix dependencies for EventInterfaces.in https://codereview.chromium.org/212713002/ R=abarth, haraken BUG=341748 BUG=358074 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=170628

Patch Set 1 #

Total comments: 6

Patch Set 2 : Move back to bindings/ #

Patch Set 3 : Fix Mac cycle and Windows typo #

Patch Set 4 : Simple --write-file-only-if-changed #

Patch Set 5 : Comment fix #

Patch Set 6 : Reorder #

Total comments: 5

Patch Set 7 : Update .idl file list #

Unified diffs Side-by-side diffs Delta from patch set Stats (+215 lines, -142 lines) Patch
M Source/bindings/bindings.gypi View 1 2 3 4 5 6 2 chunks +38 lines, -22 lines 0 comments Download
A Source/bindings/core_bindings_generated.gyp View 1 2 3 1 chunk +52 lines, -0 lines 0 comments Download
M Source/bindings/generated_bindings.gyp View 1 2 3 10 chunks +26 lines, -73 lines 0 comments Download
M Source/bindings/scripts/generate_event_interfaces.py View 5 chunks +10 lines, -21 lines 0 comments Download
M Source/core/core.gyp View 1 2 3 4 5 6 chunks +26 lines, -26 lines 0 comments Download
M Source/core/core.gypi View 1 2 3 4 5 6 1 chunk +37 lines, -0 lines 0 comments Download
M Source/core/core_generated.gyp View 1 2 1 chunk +1 line, -0 lines 0 comments Download
M Source/modules/modules.gypi View 1 1 chunk +25 lines, -0 lines 0 comments Download

Messages

Total messages: 25 (0 generated)
Nils Barth (inactive)
Hi Adam and haraken, Per description, EventInterfaces.in is causing build problems, and simple 1-line fixes ...
6 years, 9 months ago (2014-03-27 06:43:51 UTC) #1
haraken
https://codereview.chromium.org/212983010/diff/1/Source/core/core_generated.gyp File Source/core/core_generated.gyp (right): https://codereview.chromium.org/212983010/diff/1/Source/core/core_generated.gyp#newcode35 Source/core/core_generated.gyp:35: '../modules/modules.gypi', # for list of event IDL files On ...
6 years, 9 months ago (2014-03-27 07:08:59 UTC) #2
Nils Barth (inactive)
https://codereview.chromium.org/212983010/diff/1/Source/core/core_generated.gyp File Source/core/core_generated.gyp (right): https://codereview.chromium.org/212983010/diff/1/Source/core/core_generated.gyp#newcode35 Source/core/core_generated.gyp:35: '../modules/modules.gypi', # for list of event IDL files On ...
6 years, 9 months ago (2014-03-27 07:14:12 UTC) #3
abarth-chromium
On 2014/03/27 07:14:12, Nils Barth wrote: > core/ already depends on bindings/ that depends on ...
6 years, 9 months ago (2014-03-27 20:44:00 UTC) #4
Nils Barth (inactive)
On 2014/03/27 20:44:00, abarth wrote: > On 2014/03/27 07:14:12, Nils Barth wrote: > > core/ ...
6 years, 9 months ago (2014-03-28 11:38:07 UTC) #5
Nils Barth (inactive)
Just chatted with haraken about this, and recalled your Feb 7 email about this: https://groups.google.com/a/chromium.org/d/msg/blink-dev/A8QOwy6coqA/JWkh-g-hTY8J ...
6 years, 9 months ago (2014-03-28 11:58:30 UTC) #6
haraken
On 2014/03/28 11:58:30, Nils Barth wrote: > Just chatted with haraken about this, and recalled ...
6 years, 9 months ago (2014-03-28 12:00:17 UTC) #7
abarth-chromium
On 2014/03/28 12:00:17, haraken wrote: > On 2014/03/28 11:58:30, Nils Barth wrote: > > Just ...
6 years, 9 months ago (2014-03-28 17:33:21 UTC) #8
acolwell GONE FROM CHROMIUM
If this results in a new CL being created, could you please be sure to ...
6 years, 9 months ago (2014-03-28 20:06:10 UTC) #9
haraken
On 2014/03/28 17:33:21, abarth wrote: > On 2014/03/28 12:00:17, haraken wrote: > > On 2014/03/28 ...
6 years, 9 months ago (2014-03-29 01:53:30 UTC) #10
Nils Barth (inactive)
On 2014/03/28 20:06:10, acolwell wrote: > If this results in a new CL being created, ...
6 years, 8 months ago (2014-03-31 05:26:41 UTC) #11
Nils Barth (inactive)
Revised; PTAL. This now keeps it in bindings/ and just fixes the dependencies (adds 2 ...
6 years, 8 months ago (2014-04-01 06:20:38 UTC) #12
haraken
LGTM. Looks like this CL doesn't add any problematic dependency.
6 years, 8 months ago (2014-04-01 07:50:07 UTC) #13
Nils Barth (inactive)
On 2014/04/01 07:50:07, haraken wrote: > LGTM. > > Looks like this CL doesn't add ...
6 years, 8 months ago (2014-04-01 08:00:29 UTC) #14
abarth-chromium
lgtm
6 years, 8 months ago (2014-04-01 16:49:47 UTC) #15
Nils Barth (inactive)
The CQ bit was checked by nbarth@chromium.org
6 years, 8 months ago (2014-04-02 00:53:07 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/nbarth@chromium.org/212983010/80001
6 years, 8 months ago (2014-04-02 00:53:24 UTC) #17
commit-bot: I haz the power
The CQ bit was unchecked by commit-bot@chromium.org
6 years, 8 months ago (2014-04-02 01:10:26 UTC) #18
commit-bot: I haz the power
Try jobs failed on following builders: tryserver.blink on win_blink_rel
6 years, 8 months ago (2014-04-02 01:10:26 UTC) #19
Nils Barth (inactive)
The CQ bit was checked by nbarth@chromium.org
6 years, 8 months ago (2014-04-02 01:47:29 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/nbarth@chromium.org/212983010/100001
6 years, 8 months ago (2014-04-02 01:47:35 UTC) #21
Nils Barth (inactive)
The CQ bit was unchecked by nbarth@chromium.org
6 years, 8 months ago (2014-04-02 01:47:42 UTC) #22
Nils Barth (inactive)
The CQ bit was checked by nbarth@chromium.org
6 years, 8 months ago (2014-04-02 01:51:53 UTC) #23
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/nbarth@chromium.org/212983010/100001
6 years, 8 months ago (2014-04-02 01:51:56 UTC) #24
commit-bot: I haz the power
6 years, 8 months ago (2014-04-02 02:57:05 UTC) #25
Message was sent while issue was closed.
Change committed as 170628

Powered by Google App Engine
This is Rietveld 408576698