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

Issue 609958 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

GN: chromeos chroot: USE=chrome_internal: No such file: mustpass_es20.run

Project Member Reported by steve...@chromium.org, May 6 2016

Issue description

Error when building in the chroot as follows:

$ export BOARD=amd64-generic
$ USE="gn build_tests chrome_internal" emerge-${BOARD} chromeos-chrome

>>> Source configured.
>>> Compiling source in /build/amd64-generic/tmp/portage/chromeos-base/chromeos-chrome-9999/work/chromeos-chrome-9999 ...
ninja: Entering directory `c/Release'
[52/26421] ACTION //gpu/gles2_conform_support:generate_gles2_conform_tests(//build/toolchain/cros:target)
FAILED: python ../../../../../../../home/stevenjb/chrome_root/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py /var/cache/chromeos-chrome/chrome-src-internal/src/out_amd64-generic/Release/gen/gpu/gles2_conform_support
Traceback (most recent call last):
  File "../../../../../../../home/stevenjb/chrome_root/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py", line 63, in <module>
    sys.exit(main(sys.argv[1:]))
  File "../../../../../../../home/stevenjb/chrome_root/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py", line 56, in main
    GenerateTests(file)
  File "../../../../../../../home/stevenjb/chrome_root/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py", line 29, in GenerateTests
    "../../third_party/gles2_conform/GTF_ES/glsl/GTF/mustpass_es20.run")
  File "../../../../../../../home/stevenjb/chrome_root/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py", line 14, in ReadFileAsLines
    file = open(filename, "r")
IOError: [Errno 2] No such file or directory: '../../third_party/gles2_conform/GTF_ES/glsl/GTF/mustpass_es20.run'


I suspect this may be related to disabling internal_khronos_glcts_tests in issu 607669

 
Cc: steve...@chromium.org piman@chromium.org
Owner: ihf@chromium.org
Status: Assigned (was: Started)
As near as I can tell there is a subtle dependency problem here:

generate_gles2_conform_tests.py depends on mustpass_es20.run.
mustpass_es20.run -appears- to be created in generate_khronos_glcts_tests.py.

I can re-enable internal_khronos_glcts_tests=true in the ebuild if I add "//gpu/khronos_glcts_support:khronos_glcts_test" to chrome/src/BUILD.gn right after "//gpu/gles2_conform_support:gles2_conform_test". (I'll go ahead and do that separately).

However khronos_glcts_test has a dependency on gles2_conform_support, so I can't make it depend on gles2_conform_support.

->ihf@ to investigate or find an owner.

This is blocking the GN migration.

Cc: kbr@chromium.org
@kbr - can you take a look at this?
Cc: ullysses...@intel.com
+ullysses.a.eoff@

Comment 4 by kbr@chromium.org, May 6 2016

Let me point out that these targets are working in GN on Linux. Can you please compare to that build? Maybe Chrome OS isn't handled in the build files. Actually, that is likely.

Comment 5 Deleted

Previous args were incorrect (not internal). Here is the args.gn file generated for Chrome OS with chrome_internal:

is_asan = false
target_cpu = "x64"
ozone_auto_platforms = false
enable_nacl = true
ozone_platform_gbm = true
is_official_build = true
cros_target_ar = "x86_64-cros-linux-gnu-ar"
use_v4l2_codec = true
cros_target_cxx = "x86_64-cros-linux-gnu-g++ -B/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold"
is_clang = false
pkg_config = "/build/amd64-generic/build/bin/pkg-config"
cros_target_cc = "x86_64-cros-linux-gnu-gcc -B/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold"
target_sysroot = "/build/amd64-generic"
system_libdir = "lib64"
use_evdev_gestures = true
use_cras = true
use_debug_fission = false
use_system_minigbm = true
is_chrome_branded = true
ozone_platform = "gbm"
is_debug = false
use_ozone = true
use_v4lplugin = false
clang_use_chrome_plugins = false
enable_remoting = true
linux_use_bundled_binutils = false
internal_gles2_conform_tests = true
use_system_harfbuzz = true
internal_khronos_glcts_tests = true
use_xkbcommon = true
icu_use_data_file = true
target_os = "chromeos"
symbol_level = 2

Building gles2_conform_test does indeed work for me on linux:

args.gn =
is_debug = false
use_goma = true
is_official_build = true
is_chrome_branded = true
internal_gles2_conform_tests = true
internal_khronos_glcts_tests = true

However khronos_glcts_test fails to compile for me on linux.


Building gles2_conform_test on linux-chromeos also works:

args.gn =
is_debug = false
use_goma = true
is_official_build = true
is_chrome_branded = true
internal_gles2_conform_tests = true
internal_khronos_glcts_tests = true


So something about the chroot args is causing the problem. I will see if I can identify what it is.

Comment 9 by kbr@chromium.org, May 7 2016

Disable internal_khronos_glcts_tests. They aren't maintained yet.

If something needs to be fixed in the gles2_conform_tests build setup to handle chroot'ed environments I'll be happy to help.

I'm not sure why we don't have this problem outside the chroot, but what I noticed was that mustpass_es20.run appears to get built in generate_khronos_glcts_tests.py which seems problematic. I suspect that there is a subtle difference in dependencies that allows generate_khronos_glcts_tests.py to run even when internal_khronos_glcts_tests is not built, but only sometimes?


Comment 11 by kbr@chromium.org, May 7 2016

stevenjb@: I think you are misreading the code. It should be generated by generate_gles2_conform_tests.py, not generate_khronos_glcts_tests.py . https://code.google.com/p/chromium/codesearch#chromium/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py&q=mustpass_es20.run&sq=package:chromium&l=29

A builder like this one:

https://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Linux%20Builder

which builds the gles2_conform_test target for consumption by the GPU testers does *not* build internal_khronos_glcts_tests.

Please, stop setting the internal_khronos_glcts_tests GN arg on your bot, and let's debug from that point.

The line in comment #11 just calls ReadFileAsLines.

ReadAsFileLines seems to do what it says - read a file, not create it:
https://code.google.com/p/chromium/codesearch#chromium/src/gpu/gles2_conform_support/generate_gles2_conform_tests.py&q=ReadFileAsLines&sq=package:chromium&type=cs&l=12

I'm not entirely sure why that builder works correctly. Maybe GN is executing python in a way such that python is ignoring missing files?

We did disable internal_khronos_glcts_tests here:
https://chromium-review.googlesource.com/#/c/341300/2/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild

but it still fails building in the chroot.

I will continue to see if I can find a combination of args.gn that fails outside of the chroot.

In the meanwhile we are including both the internal_khronos_glcts_tests and internal_gles_conform args, but are temporarily not actually building khronos_glcts_test{_windowless} or gles2_conform_test{_windowless}.


OK, I did some more digging and figured out some of the confusion.

Somehow I was under the impression that mustpass_es20.run was a generated file.

It turns out it is not. It exists in chrome/src/third_party/gles2_conform/GTF_ES/glsl/GTF/.

The problem appears to be that the python script is using a relative path:
../../third_party/gles2_conform/GTF_ES/glsl/GTF/mustpass_es20.run

When running in the chroot, with USE=chrome_internal, the CWD is /var/cache/chromeos-chrome/chrome-src-internal/src/out_amd64-generic/Release

There is no /var/cache/chromeos-chrome/chrome-src-internal/src/third_party/gles2_conform.

I'm not sure why this is different in GN, but we have had issues with 'cd' calls in the ebuild before, so I will start looking into that.

Labels: -Pri-1 -Proj-GN-Migration Build-Tools-GN Pri-2
I did some more testing and it looks like GN is putting the output somewhere slightly different. This causes chromeos (chroot) builds, which only selectively copies the contents of src/third_party for tests, to be unable to find mustpass_es20.run.

Since we do not run these tests in chromeos builders, we can deprioritize this for now. The tests will be disabled with this CL:

https://chromium-review.googlesource.com/#/c/343211/
Project Member

Comment 15 by bugdroid1@chromium.org, May 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/572e0f52873d17be767c49db1b7d8acf5f65bcb3

commit 572e0f52873d17be767c49db1b7d8acf5f65bcb3
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Sat May 07 00:27:15 2016

GN: Re-enable internal_khronos_glcts but do not build khronos_glcts_test or gles2_conform_test

Disabling khronos_glcts_test turned out to only be a partial solution.
There are dependencies between khronos_glcts_test and gles2_conform_test.

Instead, set the GN args, but do not build the targets (for now).

BUG= chromium:609958 
TEST=Build chromiumos-chromium in the chrrot with build_tests and
     chrome_internal USE flags

Change-Id: Ib8daf9ef1d9b0e1c7b9e392bd28f13abb975c226
Reviewed-on: https://chromium-review.googlesource.com/343211
Commit-Ready: Steven Bennetts <stevenjb@chromium.org>
Tested-by: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Ryo Hashimoto <hashimoto@chromium.org>

[modify] https://crrev.com/572e0f52873d17be767c49db1b7d8acf5f65bcb3/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild

Blocking: 433082
Labels: -Build-Tools-GN Proj-GN-Migration
Feel free to drop the "blocking:433082" if we don't need to fix this before we drop GYP support.
Blocking: -433082
Blocking removed.

Labels: -Proj-GN-Migration

Comment 19 by ihf@chromium.org, Apr 22 2017

Obsolete.

Comment 20 by ihf@chromium.org, Apr 22 2017

Status: WontFix (was: Assigned)
Obsolete.

Sign in to add a comment