New issue
Advanced search Search tips

Issue 756607 link

Starred by 8 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug

Blocked on:
issue 761839

Blocking:
issue 495204



Sign in to add a comment

Come up with a plan for mc.exe and midl.exe for cross-compilation

Project Member Reported by thakis@chromium.org, Aug 17 2017

Issue description

We use mc.exe in the Windows build in 3 places, and midl.exe in 4 places.

Reimplementing the bits of mc that we use in python doesn't look toooo horrible (see mc.py https://chromium-review.googlesource.com/c/614060 for enough for the .man bits we use, doesn't implement the .mc bits yet).

Reimplementing the midl bits is probably kind of annoying.


scottmg says we should just check in the output of mc/midl and call it a day. I first thought mc.py doesn't look that bad, and if we add more uses of it, mc.py could grow to support that, and then people could also do .man / .mc changes on linux.

But since we use these tools in so very few places, I now kind of agree with scottmg to do the simple thing first and just check in the outputs.

(There's precedent: https://cs.chromium.org/chromium/src/remoting/host/win/com_imported_mstscax.tlh?q=com_imported_mstscax.tlh&sq=package:chromium&dr The output of mc has a "Copyright Microsoft" thingy though. I talked to legal and it sounds like it's cool if we check in the output somewhere in third_party though.)


So if that sounds fine to folks, I'll go and check in these outputs. Do people have opinions on how fancy we should make things?

* Not fancy at all: Change .gn files to reference the generated files, remove gn stuff for running midl / rc
* Somewhat fancy: Keep gn stuff for running mild/rc. When on a Windows host, run mc / midl, and if the output is different from what's checked in, overwrite the checked-in files. If on a non-Windows host, copy the checked-in files to the output.

I kind of like "somewhat fancy", but I also liked writing my own mc.py (which I now feel like backtracking on).

cc'ing authors of some of our mc.exe / midl.exe inputs.
 
I kind of like "somewhat fancy" or something along those lines. I would like something that has the property that if we try to upgrade to a newer Windows SDK or anything else involved and it broke the MIDL step, it'd be caught by a bot and not 6 months later when someone tries to update the .idl file.

It strikes me as similar to that closure compiler step that runs on the bots but it's optional on developer machines since it requires Java.

Realistically, even though compiling for Windows on a Linux host would be awesome, anything messing with those specific files really ought to be done on a Windows box.

The "somewhat fancy" solution is nice but (as the author of one of the places that uses mc.exe) I'd also be totally fine with "not fancy at all", given the very low rate of change of these files.
Either sounds fine to me.

- Somewhat fancy is nice because it catches breakage sooner, as Dominic says.
- Not fancy is nice because we can delete some gn goop, but we'd still have a .bat nearby with some of it I guess.
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ee3dc9b51e6272e9e195ee3e94cdc277b391307d

commit ee3dc9b51e6272e9e195ee3e94cdc277b391307d
Author: Nico Weber <thakis@chromium.org>
Date: Thu Aug 31 17:09:29 2017

win: Check in outputs of mc.exe and midl.exe.

TBR=dpranke

Bug:  756607 
Change-Id: I7eabc0f81e78037faaef64eb1a2315ef7378b3ed
Reviewed-on: https://chromium-review.googlesource.com/622474
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Chris Palmer <palmer@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#498898}
[modify] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/PRESUBMIT.py
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/OWNERS
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/README.chromium
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/base/trace_event/etw_manifest/MSG00001.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/base/trace_event/etw_manifest/chrome_events_win.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/base/trace_event/etw_manifest/chrome_events_win.rc
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/base/trace_event/etw_manifest/chrome_events_winTEMP.BIN
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/chrome/common/win/MSG00409.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/chrome/common/win/eventlog_messages.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/chrome/common/win/eventlog_messages.rc
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0000d.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00401.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00402.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00403.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00404.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00405.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00406.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00407.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00408.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00409.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0040b.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0040c.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0040d.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0040e.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00410.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00411.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00412.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00413.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00414.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00415.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00416.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00418.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00419.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0041a.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0041b.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0041d.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0041e.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0041f.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00421.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00422.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00424.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00425.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00426.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00427.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00429.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0042a.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00439.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0043e.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00441.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00445.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00447.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00449.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0044a.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0044b.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0044c.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0044e.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0045e.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00464.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00804.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00809.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0080a.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00816.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG0081a.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/MSG00c0a.bin
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/remoting_host_messages.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/mc/remoting/host/win/remoting_host_messages.rc
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/google_update/google_update_idl.dlldata.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/google_update/google_update_idl.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/google_update/google_update_idl.tlb
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/google_update/google_update_idl_i.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/google_update/google_update_idl_p.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/remoting/host/win/chromoting_lib.dlldata.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/remoting/host/win/chromoting_lib.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/remoting/host/win/chromoting_lib.tlb
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/remoting/host/win/chromoting_lib_i.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/remoting/host/win/chromoting_lib_p.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/iaccessible2/ia2_api_all.dlldata.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/iaccessible2/ia2_api_all.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/iaccessible2/ia2_api_all.tlb
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/iaccessible2/ia2_api_all_i.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/iaccessible2/ia2_api_all_p.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.dlldata.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.h
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument_i.c
[add] https://crrev.com/ee3dc9b51e6272e9e195ee3e94cdc277b391307d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument_p.c

Project Member

Comment 5 by bugdroid1@chromium.org, Sep 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c57fd9089298a61d77e176e41c6651f09cb4426d

commit c57fd9089298a61d77e176e41c6651f09cb4426d
Author: Nico Weber <thakis@chromium.org>
Date: Fri Sep 01 02:55:47 2017

Do TODO to move midl wrapper from win_tool.py into its own file.

No intended behavior change.

Bug:  756607 
Change-Id: If724b64379bc0aac33231ff02ca0ff831c77050d
Reviewed-on: https://chromium-review.googlesource.com/646688
Reviewed-by: Scott Graham <scottmg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499117}
[modify] https://crrev.com/c57fd9089298a61d77e176e41c6651f09cb4426d/build/toolchain/win/midl.gni
[add] https://crrev.com/c57fd9089298a61d77e176e41c6651f09cb4426d/build/toolchain/win/midl.py
[modify] https://crrev.com/c57fd9089298a61d77e176e41c6651f09cb4426d/build/toolchain/win/tool_wrapper.py

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2a8588ceb6ecbc2f59a4843529887e9130cba31d

commit 2a8588ceb6ecbc2f59a4843529887e9130cba31d
Author: Nico Weber <thakis@chromium.org>
Date: Fri Sep 01 16:36:30 2017

Add 2 midl output sets I forgot to add in https://chromium-review.googlesource.com/622474

This is the only midl() rule with multiple inputs, which I didn't expect
to happen. I'll likely have to change the directory structure here too,
but let's get all files in first.

Bug:  756607 
Change-Id: I26ab85accb2c25ebc427fe65a110593db1d03042
Reviewed-on: https://chromium-review.googlesource.com/647987
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499214}
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.dlldata.c
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.h
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode_i.c
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode_p.c
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.dlldata.c
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.h
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText_i.c
[add] https://crrev.com/2a8588ceb6ecbc2f59a4843529887e9130cba31d/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText_p.c

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d000a95b5c7189076d3e6d61f243caef3edeaa48

commit d000a95b5c7189076d3e6d61f243caef3edeaa48
Author: Nico Weber <thakis@chromium.org>
Date: Fri Sep 01 17:03:31 2017

mc: Copy over checked-in outputs on non-Windows hosts.

On Windows hosts, verify that the checked-in outputs are identical to
what mc.exe actually produces.

Bug:  756607 
Change-Id: If827c2b5d64730a27cf409af25783794366c1843
Reviewed-on: https://chromium-review.googlesource.com/646659
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499221}
[modify] https://crrev.com/d000a95b5c7189076d3e6d61f243caef3edeaa48/build/win/message_compiler.py

Project Member

Comment 8 by bugdroid1@chromium.org, Sep 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ea662297506102da12eb1ee04e40fad15b77a1d5

commit ea662297506102da12eb1ee04e40fad15b77a1d5
Author: Łukasz Anforowicz <lukasza@chromium.org>
Date: Fri Sep 01 17:42:14 2017

Revert "mc: Copy over checked-in outputs on non-Windows hosts."

This reverts commit d000a95b5c7189076d3e6d61f243caef3edeaa48.

Reason for revert: Speculating that this CL has caused a tree closure - see https://build.chromium.org/p/chromium.chrome/builders/Google%20Chrome%20Win/builds/21668

Original change's description:
> mc: Copy over checked-in outputs on non-Windows hosts.
> 
> On Windows hosts, verify that the checked-in outputs are identical to
> what mc.exe actually produces.
> 
> Bug:  756607 
> Change-Id: If827c2b5d64730a27cf409af25783794366c1843
> Reviewed-on: https://chromium-review.googlesource.com/646659
> Commit-Queue: Nico Weber <thakis@chromium.org>
> Reviewed-by: Scott Graham <scottmg@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#499221}

TBR=thakis@chromium.org,scottmg@chromium.org

Change-Id: I9d2dc77942bdba7198ed442cedb2f3d815510f9f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  756607 
Reviewed-on: https://chromium-review.googlesource.com/648146
Reviewed-by: Łukasz Anforowicz <lukasza@chromium.org>
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499227}
[modify] https://crrev.com/ea662297506102da12eb1ee04e40fad15b77a1d5/build/win/message_compiler.py

Project Member

Comment 9 by bugdroid1@chromium.org, Sep 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6cff7e77ad345f90dcc46b106620baf4cab3cef8

commit 6cff7e77ad345f90dcc46b106620baf4cab3cef8
Author: Nico Weber <thakis@chromium.org>
Date: Sun Sep 03 02:59:23 2017

Reland "mc: Copy over checked-in outputs on non-Windows hosts."

This reverts commit ea662297506102da12eb1ee04e40fad15b77a1d5.

This also reverts https://chromium-review.googlesource.com/c/chromium/src/+/584691
for non-iOS to make sure that remoting .mc outputs are not different in
official and unofficial builds.

Change-Id: I58fc96c40d1639c9145f576136afca2468459389
Bug:  756607 ,747637
Reviewed-on: https://chromium-review.googlesource.com/648113
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499409}
[modify] https://crrev.com/6cff7e77ad345f90dcc46b106620baf4cab3cef8/build/win/message_compiler.py
[modify] https://crrev.com/6cff7e77ad345f90dcc46b106620baf4cab3cef8/remoting/remoting_locales.gni
[modify] https://crrev.com/6cff7e77ad345f90dcc46b106620baf4cab3cef8/remoting/resources/remoting_strings.grd

Project Member

Comment 10 by bugdroid1@chromium.org, Sep 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/988faedf973805452e0436a4e18c71ba879fc051

commit 988faedf973805452e0436a4e18c71ba879fc051
Author: Nico Weber <thakis@chromium.org>
Date: Mon Sep 04 02:27:43 2017

midl: Copy over checked-in outputs on non-Windows hosts.

On Windows hosts, verify that the checked-in outputs are identical to
what midl.exe actually produces.

third_party/isimpledom contains 3 distinct idl input files, so move
the output filesets for each into dedicated directories.

midl.exe output is different in 32-bit and 64-bit builds, so add
precomputed outputs for both 32-bit and 64-bit builds.

midl.exe puts a timezone-dependent timestamp into its output, so
zap that timestamp from the outputs.

chromoting_lib.idl is generated dynamically with a changing uuid,
so its output changes every few builds.  For now, just punt on this
by not using a checked-in output for chromoting_lib.idl. (Building
remoting on a non-Win host will error out for now for this reason.)

Bug:  756607 
Change-Id: Ieec46a0f8cf3a316052e0f1def9f70abb8ec2853
Reviewed-on: https://chromium-review.googlesource.com/647190
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499426}
[modify] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/build/toolchain/win/midl.py
[modify] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/README.chromium
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x64/google_update_idl.dlldata.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x64/google_update_idl.h
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x64/google_update_idl.tlb
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x64/google_update_idl_i.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x64/google_update_idl_p.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x86/google_update_idl.dlldata.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x86/google_update_idl.h
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x86/google_update_idl.tlb
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x86/google_update_idl_i.c
[add] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/google_update/x86/google_update_idl_p.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib.dlldata.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib.h
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib.tlb
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib_i.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib_p.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib.dlldata.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib.h
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib.tlb
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib_i.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib_p.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all.dlldata.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all.h
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all.tlb
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all_i.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all_p.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all.dlldata.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all.h
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all.tlb
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all_i.c
[add] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all_p.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument.dlldata.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument.h
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument_i.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument_p.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument.dlldata.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument.h
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument_i.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument_p.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode.dlldata.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode.h
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode_i.c
[add] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode_p.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode.dlldata.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode.h
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode_i.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode_p.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText.dlldata.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText.h
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText_i.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText_p.c
[copy] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText.dlldata.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText.h
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText_i.c
[rename] https://crrev.com/988faedf973805452e0436a4e18c71ba879fc051/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText_p.c

Blockedon: 761839
Project Member

Comment 12 by bugdroid1@chromium.org, Sep 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/570a3b4c38a155a075e4370a37bf184c7d35bbd4

commit 570a3b4c38a155a075e4370a37bf184c7d35bbd4
Author: Nico Weber <thakis@chromium.org>
Date: Tue Sep 05 17:32:28 2017

mc: Explicitly sort #define blocks.

Some versions of mc.exe apparently don't do that, see chromium-dev
"message_compiler.py build failure due to innocent enum ordering changes"

Also print a slightly more detailed diff.

Bug:  756607 
Change-Id: I100891d0d1d06256448e568b9fa0ed8938d5957b
Reviewed-on: https://chromium-review.googlesource.com/649768
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499663}
[modify] https://crrev.com/570a3b4c38a155a075e4370a37bf184c7d35bbd4/build/win/message_compiler.py

Labels: -OS-Linux
This would create build errors on Windows, if DEPOT_TOOLS_WIN_TOOLCHAIN=0 and the Windows SDK is not at the latest version (midl.exe version on my machine is 8.01.0620).

My guess is that a lot of non-Googlers would encounter this build failure.

Here's an error from the build:
FAILED: gen/third_party/iaccessible2/ia2_api_all.h gen/third_party/iaccessible2/ia2_api_all.dlldata.c gen/third_party/iaccessible2/ia2_api_all_i.c gen/third_party/iaccessible2/ia2_api_all_p.c
C:/src/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/midl.py environment.x64 gen/third_party/iaccessible2 ia2_api_all.tlb ia2_api_all.h ia2_api_all.dlldata.c ia2_api_all_i.c ia2_api_all_p.c ../../third_party/iaccessible2/ia2_api_all.idl /char signed /env x64 /Oicf
midl.exe output different from files in C:\src\chromium\src\build\toolchain\win\..\..\..\third_party\win_build_output\midl/third_party/iaccessible2\x64, see c:\src\temp\tmpbx9hls
diff c:\src\temp\tmpbx9hls C:\src\chromium\src\build\toolchain\win\..\..\..\third_party\win_build_output\midl/third_party/iaccessible2\x64
Identical files : ['ia2_api_all.dlldata.c']
Differing files : ['ia2_api_all.h', 'ia2_api_all.tlb', 'ia2_api_all_i.c', 'ia2_api_all_p.c']
--- C:\src\chromium\src\build\toolchain\win\..\..\..\third_party\win_build_output\midl/third_party/iaccessible2\x64\ia2_api_all.h
+++ c:\src\temp\tmpbx9hls\ia2_api_all.h
@@ -3,11 +3,11 @@
 /* this ALWAYS GENERATED file contains the definitions for the interfaces */


- /* File created by MIDL compiler version 8.01.0622 */
-/* at a redacted point in time
+ /* File created by MIDL compiler version 8.01.0620 */
+/* at Mon Jan 18 19:14:07 2038
  */
 /* Compiler settings for ../../third_party/iaccessible2/ia2_api_all.idl:
-    Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622
+    Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0620
     protocol : dce , ms_ext, c_ext, robust
     error checks: allocation ref bounds_check enum stub_data
     VC __declspec() decoration level:
For a bit more context:

The compiler packages that (most) Google employees and all of our build machines use to build Chrome have the Creator Update SDK included. On machines that build using the locally installed toolchain (DEPOT_TOOLS_WIN_TOOLCHAIN=0) we use the latest installed SDK, which can be Anniversary Edition or Creators Update.

For a long time we have avoided *requiring* the Creators Update SDK because Microsoft kept shipping buggy versions. They shipped a good version a few months ago so we could reasonably start requiring the Creators Update SDK and that should avoid this version mismatch.

Or, we could make the comparison code ignore version numbers.

This problem is likely to surface again and I'm not sure that midl code-generation is the place to enforce SDK version numbers so I think that ignoring version numbers in the output check (or ignoring all comments?) might be wise. Otherwise whenever we try experimenting with a new Windows 10 SDK we will hit this build break.

Another idea would be to just compare mc.exe'a output if we're using the hermetic toolchain. But scribbling out at least the minor version number is probably a good idea regardless. I'll give it a shot.
Project Member

Comment 17 by bugdroid1@chromium.org, Sep 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4

commit 1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4
Author: Nico Weber <thakis@chromium.org>
Date: Wed Sep 06 19:39:45 2017

midl: Block out minor midl.exe version number too.

See comment 13 on the bug.

Bug:  756607 
Change-Id: Id74a576d95df6c52a79d03b460f4c43241b9f7f1
Reviewed-on: https://chromium-review.googlesource.com/651848
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500045}
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/build/toolchain/win/midl.py
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x64/google_update_idl.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x64/google_update_idl.tlb
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x64/google_update_idl_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x64/google_update_idl_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x86/google_update_idl.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x86/google_update_idl.tlb
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x86/google_update_idl_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/google_update/x86/google_update_idl_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib.tlb
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x64/chromoting_lib_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib.tlb
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/remoting/host/win/x86/chromoting_lib_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all.tlb
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x64/ia2_api_all_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all.tlb
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/iaccessible2/x86/ia2_api_all_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x64/ISimpleDOMDocument_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMDocument.idl/x86/ISimpleDOMDocument_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x64/ISimpleDOMNode_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMNode.idl/x86/ISimpleDOMNode_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x64/ISimpleDOMText_p.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText.h
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText_i.c
[modify] https://crrev.com/1c26c59a8bac4b996882a4e16fccbff7fb6b4ef4/third_party/win_build_output/midl/third_party/isimpledom/ISimpleDOMText.idl/x86/ISimpleDOMText_p.c

Hi, I am seeing the following error when building on a non-corp win7 x64. msvs version is 2015 with update 3. Do you think this can be fixed similar to #17 or is this irrelevant? Thank you.

Identical files : ['google_update_idl.dlldata.c', 'google_update_idl.h']
Differing files : ['google_update_idl.tlb', 'google_update_idl_i.c', 'google_upd
ate_idl_p.c']
--- C:\Users\Ehsan\chromium\src\third_party\win_build_output\midl\google_update\
x64\google_update_idl_i.c
+++ c:\src\temp\tmpvudarc\google_update_idl_i.c
@@ -65,7 +65,7 @@
 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
         EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,
b5,b6,b7,b8}}

-#endif // !_MIDL_USE_GUIDDEF_
+#endif !_MIDL_USE_GUIDDEF_

 MIDL_DEFINE_GUID(IID, IID_IGoogleUpdate3,0x6DB17455,0x4E85,0x46e7,0x9D,0x23,0xE
5,0x55,0xE4,0xB0,0x05,0xAF);


--- C:\Users\Ehsan\chromium\src\third_party\win_build_output\midl\google_update\
x64\google_update_idl_p.c
+++ c:\src\temp\tmpvudarc\google_update_idl_p.c
@@ -7437,7 +7437,7 @@
     1, /* -error bounds_check flag */
     0x50002, /* Ndr library version */
     0,
-    0x801026e, /* MIDL Version 8.1.622 */
+    0x801026c, /* MIDL Version 8.1.620 */
     0,
     UserMarshalRoutines,
     0,  /* notify & notify_flag routine table */

What SDK version do you have installed? It looks like you have the 14393 (Windows 10 Anniversary Edition) SDK installed. The change referred to in comment #17 is supposed to fix that so make sure you are synced beyond that point.

Installing the Creators Update SDK is also not a bad idea although it should not actually be required if you have the latest changes.

Well, I guess the fix in comment 17 is incomplete.

-#endif // !_MIDL_USE_GUIDDEF_
+#endif !_MIDL_USE_GUIDDEF_


^ Having to rewrite stuff like this is pretty ugly :-/
#19: My SDK version is 10.0.14393.795. I am synced beyond #17. #17 (and https://chromium-review.googlesource.com/c/chromium/src/+/649768) actually fixed a lot of errors I was getting over the weekend, but I still see the error I pasted in #18.

I followed these instructions: https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

In that page it says SDK version 15063 does not work. Should we change the instructions?
Those instructions are out of date now. I will update them. Thank you for pointing that out.
Project Member

Comment 23 by bugdroid1@chromium.org, Sep 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4d1de59c62abfb9c4dba9dd17f1685961b634a3f

commit 4d1de59c62abfb9c4dba9dd17f1685961b634a3f
Author: Bruce Dawson <brucedawson@chromium.org>
Date: Fri Sep 08 00:24:00 2017

Update Chrome build instructions for Windows

The build instructions for Windows used to say that the Windows 10
14393 SDK was required. However the 15063 SDK has since been fixed and
Chrome will now build with it if it is installed. This change updates
the instructions.

The new instructions also mention VS 2017 as an option.

http: //dillinger.io/ was used to test the markup.
BUG:  756607 
Change-Id: I12274f037fe390e8db047f27ca113adfbc5d60c6
Reviewed-on: https://chromium-review.googlesource.com/656400
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500448}
[modify] https://crrev.com/4d1de59c62abfb9c4dba9dd17f1685961b634a3f/docs/windows_build_instructions.md

Project Member

Comment 24 by bugdroid1@chromium.org, Sep 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c0979a6598f42de383d3d1ab14322349f3e15f2

commit 1c0979a6598f42de383d3d1ab14322349f3e15f2
Author: Bruce Dawson <brucedawson@chromium.org>
Date: Wed Sep 13 17:47:21 2017

Update Chrome build instructions for Windows

It was pointed out that the instructions for VS 2017 were insufficient -
you have to be sure to install the C++ compiler and MFC. Fixed.

"python tools/md_browser/md_browser.py" was used to test the markup.
Browse to here to see the modified markup:
    http://localhost:8080/docs/windows_build_instructions.md

Bug:  756607 
Change-Id: I60d2d4533abeff5b5e18cf4ddaa1ab402a82f2e7
Reviewed-on: https://chromium-review.googlesource.com/661977
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501684}
[modify] https://crrev.com/1c0979a6598f42de383d3d1ab14322349f3e15f2/docs/windows_build_instructions.md

Just to confirm from my end: I also see the error with 14393 and 15063 installed.

After installing VS2015 with 14393 and then installing 15063 separately, I end up with following:

The default midl is "C:\Program Files (x86)\Windows Kits\10\bin\x86\midl.exe" Version 8.01.0620.

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\midl.exe is Version 8.01.0622.

It appears that I am unable to run gn in such a way that it would pick up the 15063 midl.exe instead of the default one.

It appears that I am unable to install VS 2015 (with standard MS installers) in such a way that it would have only 15063.

It appears that Chromium can not be compiled with 14393, even though the documentation says so.


Kkinnunen: Thanks, but can you please post the build error you're seeing (including the diff it's supposed to print)?
Similar as #18

C:\Users\kkinnunen\chromium\src>ninja -C out\Debug chrome
ninja: Entering directory `out\Debug'
[69/26890] ACTION //third_party/isimpledom:isimpledom_idl_action(//build/toolchain/win:x64)
FAILED: gen/third_party/isimpledom/ISimpleDOMNode.h gen/third_party/isimpledom/ISimpleDOMNode.dlldata.c gen/third_party/isimpledom/ISimpleDOMNode_i.c gen/third_party/isimpledom/ISimpleDOMNode_p.c
C:/Users/kkinnunen/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/midl.py environment.x64 gen/third_party/isimpledom ISimpleDOMNode.tlb ISimpleDOMNode.h ISimpleDOMNode.dlldata.c ISimpleDOMNode_i.c ISimpleDOMNode_p.c ../../third_party/isimpledom/ISimpleDOMNode.idl /char signed /env x64 /Oicf
midl.exe output different from files in C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMNode.idl\x64, see c:\users\kkinnu~1\appdata\local\temp\tmpmceimk
diff c:\users\kkinnu~1\appdata\local\temp\tmpmceimk C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMNode.idl\x64
Identical files : ['ISimpleDOMNode.dlldata.c', 'ISimpleDOMNode.h']
Differing files : ['ISimpleDOMNode_i.c', 'ISimpleDOMNode_p.c']
--- C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMNode.idl\x64\ISimpleDOMNode_i.c
+++ c:\users\kkinnu~1\appdata\local\temp\tmpmceimk\ISimpleDOMNode_i.c
@@ -65,7 +65,7 @@
 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
         EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}

-#endif // !_MIDL_USE_GUIDDEF_
+#endif !_MIDL_USE_GUIDDEF_

 MIDL_DEFINE_GUID(IID, IID_ISimpleDOMNode,0x1814ceeb,0x49e2,0x407f,0xaf,0x99,0xfa,0x75,0x5a,0x7d,0x26,0x07);


--- C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMNode.idl\x64\ISimpleDOMNode_p.c
+++ c:\users\kkinnu~1\appdata\local\temp\tmpmceimk\ISimpleDOMNode_p.c
@@ -952,7 +952,7 @@
     1, /* -error bounds_check flag */
     0x50002, /* Ndr library version */
     0,
-    0x801026e, /* MIDL Version 8.1.622 */
+    0x801026c, /* MIDL Version 8.1.620 */
     0,
     UserMarshalRoutines,
     0,  /* notify & notify_flag routine table */

To rebaseline:
  copy /y c:\users\kkinnu~1\appdata\local\temp\tmpmceimk\* C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMNode.idl\x64
[75/26890] ACTION //third_party/isimpledom:isimpledom_idl_action(//build/toolchain/win:x64)
FAILED: gen/third_party/isimpledom/ISimpleDOMText.h gen/third_party/isimpledom/ISimpleDOMText.dlldata.c gen/third_party/isimpledom/ISimpleDOMText_i.c gen/third_party/isimpledom/ISimpleDOMText_p.c
C:/Users/kkinnunen/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/midl.py environment.x64 gen/third_party/isimpledom ISimpleDOMText.tlb ISimpleDOMText.h ISimpleDOMText.dlldata.c ISimpleDOMText_i.c ISimpleDOMText_p.c ../../third_party/isimpledom/ISimpleDOMText.idl /char signed /env x64 /Oicf
midl.exe output different from files in C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMText.idl\x64, see c:\users\kkinnu~1\appdata\local\temp\tmphhnl2d
diff c:\users\kkinnu~1\appdata\local\temp\tmphhnl2d C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMText.idl\x64
Identical files : ['ISimpleDOMText.dlldata.c', 'ISimpleDOMText.h']
Differing files : ['ISimpleDOMText_i.c', 'ISimpleDOMText_p.c']
--- C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMText.idl\x64\ISimpleDOMText_i.c
+++ c:\users\kkinnu~1\appdata\local\temp\tmphhnl2d\ISimpleDOMText_i.c
@@ -65,7 +65,7 @@
 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
         EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}

-#endif // !_MIDL_USE_GUIDDEF_
+#endif !_MIDL_USE_GUIDDEF_

 MIDL_DEFINE_GUID(IID, IID_ISimpleDOMText,0x4e747be5,0x2052,0x4265,0x8a,0xf0,0x8e,0xca,0xd7,0xaa,0xd1,0xc0);


--- C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMText.idl\x64\ISimpleDOMText_p.c
+++ c:\users\kkinnu~1\appdata\local\temp\tmphhnl2d\ISimpleDOMText_p.c
@@ -475,7 +475,7 @@
     1, /* -error bounds_check flag */
     0x50002, /* Ndr library version */
     0,
-    0x801026e, /* MIDL Version 8.1.622 */
+    0x801026c, /* MIDL Version 8.1.620 */
     0,
     UserMarshalRoutines,
     0,  /* notify & notify_flag routine table */

To rebaseline:
  copy /y c:\users\kkinnu~1\appdata\local\temp\tmphhnl2d\* C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\isimpledom\ISimpleDOMText.idl\x64
[78/26890] CXX obj/third_party/icu/icuuc/util_props.obj
ninja: build stopped: subcommand failed.
C:\Users\kkinnunen\chromium\src>git log -1 --oneline
7b3985e9028f (HEAD, origin/master, origin/HEAD) Cleanup: Remove feature NTPTilesInInstantService
Project Member

Comment 29 by bugdroid1@chromium.org, Sep 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7b9ef85965bb7f997a4564dba09e257d4d7d21ea

commit 7b9ef85965bb7f997a4564dba09e257d4d7d21ea
Author: Nico Weber <thakis@chromium.org>
Date: Tue Sep 26 01:42:58 2017

win: Try to make midl.py work with midl.exe 8.1.620

Bug:  756607 
Change-Id: I78e1fdf2411c067efd5423987ab9812f14b93736
Reviewed-on: https://chromium-review.googlesource.com/680041
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504255}
[modify] https://crrev.com/7b9ef85965bb7f997a4564dba09e257d4d7d21ea/build/config/win/BUILD.gn
[modify] https://crrev.com/7b9ef85965bb7f997a4564dba09e257d4d7d21ea/build/toolchain/win/midl.gni
[modify] https://crrev.com/7b9ef85965bb7f997a4564dba09e257d4d7d21ea/build/toolchain/win/midl.py

Thanks. Just adding the effect of last commit in case it is useful, not necessarily saying you would not know this already:

C:\Users\kkinnunen\chromium\src>ninja -C out\Debug chrome
ninja: Entering directory `out\Debug'
[1/1] Regenerating ninja files
[3073/29917] ACTION //third_party/iaccessible2:iaccessible2_idl_action(//build/toolchain/win:x64)
FAILED: gen/third_party/iaccessible2/ia2_api_all.h gen/third_party/iaccessible2/ia2_api_all.dlldata.c gen/third_party/iaccessible2/ia2_api_all_i.c gen/third_party/iaccessible2/ia2_api_all_p.c
C:/Users/kkinnunen/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/midl.py environment.x64 gen/third_party/iaccessible2 ia2_api_all.tlb ia2_api_all.h ia2_api_all.dlldata.c ia2_api_all_i.c ia2_api_all_p.c ../../third_party/iaccessible2/ia2_api_all.idl /char signed /env x64 /Oicf
midl.exe output different from files in C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\iaccessible2\x64, see c:\users\kkinnu~1\appdata\local\temp\tmpel1yaj
diff c:\users\kkinnu~1\appdata\local\temp\tmpel1yaj C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\iaccessible2\x64
Identical files : ['ia2_api_all.dlldata.c', 'ia2_api_all.h', 'ia2_api_all_i.c', 'ia2_api_all_p.c']
Differing files : ['ia2_api_all.tlb']
To rebaseline:
  copy /y c:\users\kkinnu~1\appdata\local\temp\tmpel1yaj\* C:\Users\kkinnunen\chromium\src\third_party\win_build_output\midl\third_party\iaccessible2\x64
[3082/29917] ACTION //third_party/catapult/tracing:generate_about_tracing(//build/toolchain/win:x64)
ninja: build stopped: subcommand failed.

C:\Users\kkinnunen\chromium\src>set | grep MSVS
GYP_MSVS_VERSION=2015




I did not know this. Thanks for the report.
Can you attach the tlb file in c:\users\kkinnu~1\appdata\local\temp\tmpel1yaj please?
ia2_api_all.tlb
27.0 KB Download
I can confirm the same problem on comment #30.

GYP_MSVS_VERSION=2017
Visual Studio 15.3.5
Windows 10 Version 10.0.16296
Windows SDK 10.0.15063.468

The ia2_api_all.tlb issue seems to be pretty common. My theory is that any machine that has VS 2015 installed, then VS 2017, and tries to build with VS 2017 will hit this issue. The prerequisite might be an earlier Windows 10 SDK version - I'm not sure.

But, given that this is likely to be very common for non-Google developers I think we need to disable the checks for now. I've got crrev.com/c/688836 ready to land as a stop-gap measure.

Project Member

Comment 36 by bugdroid1@chromium.org, Sep 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7fc9bf24c9bd2bc6bebb14e9cd7bd5167d83b990

commit 7fc9bf24c9bd2bc6bebb14e9cd7bd5167d83b990
Author: Bruce Dawson <brucedawson@chromium.org>
Date: Thu Sep 28 07:56:38 2017

Temporarily disable midl.py result checking

On some machines - perhaps those which had VS 2015 installed, or perhaps
those that had early Windows 10 SDKs installed - an older version of
midl.exe ends up earlier in the path than the latest version and this
leads to spurious mismatch errors in midl.py. The ideal fix may be
tricky so this change disables the result checking temporarily to
unblock developers who have DEPOT_TOOLS_WIN_TOOLCHAIN=0.

Bug:  756607 
Change-Id: I6d71f10939a65b629de58bb8646fa6f7c703e9de
Reviewed-on: https://chromium-review.googlesource.com/688836
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504935}
[modify] https://crrev.com/7fc9bf24c9bd2bc6bebb14e9cd7bd5167d83b990/build/toolchain/win/midl.py

There are two main strategies that could be used to pursue a long-term fix. One would be to figure out what the differences in the .tlb file and ignore them. The other strategy would be to ensure that the correct version of midl.exe is always run, by modifying the path which is returned to us by vcvarsall.bat. It seems like a VS bug that the old path is included and is first. I filed this VS bug (but I wouldn't expect a fix in the near future):

https://developercommunity.visualstudio.com/content/problem/121726/vcvarsallbat-adds-old-sdk-to-path.html

I looked at the file in comment 33 a bit. The diff is just 1 byte, right after the version number field we try to scribble out in https://cs.chromium.org/chromium/src/build/toolchain/win/midl.py?type=cs&q=midl.py&sq=package:chromium&l=25

I tried to make sense of the .tlb file format for a while, and actually made some good progress on that. Here's an incomplete dumper: https://chromium-review.googlesource.com/#/c/chromium/src/+/693223

The main interesting point for this bug is that there seem to be 15 sections in a tlb file that are indexed at the start of the file. Section 12 points to a block of creator data. Somewhat surprisingly, that's not fixed size though.

Here's how this section looks like for google_update_idl.tlb:

Entry 12: Creator info (len 84)
08 00 3e 00 00 00 43 72 65 61 74 65 64 20 62 79  ..>...Created by
20 4d 49 44 4c 20 76 65 72 73 69 6f 6e 20 38 2e   MIDL version 8.
78 78 2e 78 78 78 78 20 61 74 20 61 20 72 65 64  xx.xxxx at a red
61 63 74 65 64 20 70 6f 69 6e 74 20 69 6e 20 74  acted point in t
69 6d 65 0a 13 00 ff ff ff 7f 57 57 13 00 6e 02  ime.......WW..n.
01 08 57 57                                      ..WW


Here it is for chromoting_lib.tlb:

Entry 12: Creator info (len 84)
08 00 3e 00 00 00 43 72 65 61 74 65 64 20 62 79  ..>...Created by
20 4d 49 44 4c 20 76 65 72 73 69 6f 6e 20 38 2e   MIDL version 8.
78 78 2e 78 78 78 78 20 61 74 20 61 20 72 65 64  xx.xxxx at a red
61 63 74 65 64 20 70 6f 69 6e 74 20 69 6e 20 74  acted point in t
69 6d 65 0a 13 00 ff ff ff 7f 57 57 13 00 6e 02  ime.......WW..n.
01 08 57 57                                      ..WW


These are identical. The '6e 02 01 08' at the end is 8.1.622 (0x26e == 622). The two 57s after it is probably padding. I'm not sure what the data between the text string and the binary version number is.


However, for ia2_api_all.tlb, this block is different:

Entry 12: Creator info (len 100)
08 00 3e 00 00 00 43 72 65 61 74 65 64 20 62 79  ..>...Created by
20 4d 49 44 4c 20 76 65 72 73 69 6f 6e 20 38 2e   MIDL version 8.
78 78 2e 78 78 78 78 20 61 74 20 61 20 72 65 64  xx.xxxx at a red
61 63 74 65 64 20 70 6f 69 6e 74 20 69 6e 20 74  acted point in t
69 6d 65 0a 13 00 ff ff ff 7f 57 57 13 00 6e 02  ime.......WW..n.
01 08 57 57 03 00 ff ff ff ff 57 57 03 00 fe ff  ..WW......WW....
ff ff 57 57                                      ..WW


It's 16 byte longer, and I'm not sure what the additional data is.

This is probably enough already to scribble over the binary version number in the tlb file, which I believe should be enough to re-enable result checking.
The bug in vcvarsall.bat that added the old SDK to the path will be fixed. Specifically they said "Thank you for your feedback! We have fixed the problem in an upcoming release. Thank you for helping us build a better Visual Studio!"

https://developercommunity.visualstudio.com/content/problem/121726/vcvarsallbat-adds-old-sdk-to-path.html

That's nice and will eventually simplify our life slightly, but there will inevitably be times when developers have newer SDKs installed so we will likely always have to tolerate minor differences in output.

The additional data in the custom block for ia2_api_all.idl is enum initializers. If you have an enum with explicit value initializers for negative values, those go in the custom section:

C:\src\chrome\src>type ia2_api_all.idl
[ uuid(CE3F726E-D1D3-44FE-B995-FF1DB3B48B2B) ]
library IAccessible2Lib
{
  enum IA2TextSpecialOffsets {
    IA2_TEXT_OFFSET_LENGTH = -1,
    IA2_TEXT_OFFSET_LENGTH2 = 1,
    IA2_TEXT_OFFSET_CARET = -2,
    IA2_TEXT_OFFSET_CARET2 = 2,
    IA2_TEXT_OFFSET_CARET3 = -3,
    IA2_TEXT_OFFSET_CARET4 = 3,
  };
}

C:\src\chrome\src>midl ia2_api_all.idl
C:\src\chrome\src>python typelib.py ia2_api_all.tlb
148 64 => 1ac (types)
ffffffff 0 => ffffffff ()
ffffffff 0 => ffffffff (importlibs)
ffffffff 0 => ffffffff ()
1ac 80 => 22c (guids hash (??))
22c 60 => 28c (guids)
28c 200 => 48c (typetab hash (??))
48c 118 => 5a4 (typetab)
ffffffff 0 => ffffffff (strtab)
ffffffff 0 => ffffffff ()
ffffffff 0 => ffffffff (empty)
5a4 6c => 610 (custom)
610 24 => 634 (custom+guid)
ffffffff 0 => ffffffff (empty)
ffffffff 0 => ffffffff (empty)

Entry 1: Interfaces
20 21 00 00 34 06 00 00 00 00 00 00 00 00 00 00   !..4...........
03 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff  ................
00 00 00 00 1c 00 00 00 00 00 00 00 ff ff ff ff  ................
00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00  ................
04 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00  ................
ff ff ff ff                                      ....
[ ]
typedef enum IA2TextSpecialOffsets
  ...0 methods...

Entry 6: GUIDs
0000: CE3F726E-D1D3-44FE-95B9-FF1DB3B48B2B -2 -1
0018: DE77BA65-517C-11D1-DAA2-0000F8773CE9 -1 -1
0030: DE77BA63-517C-11D1-DAA2-0000F8773CE9 -1 -1
0048: DE77BA64-517C-11D1-DAA2-0000F8773CE9 -1 -1

Entry 8: Typetab (?)
str 0 (@0): IAccessible2Lib ; ffffffff ffffffff 0 7057
str 1 (@1c): IA2TextSpecialOffsets ; 0 ffffffff 38 f0e8
str 2 (@40): IA2_TEXT_OFFSET_LENGTH ; 0 ffffffff 30 7994
str 3 (@64): IA2_TEXT_OFFSET_LENGTH2 ; 0 ffffffff 30 3990
str 4 (@88): IA2_TEXT_OFFSET_CARET ; 0 ffffffff 30 c81d
str 5 (@ac): IA2_TEXT_OFFSET_CARET2 ; 0 ffffffff 30 71a6
str 6 (@d0): IA2_TEXT_OFFSET_CARET3 ; 0 ffffffff 30 71a7
str 7 (@f4): IA2_TEXT_OFFSET_CARET4 ; 0 ffffffff 30 71a8

Entry 9: Strtab

Entry 12: custom (len 108)
08 00 3e 00 00 00 43 72 65 61 74 65 64 20 62 79  ..>...Created by
20 4d 49 44 4c 20 76 65 72 73 69 6f 6e 20 38 2e   MIDL version 8.
30 31 2e 30 36 32 32 20 61 74 20 4d 6f 6e 20 4a  01.0622 at Mon J
61 6e 20 31 38 20 32 32 3a 31 34 3a 30 37 20 32  an 18 22:14:07 2
30 33 38 0a 13 00 ff ff ff 7f 57 57 13 00 6e 02  038.......WW..n.
01 08 57 57 03 00 ff ff ff ff 57 57 03 00 fe ff  ..WW......WW....
ff ff 57 57 03 00 fd ff ff ff 57 57              ..WW......WW

Entry 13: custom+guid
DE77BA65-517C-11D1-DAA2-0000F8773CE9: 0 ffffffff
DE77BA63-517C-11D1-DAA2-0000F8773CE9: 44 0
DE77BA64-517C-11D1-DAA2-0000F8773CE9: 4c c
Project Member

Comment 41 by bugdroid1@chromium.org, Oct 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3a468a2b925df77b0ae25356662bce2a4425d67d

commit 3a468a2b925df77b0ae25356662bce2a4425d67d
Author: Nico Weber <thakis@chromium.org>
Date: Fri Oct 06 22:48:00 2017

midl: Make tlb file work with midl 8.1.620 too, reenable check.

I figured out how .tlb files look, see
https://chromium-review.googlesource.com/c/chromium/src/+/693223
(start around line 255 for an overview).  This is possibly overkill
for just this issue, but it will come in handy for making
remoting's midl step with changing UUID implementable.

Bug:  756607 ,  761839 
Change-Id: I2f2eaaaaa524569f6b014c1793109261e94c79b2
Reviewed-on: https://chromium-review.googlesource.com/705995
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#507205}
[modify] https://crrev.com/3a468a2b925df77b0ae25356662bce2a4425d67d/build/toolchain/win/midl.py

Status: Fixed (was: Assigned)
I think we can call this done. This took a lot more work than expected!

While we currently only copy files around, I wrote a fairly complete mc.exe proof-of-concept reimplementation.
.mc part: https://github.com/nico/hack/blob/master/mc/mc.py (contains a complete description of the MSGddddd.bin format -- I didn't look at the TEMP.BIN format, but it's hopefully not super hard to figure out)
.man part: https://chromium-review.googlesource.com/c/chromium/src/+/614060/8/build/win/mc.py

So if push comes to shove, we can replace the mc-copying part with a real mc reimplementation in a timeframe of a week or two if we must.

While I didn't write a midl.exe reimplementation, I figured out ~80% of the binary .tlb format that midl.exe writes (including type references to foreign dlls), and that was the imho scariest part of writing a midl reimplementation. (The _p.c contents are pretty mysterious too though, and I haven't looked at them at all.) If we really had to do this, we could possibly do it in a month.

But for now, all seems well as it is.
Project Member

Comment 43 by bugdroid1@chromium.org, Oct 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8f48c21352588b61d857897d0d1c7d695edcbcdf

commit 8f48c21352588b61d857897d0d1c7d695edcbcdf
Author: Nico Weber <thakis@chromium.org>
Date: Fri Oct 13 17:47:03 2017

Add bat files to rerun midl and mc rules.

Bug:  773476 , 756607 
Change-Id: Ibb5ceb0aa96a993e76369802e53e0184b2dfab40
Reviewed-on: https://chromium-review.googlesource.com/719157
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508749}
[add] https://crrev.com/8f48c21352588b61d857897d0d1c7d695edcbcdf/third_party/win_build_output/remc.bat
[add] https://crrev.com/8f48c21352588b61d857897d0d1c7d695edcbcdf/third_party/win_build_output/remidl.bat

Sign in to add a comment