New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 617196 link

Starred by 1 user

Issue metadata

Status: Untriaged
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug



Sign in to add a comment

The GN version of the 'mini_installer' has some unneeded dependencies

Project Member Reported by sebmarchand@chromium.org, Jun 3 2016

Issue description

I've noticed that some extra binaries get built when you build the GN version of mini_installer (it might also be the case just for the 'chrome' target):
- bro.exe
- desktop_wm_library.dll
- mojo_runner.exe
- mus_library.dll
- osmesa.dll
- tracing_library.dll

Is there a way to look at what's the dependency chain for these targets ?
 
Note that the GN and the GN build were not exactly from the same revision so some binaries might have been added between them, but I know that at least some of these dependencies are invalid (like bro.exe).
Was this a component build? If so it is known and expected that many extra DLLs get added. See  crbug.com/586967  and this line of code:

https://cs.chromium.org/chromium/src/chrome/tools/build/win/create_installer_archive.py?q=f:create_install&sq=package:chromium&l=513

I don't know why bro.exe is getting built, but if it is now being used to compress some assets then that may be by design.

Never mind.  crbug.com/586967  causes DLLs to be pulled in if they exist, but it never causes them to be built.
For the record, the reason why I've noticed this is because I was hitting a build warning in bro.exe (fixed in https://codereview.chromium.org/2027873006/) while making a GN build of mini_installer (args="is_official_build=true is_debug=false") and szabadka@ told me that there was no reason to build bro.exe with Chrome. I also don't think that a typical build of Chrome needs mojo_runner ? 
I did clean builds (rmdir /s/q out\Debug and gn clean out\Debug_gn_component) of component debug builds with gyp and gn and compared the DLLs and EXEs created. The gn builds generate 15 more DLLs and 1 more executable. The actual comparison is messier because the gn builds aren't a strict superset (renaming of outputs? Other reasons?) - the lists are attached. For executables the differences are:

gyp creates nacl64.exe and wow_helper.exe that gn doesn't
gn creates frame_analyzer.exe, mojo_runner.exe, and rgba_to_i420_converter.exe that gyp doesn't

As of 903b1d2f36 they both create bro.exe.

dlls_gn.txt
2.4 KB View Download
dlls_gyp.txt
2.2 KB View Download
exes_gn.txt
282 bytes View Download
exes_gyp.txt
247 bytes View Download
Thanks for looking at this ! Should we open a different bug for each of these different executables ?


Probably best to keep it as one bug - the causes are likely to be related.

If the actual 'correct' set of dependencies is the intersection of the gn/gyp results then we can potentially make everything faster than before which would be great.
Blocking: 354261
I'm guessing this doesn't need to block shipping GN; do we need to fix this before we can drop GYP?
Nop, it doesn't prevent us from shipping, we should just look at this one day to improve the build time.
Blocking: -354261
Components: Build
Labels: -Proj-GN-Migration
Status: Available (was: Untriaged)
Project Member

Comment 11 by sheriffbot@chromium.org, Jul 3 2017

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available. If you change it back, also remove the "Hotlist-Recharge-Cold" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
A lot has changed since this bug was filed. bro.exe is now called brotli.exe. The other three executables are not created on a build of chrome.exe, but test_ime_driver.service.exe is built.

This command gives some hints as to why brotli.exe is built:

>gn path . //third_party/brotli:brotli //chrome:chrome_initial
//chrome:chrome_initial --[public]-->
//chrome:packed_resources --[public]-->
//chrome:packed_resources_extra --[private]-->
//content/browser/devtools:devtools_resources --[public]-->
//content/browser/devtools:devtools_resources_grit --[private]-->
//content/browser/devtools:compressed_protocol_json --[private]-->
//third_party/brotli:brotli

So, I guess we are compressing some .json files, which is good.

I'm not sure why test_ime_driver.service.exe is being built. What am I doing wrong here?

>gn path . //services/ui/ime/test_ime_driver:test_ime_driver //chrome:chrome_initial
No non-data paths found between these two targets.

The only one of the DLLs that were originally listed that I see being built is osmesa.dll. Note that I was building chrome.exe rather than mini_installer. I was doing a debug non-component build.

Sign in to add a comment