New issue
Advanced search Search tips

Issue 706786 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 0
Type: Bug-Regression



Sign in to add a comment

extensions targets fail to build

Reported by milko.le...@imgtec.com, Mar 30 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

Steps to reproduce the problem:
1. build app_shell_unittests target
gn gen out/x86_64 --args="is_debug=false target_os=\"linux\" target_cpu=\"x64\" is_clang=true"

ninja -j4 -C out/x86_64/ app_shell_unittests

What is the expected behavior?
app_shell_unittests target to be built

What went wrong?
build failed with error message:

FAILED: gen/extensions/extensions_renderer_resources_stamp.d.stamp gen/extensions/grit/extensions_renderer_resources.h gen/extensions/extensions_renderer_resources.pak 
python ../../tools/grit/grit.py -i ../../extensions/renderer/resources/extensions_renderer_resources.grd build -o gen/extensions --depdir . --depfile gen/extensions/extensions_renderer_resources_stamp.d --write-only-new=1 --depend-on-stamp -D _chromium -E CHROMIUM_BUILD=chromium -D desktop_linux -D toolkit_views -D use_aura -D use_nss_certs -t linux2 -D enable_media_router -E mojom_root=/scratch1/work/Chrome_13032015/src/out/mips32r2_clang_298539/gen -f ../../tools/gritsettings/resource_ids --assert-file-list=obj/extensions/extensions_renderer_resources_expected_outputs.txt
Error processing node <?xml version="1.0" encoding="UTF-8"?>
<include file="${mojom_root}\chrome\browser\media\router\mojo\media_controller.mojom.js" name="IDR_MEDIA_CONTROLLER_MOJOM_JS" type="BINDATA" use_base_dir="false" />
Traceback (most recent call last):
  File "../../tools/grit/grit.py", line 15, in <module>
    grit.grit_runner.Main(sys.argv[1:])
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/grit_runner.py", line 268, in Main
    toolobject.Run(options, args[1:])
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/tool/build.py", line 273, in Run
    self.Process()
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/tool/build.py", line 400, in Process
    self.ProcessNode(self.res, output, outfile)
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/tool/build.py", line 337, in ProcessNode
    formatted = formatter(node, output_node.GetLanguage(), output_dir=base_dir)
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/format/data_pack.py", line 45, in Format
    id, value = node.GetDataPackPair(lang, UTF8)
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/node/include.py", line 96, in GetDataPackPair
    data = util.ReadFile(filename, util.BINARY)
  File "/scratch1/work/Chrome_13032015/src/tools/grit/grit/util.py", line 207, in ReadFile
    with open(filename, mode) as f:
IOError: [Errno 2] No such file or directory: u'/scratch1/work/Chrome_13032015/src/out/mips32r2_clang_298539/gen/chrome/browser/media/router/mojo/media_controller.mojom.js'
[17/15266] CXX obj/components/signin/core/common/common/profile_management_switches.o
ninja: build stopped: subcommand failed.

Did this work before? Yes Chromium r458921

Chrome version: 59.0.3057.0 (Developer Build) (64-bit)  Channel: n/a
OS Version: Ubuntu 16.04
Flash Version: 

This issue started after change https://codereview.chromium.org/2727123002

Issue is still present in Chromium r460686

After build of app_shell_unittests fails,
building chrome target will succeed and after that app_shell_unittests build will also succeed.
 
Labels: TE-NeedsTriageHelp
Cc: rdevlin....@chromium.org michae...@chromium.org
Components: Internals>Cast Build
Labels: -Pri-2 Pri-0
Owner: taku...@chromium.org
Status: Assigned (was: Unconfirmed)
Summary: extensions targets fail to build (was: app_shell_unittests target build fails)
extensions_unittests also fails. Build failure happens on Linux in all configurations I've tried (debug/release, component/non-component).

The failure is in extensions:extensions_renderer_resources_grit, so everything depending on that fails (e.g., extensions/common) until chrome is build.
isolated error:

~/dev/c/w2/src % gn clean out_linux/test
~/dev/c/w2/src % ninja -C out_linux/test -j 9999 -l 40 extensions:extensions_renderer_resources_grit
ninja: Entering directory `out_linux/test'
[1/1] Regenerating ninja files
[71/72] ACTION //extensions:extensions_renderer_resources_grit(//build/toolchain/linux:clang_x64)
FAILED: gen/extensions/extensions_renderer_resources_stamp.d.stamp gen/extensions/grit/extensions_renderer_resources.h gen/extensions/extensions_renderer_resources.pak
python ../../tools/grit/grit.py -i ../../extensions/renderer/resources/extensions_renderer_resources.grd build -o gen/extensions --depdir . --depfile gen/extensions/extensions_renderer_resources_stamp.d --write-only-new=1 --depend-on-stamp -D _chromium -E CHROMIUM_BUILD=chromium -D desktop_linux -D toolkit_views -D use_aura -D use_nss_certs -D enable_media_router -E mojom_root=/usr/local/google/home/michaelpg/dev/c/w2/src/out_linux/test/gen -f ../../tools/gritsettings/resource_ids --assert-file-list=obj/extensions/extensions_renderer_resources_expected_outputs.txt
Error processing node <?xml version="1.0" encoding="UTF-8"?>
<include file="${mojom_root}\chrome\browser\media\router\mojo\media_controller.mojom.js" name="IDR_MEDIA_CONTROLLER_MOJOM_JS" type="BINDATA" use_base_dir="false" />
Traceback (most recent call last):
  File "../../tools/grit/grit.py", line 15, in <module>
    grit.grit_runner.Main(sys.argv[1:])
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/grit_runner.py", line 268, in Main
    toolobject.Run(options, args[1:])
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/tool/build.py", line 273, in Run
    self.Process()
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/tool/build.py", line 400, in Process
    self.ProcessNode(self.res, output, outfile)
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/tool/build.py", line 337, in ProcessNode
    formatted = formatter(node, output_node.GetLanguage(), output_dir=base_dir)
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/format/data_pack.py", line 45, in Format
    id, value = node.GetDataPackPair(lang, UTF8)
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/node/include.py", line 96, in GetDataPackPair
    data = util.ReadFile(filename, util.BINARY)
  File "/usr/local/google/home/michaelpg/dev/c/w2/src/tools/grit/grit/util.py", line 207, in ReadFile
    with open(filename, mode) as f:
IOError: [Errno 2] No such file or directory: u'/usr/local/google/home/michaelpg/dev/c/w2/src/out_linux/test/gen/chrome/browser/media/router/mojo/media_controller.mojom.js'
ninja: build stopped: subcommand failed.
~
One-line patch at https://codereview.chromium.org/2809303002/ fixes the problem without bringing in much more from chrome, thanks Devlin for the suggestion.

Comment 5 by imcheng@google.com, Apr 11 2017

It seems adding "//chrome/browser/media/router:mojo_bindings_common__generator" will resolve the immediate problem (although it's a bad hack, similar to the mojo_bindings dep). It seems the mojom __generator rules aren't transitive, which is why we get the build failure.


takumif@ is working on a patch to move the resource Media Router mojom declarations out of extensions/renderer/resources/extensions_renderer_resources.grd, which should fix this bad dependency.

Comment 6 by w...@chromium.org, Apr 12 2017

Re #5: ...__generator is the actually IDL->source rule, which the template defines a source_set() target for as well; I'd expect the latter to have the correct transitive public_deps.  What's the rationale for depending on the __generator rule directly?
Project Member

Comment 7 by bugdroid1@chromium.org, Apr 12 2017

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

commit 01d3aa8fc776bb4c2ca45d8e77e1f120e7d61f1b
Author: michaelpg <michaelpg@chromium.org>
Date: Wed Apr 12 01:13:58 2017

Fix extensions targets building without chrome

The extensions:extensions_renderer_resources_grit target fails to
build without building parts of chrome first, meaning that targets in
//extensions fail to build. This includes binaries like
extensions_unittests, but also anything that depends on
extensions/common and not chrome. The dependency was introduced in
https://codereview.chromium.org/2727123002 without knowing it would
cause build problems.

This change seems to ensure the additional necessary mojo files are
generated before being used, without introducing additional major
chrome dependencies on top of those already here.

Specifically, it ensures that
obj/extensions/extensions_renderer_resources.ninja includes the
mojo_bindings_common__* results.

BUG= 706786 
R=rdevlin.cronin@chromium.org

Review-Url: https://codereview.chromium.org/2809303002
Cr-Commit-Position: refs/heads/master@{#463870}

[modify] https://crrev.com/01d3aa8fc776bb4c2ca45d8e77e1f120e7d61f1b/extensions/BUILD.gn

Status: Fixed (was: Assigned)
Marking fixed, remaining work looks to be in  issue 704958 .

Sign in to add a comment