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

Issue 850100 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Oct 31
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue angleproject:1569



Sign in to add a comment

analyze step wrongly decided "No compile necessary"

Project Member Reported by ynovikov@chromium.org, Jun 6 2018

Issue description

In this CL https://chromium-review.googlesource.com/c/angle/angle/+/1087179
on this tryjob https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_angle_deqp_rel_ng/1350
"analyze" decided that "No compile necessary".
Which resulted in CI bot breaking https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Android%20FYI%20dEQP%20Release%20%28Nexus%205X%29/10901.

The expectation is that "analyze" will realize from DEPS changing that source files which are dependencies of angle_deqp_gles2_tests have changed, so it rebuilds and runs the tests.

dpranke@, could you please triage this?
 

Comment 1 by kbr@chromium.org, Jun 6 2018

Cc: thakis@chromium.org sky@chromium.org
Components: Build
+sky and thakis, others who have experience with this level of the build system.

Cc: dpranke@chromium.org liaoyuke@chromium.org
I don't know anything about the deqp bot setup. liaoyuke touched analyze recently, maybe he has an idea.
I don't think my changes were related. If the DEPS file is changed, shouldn't we just blindly re-run everything? At least that's the behavior in Chromium.
(I didn't mean to imply that your changes are related, just that you might be familiar with analyze :-) )

Comment 5 by sky@chromium.org, Jun 6 2018

I'm surprised the job didn't trigger a compile. My understanding is any change to DEPS results in a full compile (I believe testing/buildbot/trybot_analyze_config.json controls this). Dirk knows the latest though.
Might be a recursedeps issue.

Comment 7 by kbr@chromium.org, Jun 6 2018

Cc: ehmaldonado@chromium.org
+ehmaldonado regarding possible recursedeps issue

I don't think so.
Maybe it's because GN analyze doesn't work well with .gypi files?

There are a few reasons. These are the changed files passed to analyzer:
third_party/angle/DEPS
third_party/angle/DEPS.chromium
third_party/angle/src/tests/deqp.gypi
third_party/angle/src/tests/deqp_support/deqp_gles31_test_expectations.txt
third_party/angle/src/tests/deqp_support/es2fColorClearTest.cpp

First, this "third_party/angle/DEPS" file is not the "DEPS" file, and that's why the rules in trybot_analyze_config.json failed to match.

Secondly, as mentioned by ehmaldonado@, analyzer doesn't understand .gyp[i]? file.

So, I'd recommend add the DEPS files to trybot_analyze_config.json, and for all directories that still use gyp, add them to trybot_analyze_config.json as well.
Would it work if we just removed gyp?
deqp.gypi is referenced by tests/BUILD.gn
It takes list of files from there.
I think analyzer should understand that changes to deqp.gypi affect BUILD.gn.
If not, then getting rid of gyp and moving the list of files to GN sounds a good solution.
I think it's possible to implement, but non-trivial. Specifically, we need to track the exec_script target to understand the set of input files the output object depends on, and then tracks all other targets that reference the output.

Do we have an idea how many gyp files are still used in our code base? If the goal is to completely get rid of gyp files, then moving to GN might be better solution. Dirk should be able to give more context.

deqp_gypi = exec_script("//build/gypi_to_gn.py",
                          [
                            rebase_path("deqp.gypi"),
                            "--replace=<(angle_path)=.",
                            "--replace=<(deqp_path)=//third_party/deqp/src",
                          ],
                          "scope",
                          [ "deqp.gypi" ])

  config("angle_deqp_support") {
    include_dirs = rebase_path(deqp_gypi.deqp_include_dirs, ".", "../..")
    if (is_win && !is_clang) {
      include_dirs += [ "../deqp/src/framework/platform/win32" ]
      cflags = deqp_gypi.deqp_win_cflags
    }
  ...
I think we should just finish removing gyp. This is on our plate anyway. I don't see a strong reason to push the infra team to support deprecated code paths.
Blockedon: angleproject:1569
Cc: fjhenigman@chromium.org
Labels: -Pri-1 Pri-2
Owner: jmad...@chromium.org
In addition to removing gyp, it would be good if ANGLE's DEPS will get the same treatment as Chromium's one.
You should get rid of the gypi files, since they're likely just confusing at this point. You could certainly add them to the whitelist in the meantime if need be.
Project Member

Comment 18 by bugdroid1@chromium.org, Oct 30

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

commit 724f1e75e90f94cd6cebfe2e045bd01f031984c6
Author: Jamie Madill <jmadill@chromium.org>
Date: Tue Oct 30 20:48:40 2018

Add ANGLE's DEPS to trybot exclusions.

This should force DEPS changes in ANGLE to trigger all trybots.
ANGLE's bot config is a bit special since we use recursive DEPS.

Bug:  850100 
Bug:  899737 
Change-Id: Iab6e996663386f66f1fa05f2ee10531d6bd85224
Reviewed-on: https://chromium-review.googlesource.com/c/1307734
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: John Budorick <jbudorick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#604005}
[modify] https://crrev.com/724f1e75e90f94cd6cebfe2e045bd01f031984c6/testing/buildbot/trybot_analyze_config.json

Status: Fixed (was: Assigned)
Seems to be working better now.

Sign in to add a comment