How do I build a Chromium distribution on Linux?

424 views
Skip to first unread message

nicholas...@lucidworks.com

unread,
Mar 11, 2018, 9:50:06 PM3/11/18
to Chromium-dev
I have successfully built chromium on Linux. 

But the resulting directory is 25G large. 

How can I bundle this into a distributable? Like tar.gz or something so that I can send it to another computer? 

nicholas...@lucidworks.com

unread,
Mar 13, 2018, 3:36:15 PM3/13/18
to Chromium-dev
I just hoping to increase visibility on this thread. Can someone take a look? Thanks!

Mike Frysinger

unread,
Mar 13, 2018, 4:12:48 PM3/13/18
to nicholas...@lucidworks.com, chromium-packagers, Chromium-dev
[ +chromium-packagers ]
-mike

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/333720f1-1610-4eb1-8275-9649613ccf6a%40chromium.org.

Lei Zhang

unread,
Mar 13, 2018, 4:21:52 PM3/13/18
to nicholas...@lucidworks.com, chromium-packagers, Chromium-dev, Mike Frysinger
(Sending from the right email address)

There are .deb and .rpm package targets in
chrome/installer/linux/BUILD.gn. Assuming you have a non-component
build configuration in GN, you should be able to build targets like
stable_deb and stable_rpm.
> "chromium-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to chromium-packag...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CAAbOSckz_btVYagM88H7pU52ud8p8YZK39SW-dhEY2348E1SKA%40mail.gmail.com.

Nicholas DiPiazza

unread,
Mar 13, 2018, 5:24:23 PM3/13/18
to Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
OK so to be clear, there is no way to build a tar ball of chromium? 

On Tue, Mar 13, 2018 at 3:21 PM, Lei Zhang <the...@chromium.org> wrote:
(Sending from the right email address)

There are .deb and .rpm package targets in
chrome/installer/linux/BUILD.gn. Assuming you have a non-component
build configuration in GN, you should be able to build targets like
stable_deb and stable_rpm.

On Tue, Mar 13, 2018 at 1:10 PM, Mike Frysinger <vap...@chromium.org> wrote:
> [ +chromium-packagers ]
> -mike

>
> On Tue, Mar 13, 2018 at 12:36 PM, <nicholas.dipiazza@lucidworks.com> wrote:
>>
>> I just hoping to increase visibility on this thread. Can someone take a
>> look? Thanks!
>>
>> On Sunday, March 11, 2018 at 8:50:06 PM UTC-5, nicholas...@lucidworks.com
>> wrote:
>>>
>>> I have successfully built chromium on Linux.
>>>
>>> But the resulting directory is 25G large.
>>>
>>> How can I bundle this into a distributable? Like tar.gz or something so
>>> that I can send it to another computer?
>>
>> --
>> --
>> Chromium Developers mailing list: chromi...@chromium.org
>> View archives, change email options, or unsubscribe:
>> http://groups.google.com/a/chromium.org/group/chromium-dev
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Chromium-dev" group.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/333720f1-1610-4eb1-8275-9649613ccf6a%40chromium.org.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "chromium-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an

Lei Zhang

unread,
Mar 13, 2018, 5:38:12 PM3/13/18
to Nicholas DiPiazza, chromium-packagers, Chromium-dev, Mike Frysinger
Chromium bots use a script called archive_build.py, from the Chromium
infra git repo, to create chrome-linux.zip files for the continuous
build archive. That's the closest thing.

Assuming you are doing a non-component build, it should not be hard to
just run tar with the right list of files.

On Tue, Mar 13, 2018 at 2:22 PM, Nicholas DiPiazza
<nicholas...@lucidworks.com> wrote:
> OK so to be clear, there is no way to build a tar ball of chromium?
>
> On Tue, Mar 13, 2018 at 3:21 PM, Lei Zhang <the...@chromium.org> wrote:
>>
>> (Sending from the right email address)
>>
>> There are .deb and .rpm package targets in
>> chrome/installer/linux/BUILD.gn. Assuming you have a non-component
>> build configuration in GN, you should be able to build targets like
>> stable_deb and stable_rpm.
>>
>> On Tue, Mar 13, 2018 at 1:10 PM, Mike Frysinger <vap...@chromium.org>
>> wrote:
>> > [ +chromium-packagers ]
>> > -mike
>> >
>> > On Tue, Mar 13, 2018 at 12:36 PM, <nicholas...@lucidworks.com>
>> > email to chromium-packag...@chromium.org.
> --
> You received this message because you are subscribed to the Google Groups
> "chromium-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to chromium-packag...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CALqs7Hx8im4niXJd_0uHH%3DyosL2XORjRr4Z%3DPL6BT6cb%2BUERCg%40mail.gmail.com.

Dirk Pranke

unread,
Mar 13, 2018, 5:39:34 PM3/13/18
to Nicholas DiPiazza, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
I think it depends on what you mean by "chromium". Do you want just the things sufficient to run the chrome binary? Do you want a full installer? Do you want all of the debugging symbols? Etc.

-- Dirk

--
You received this message because you are subscribed to the Google Groups "chromium-packagers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-packagers+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CALqs7Hx8im4niXJd_0uHH%3DyosL2XORjRr4Z%3DPL6BT6cb%2BUERCg%40mail.gmail.com.

Nicholas DiPiazza

unread,
Mar 13, 2018, 5:55:01 PM3/13/18
to Dirk Pranke, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Hi Dirk! Thanks for the response!

I have a test program that runs against chrome. I'd like to build a runtime version of chrome (with a couple small source changes) that i can send via tar ball so that I can have the test program just extract the tar ball, point to the chrome binary in the extracted files, and run selenium test program. 

The source output is super huge or I'd just use that. And it's also quite slow (because of the debug flags i'm guessing?).

So I want to build out my customized chromium to a tar ball so that users (who already have the dependencies installed) can just point selenium to /extracted/chrome and they are up and running.

Marc-Antoine Ruel

unread,
Mar 13, 2018, 8:53:06 PM3/13/18
to nicholas...@lucidworks.com, Dirk Pranke, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Some form of "src/tools/mb.py isolate chrome" should get you the exact set of files to archive in a neat tree but Dirk will have to come up with the exact incantation.

M-A

Dirk Pranke

unread,
Mar 15, 2018, 3:26:57 PM3/15/18
to Nicholas DiPiazza, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Hi,

I did get the responses. I apologize for the delay, I've been very busy this week and the answer to "how to do this" isn't as easy as I'd like. However, answers below:

On Wed, Mar 14, 2018 at 8:52 PM, Nicholas DiPiazza <nicholas...@lucidworks.com> wrote:
Hi Dirk,

Just checking to see if you got my responses. Let me re answer your questions a little more explicitly:

>> I think it depends on what you mean by "chromium". Do you want just the things sufficient to run the chrome binary? 

Yes. I just want an archive that I can download, unzip and run ./extracted_folder/chrome and be up and running.

Do you want a full installer? 

Run something like the following from the root of the checkout: 

% gn gen out/Default --args="is_official_build=true symbol_level=0"
% ninja -C out/Default chrome
% python tools/mb/mb.py isolate out/Default chrome
% python tools/swarming_client/isolate.py remap -s out/Default/chrome.isolated -o built_chrome
% zip -r built_chrome.zip built_chrome
% rm -fr built_chrome

(I haven't actually verified this, only a similar command using a much smaller target, as I'm not on a machine that can build chrome in less than a couple hours at the moment.)

That will create a zip file with everything you should need to run `built_chrome/out/Default/chrome`. It will probably contain some extraneous files that aren't really needed, but creep in due to various mis-stated test dependencies. If you felt like filing bugs for any that you find, we can fix that.

I've long meant to implement an `mb zip <foo>` subcommand that basically did all that for you for an arbitrary target <foo>. It should be < 50 lines of easy python code in MB ...

>> For windows and Mac, yes. But for Linux I was hoping for a compressed tarball that can be used across different linux distros... just like firefox has.

The above should work for any platform (and any combination of GN args). You can change the zip to tar zcf etc. as needed, of course.
 
Do you want all of the debugging symbols? Etc.

>> No, in fact the development version of chromium I installed seems to be much slower to startup than chromium from the "apt-get install" version. Is that because of debug symbols?

The default build of chrome (with no GN args specified in out/Default/args.gn, i.e. nothing in the --args flag) produces a debug component (shared) build with full symbols. It's slower because no code optimization was done and the DCHECK() macros (and other #ifndef NDEBUG checks) will be running. It'll be much bigger b/c of the debug symbols, and it'll use shared libraries, which you almost certainly don't want.. `is_official_build=true` will set all of the optimizations that you should use for a version meant to be run by end-users and link everything statically. `symbol_level=0` will remove all of the debug symbols.

I hope this answers your questions; let me know if it doesn't.

-- Dirk


Thanks,

-Nicholas 


On Tue, Mar 13, 2018 at 4:37 PM, Dirk Pranke <dpr...@chromium.org> wrote:

Nicholas DiPiazza

unread,
Mar 19, 2018, 11:43:33 AM3/19/18
to Dirk Pranke, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
I gave it another look tonight and I think my main problem is I don't really know what this mb.py python program really does.

So by giving it "chrome" it decided to use the "type" additional_compile_target. What does that mean exactly? 

I'd rather build chromium by the way, is that going to use the same commands?



On Fri, Mar 16, 2018 at 8:14 PM, Nicholas DiPiazza <nicholas...@lucidworks.com> wrote:
Hi,

This fails on this step:

python tools/mb/mb.py isolate out/Default chrome

Traceback (most recent call last):
  File "tools/mb/mb.py", line 63, in Main
    ret = self.args.func()
  File "tools/mb/mb.py", line 298, in CmdIsolate
    return self.RunGNIsolate(vals)
  File "tools/mb/mb.py", line 824, in RunGNIsolate
    command, extra_files = self.GetIsolateCommand(target, vals)
  File "tools/mb/mb.py", line 1023, in GetIsolateCommand
    % (target, test_type), output_path=None)
  File "tools/mb/mb.py", line 1196, in WriteFailureAndRaise
    raise MBErr(msg)
MBErr: No command line for chrome found (test type additional_compile_target).


Here is the stack of variables:

asan = {bool} False
cfi_diag = {bool} False
cmdline = {list} <type 'list'>: []
executable = {str} 'chrome'
executable_suffix = {str} ''
extra_files = {list} <type 'list'>: ['../../.vpython', '../../testing/test_env.py']
is_android = {bool} False
is_fuchsia = {bool} False
is_win = {bool} False

{'sbox_validation_tests': {'type': 'console_test_launcher', 'label': '//sandbox/win:sbox_validation_tests'}, 'telemetry_unittests': {'script': '//testing/scripts/run_telemetry_as_googletest.py', 'type': 'script', 'args': ['--xvfb', '../../tools/perf/run_telemetry_tests', '-v', '--jobs=1', '--chrome-root', '../../'], 'label': '//chrome/test:telemetry_unittests'}, 'cast_graphics_unittests': {'type': 'console_test_launcher', 'label': '//chromecast/graphics:cast_graphics_unittests'}, 'next_version_mini_installer': {'type': 'additional_compile_target', 'label': '//chrome/installer/mini_installer:next_version_mini_installer'}, 'install_static_unittests': {'type': 'console_test_launcher', 'label': '//chrome/install_static:install_static_unittests'}, 'leveldb_service_unittests': {'type': 'console_test_launcher', 'label': '//components/leveldb:leveldb_service_unittests'}, 'sbox_integration_tests': {'type': 'console_test_launcher', 'label': '//sandbox/win:sbox_integration_tests'}, 'angle_gles1_conformance_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_gles1_conformance_tests'}, 'ios_chrome_unittests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test:ios_chrome_unittests'}, 'crashpad_tests': {'type': 'console_test_launcher', 'label': '//third_party/crashpad/crashpad:crashpad_tests'}, 'gn_unittests': {'type': 'console_test_launcher', 'label': '//tools/gn:gn_unittests'}, 'ios_web_unittests': {'args': [], 'type': 'raw', 'label': '//ios/web:ios_web_unittests'}, 'chromeos_components_unittests': {'type': 'console_test_launcher', 'label': '//chromeos/components:chromeos_components_unittests'}, 'ios_components_unittests': {'args': [], 'type': 'raw', 'label': '//ios/components:ios_components_unittests'}, 'metrics_python_tests': {'script': '//testing/scripts/run_isolated_script_test.py', 'type': 'script', 'args': ['../../tools/metrics/metrics_python_tests.py'], 'label': '//tools/metrics:metrics_python_tests'}, 'message_center_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/message_center:message_center_unittests'}, 'ppapi_unittests': {'type': 'console_test_launcher', 'label': '//ppapi:ppapi_unittests'}, 'gl_unittests_ozone': {'executable': 'gl_unittests', 'label_type': 'group', 'type': 'windowed_test_launcher', 'label': '//ui/gl:gl_unittests_ozone'}, 'native_theme_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/native_theme:native_theme_unittests'}, 'app_shell_unittests': {'type': 'windowed_test_launcher', 'label': '//extensions/shell:app_shell_unittests'}, 'ios_web_view_inttests': {'args': [], 'type': 'raw', 'label': '//ios/web_view:ios_web_view_inttests'}, 'chrome_app_unittests': {'type': 'console_test_launcher', 'label': '//chrome/test:chrome_app_unittests'}, 'gl_unittests': {'type': 'console_test_launcher', 'label': '//ui/gl:gl_unittests'}, 'gcm_unit_tests': {'type': 'console_test_launcher', 'label': '//google_apis/gcm:gcm_unit_tests'}, 'views_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/views:views_unittests'}, 'battor_agent_unittests': {'type': 'console_test_launcher', 'label': '//tools/battor_agent:battor_agent_unittests'}, 'ash_unittests': {'type': 'windowed_test_launcher', 'label': '//ash:ash_unittests'}, 'ui_base_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/base:ui_base_unittests'}, 'app_list_presenter_unittests': {'type': 'windowed_test_launcher', 'label': '//ash/app_list/presenter:app_list_presenter_unittests'}, 'net_junit_tests': {'type': 'junit_test', 'label': '//net/android:net_junit_tests'}, 'performance_test_suite': {'script': '//testing/scripts/run_performance_tests.py', 'type': 'script', 'args': ['../../tools/perf/run_benchmark'], 'label': '//chrome/test:performance_test_suite'}, 'wm_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/wm:wm_unittests'}, 'boringssl_ssl_tests': {'type': 'console_test_launcher', 'label': '//third_party/boringssl:boringssl_ssl_tests'}, 'gin_unittests': {'type': 'console_test_launcher', 'label': '//gin:gin_unittests'}, 'extensions_browsertests': {'type': 'windowed_test_launcher', 'label': '//extensions:extensions_browsertests'}, 'webkit_python_tests': {'script': '//testing/scripts/run_isolated_script_test.py', 'type': 'script', 'args': ['../../third_party/WebKit/Tools/Scripts/test-webkitpy'], 'label': '//:webkit_python_tests'}, 'angle_deqp_gles31_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_deqp_gles31_tests'}, 'breakpad_unittests': {'type': 'console_test_launcher', 'label': '//third_party/breakpad:breakpad_unittests'}, 'components_web_restrictions_junit_tests': {'type': 'junit_test', 'label': '//components/web_restrictions:components_web_restrictions_junit_tests'}, 'ios_chrome_smoke_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_smoke_egtests'}, 'setup_unittests': {'type': 'console_test_launcher', 'label': '//chrome/installer/setup:setup_unittests'}, 'ui_junit_tests': {'type': 'junit_test', 'label': '//ui/android:ui_junit_tests'}, 'content_unittests': {'type': 'windowed_test_launcher', 'label': '//content/test:content_unittests'}, 'ozone_gl_unittests': {'type': 'console_test_launcher', 'label': '//ui/ozone/gl:ozone_gl_unittests'}, 'content_shell_test_apk': {'type': 'console_test_launcher', 'label': '//content/shell/android:content_shell_test_apk'}, 'gpu_ipc_service_unittests': {'type': 'windowed_test_launcher', 'label': '//gpu/ipc/service:gpu_ipc_service_unittests'}, 'cast_crash_unittests': {'type': 'console_test_launcher', 'label': '//chromecast/crash:cast_crash_unittests'}, 'chrome_elf_import_unittests': {'type': 'raw', 'label': '//chrome_elf:chrome_elf_import_unittests'}, 'remoting/client:client': {'type': 'additional_compile_target', 'label': '//remoting/client:client'}, 'installer_util_unittests': {'type': 'console_test_launcher', 'label': '//chrome/installer/util:installer_util_unittests'}, 'gfx_unittests': {'type': 'console_test_launcher', 'label': '//ui/gfx:gfx_unittests'}, 'latency_unittests': {'type': 'console_test_launcher', 'label': '//ui/latency:latency_unittests'}, 'components_signin_junit_tests': {'type': 'junit_test', 'label': '//components/signin/core/browser/android:components_signin_junit_tests'}, 'cast_shell_junit_tests': {'type': 'junit_test', 'label': '//chromecast/browser/android:cast_shell_junit_tests'}, 'angle_deqp_egl_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_deqp_egl_tests'}, 'views_mus_interactive_ui_tests': {'type': 'windowed_test_launcher', 'label': '//ui/views/mus:views_mus_interactive_ui_tests'}, 'traffic_annotation_auditor_unittests': {'type': 'console_test_launcher', 'label': '//tools/traffic_annotation/auditor:traffic_annotation_auditor_unittests'}, 'system_webview_apk': {'type': 'additional_compile_target', 'label': '//android_webview:system_webview_apk'}, 'chrome_junit_tests': {'type': 'junit_test', 'label': '//chrome/android:chrome_junit_tests'}, 'jingle_unittests': {'type': 'console_test_launcher', 'label': '//jingle:jingle_unittests'}, 'ios_chrome_ui_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_ui_egtests'}, 'chromium_builder_perf': {'type': 'additional_compile_target', 'label': '//:chromium_builder_perf'}, 'ui_chromeos_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/chromeos:ui_chromeos_unittests'}, 'video_decode_accelerator_unittest': {'args': [], 'type': 'raw', 'label': '//media/gpu:video_decode_accelerator_unittest'}, 'chromedriver': {'type': 'additional_compile_target', 'label': '//chrome/test/chromedriver:chromedriver'}, 'components_gcm_driver_junit_tests': {'type': 'junit_test', 'label': '//components/gcm_driver/android:components_gcm_driver_junit_tests'}, 'media_blink_unittests': {'type': 'windowed_test_launcher', 'label': '//media/blink:media_blink_unittests'}, 'vr_pixeltests': {'type': 'console_test_launcher', 'label': '//chrome/browser/vr:vr_pixeltests'}, 'sandbox_mac_unittests': {'type': 'console_test_launcher', 'label': '//sandbox/mac:sandbox_mac_unittests'}, 'snapshot_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/snapshot:snapshot_unittests'}, 'ios_chrome_bookmarks_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_bookmarks_egtests'}, 'webapk_shell_apk_junit_tests': {'type': 'junit_test', 'label': '//chrome/android/webapk/shell_apk:webapk_shell_apk_junit_tests'}, 'chrome': {'type': 'additional_compile_target', 'label': '//chrome:chrome'}, 'ozone_x11_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/ozone:ozone_x11_unittests'}, 'cronet_package': {'type': 'additional_compile_target', 'label': '//components/cronet/android:cronet_package'}, 'components_invalidation_impl_junit_tests': {'type': 'junit_test', 'label': '//components/invalidation/impl:components_invalidation_impl_junit_tests'}, 'viz_unittests': {'type': 'windowed_test_launcher', 'label': '//components/viz:viz_unittests'}, 'select_to_speak_extension_tests': {'type': 'windowed_test_launcher', 'label': '//chrome/browser/resources/chromeos/select_to_speak:select_to_speak_extension_tests'}, 'blink_platform_unittests': {'type': 'console_test_launcher', 'label': '//third_party/WebKit/Source/platform:blink_platform_unittests'}, 'gles2_conform_test': {'type': 'console_test_launcher', 'label': '//gpu/gles2_conform_support:gles2_conform_test'}, 'dbus_unittests': {'type': 'windowed_test_launcher', 'label': '//dbus:dbus_unittests'}, 'net_unittests': {'type': 'console_test_launcher', 'label': '//net:net_unittests'}, 'postmortem-metadata': {'type': 'additional_compile_target', 'label': '//v8:postmortem-metadata'}, 'dump_syms': {'type': 'additional_compile_target', 'label': '//third_party/breakpad:dump_syms'}, 'wayland_client_perftests': {'type': 'windowed_test_launcher', 'label': '//components/exo/wayland:wayland_client_perftests'}, 'webview_instrumentation_test_apk': {'type': 'console_test_launcher', 'label': '//android_webview/test:webview_instrumentation_test_apk'}, 'ui_android_unittests': {'type': 'console_test_launcher', 'label': '//ui/android:ui_android_unittests'}, 'chrome_sync_shell_test_apk': {'type': 'console_test_launcher', 'label': '//chrome/android:chrome_sync_shell_test_apk'}, 'mash_unittests': {'type': 'windowed_test_launcher', 'label': '//mash:mash_unittests'}, 'url_unittests': {'type': 'console_test_launcher', 'label': '//url:url_unittests'}, 'media_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['media_perftests', '--single-process-tests', '--test-launcher-retry-limit=0', '--isolated-script-test-filter=*::-*_unoptimized::*_unaligned::*unoptimized_aligned'], 'label': '//media:media_perftests'}, 'cast_shell_apk': {'type': 'additional_compile_target', 'label': '//chromecast:cast_shell_apk'}, 'ios_chrome_payments_egtests': {'args': ['--enable-features=WebPayments'], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_payments_egtests'}, 'gn_all': {'type': 'additional_compile_target', 'label': '//:gn_all'}, 'telemetry_perf_tests_experimental': {'script': '//testing/scripts/run_performance_tests.py', 'type': 'script', 'args': ['../../tools/perf/run_benchmark'], 'label': '//chrome/test:telemetry_perf_tests_experimental'}, 'chromiumos_preflight': {'type': 'additional_compile_target', 'label': '//:chromiumos_preflight'}, 'sql_unittests': {'type': 'console_test_launcher', 'label': '//sql:sql_unittests'}, 'media_base_junit_tests': {'type': 'junit_test', 'label': '//media/base/android:media_base_junit_tests'}, 'content_junit_tests': {'type': 'junit_test', 'label': '//content/public/android:content_junit_tests'}, 'keyboard_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/keyboard:keyboard_unittests'}, 'zucchini_unittests': {'type': 'console_test_launcher', 'label': '//chrome/installer/zucchini:zucchini_unittests'}, 'media_router_perf_tests': {'script': '//chrome/test/media_router/telemetry/run_benchmark.py', 'type': 'script', 'args': ['--browser=release', '--also-run-disabled-tests', '-v', '--use-live-sites', '--output-format=chartjson', '--output-dir=${ISOLATED_OUTDIR}'], 'label': '//chrome/test/media_router:media_router_perf_tests'}, 'ipc_tests': {'type': 'console_test_launcher', 'label': '//ipc:ipc_tests'}, 'angle_deqp_gles2_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_deqp_gles2_tests'}, 'cronet_unittests_android': {'type': 'console_test_launcher', 'label': '//components/cronet/android:cronet_unittests_android'}, 'All_syzygy': {'type': 'additional_compile_target', 'label': '//:All_syzygy'}, 'courgette_unittests': {'type': 'console_test_launcher', 'label': '//courgette:courgette_unittests'}, 'devtools_eslint': {'script': '//testing/scripts/run_devtools_check.py', 'type': 'script', 'args': ['../../third_party/WebKit/Source/devtools/scripts/lint_javascript.py'], 'label': '//third_party/WebKit/Source/devtools:devtools_eslint'}, 'nacl_helper_nonsfi_unittests': {'args': [], 'type': 'raw', 'label': '//components/nacl/loader:nacl_helper_nonsfi_unittests'}, 'cast_shell_browsertests': {'type': 'console_test_launcher', 'label': '//chromecast:cast_shell_browsertests'}, 'views_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['--xvfb', 'views_perftests'], 'label': '//ui/views:views_perftests'}, 'angle_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['angle_perftests', '--test-launcher-print-test-stdio=always', '--test-launcher-jobs=1', '--test-launcher-retry-limit=0'], 'label': '//chrome/test:angle_perftests'}, 'mojo_test_apk': {'type': 'console_test_launcher', 'label': '//mojo/android:mojo_test_apk'}, 'media_unittests': {'type': 'windowed_test_launcher', 'label': '//media:media_unittests'}, 'microdump_stackwalk': {'type': 'additional_compile_target', 'label': '//third_party/breakpad:microdump_stackwalk'}, 'service_manager_unittests': {'type': 'console_test_launcher', 'label': '//services/service_manager/tests:service_manager_unittests'}, 'skia_unittests': {'type': 'console_test_launcher', 'label': '//skia:skia_unittests'}, 'nacl_loader_unittests': {'type': 'console_test_launcher', 'label': '//components/nacl/loader:nacl_loader_unittests'}, 'unit_tests': {'type': 'windowed_test_launcher', 'label': '//chrome/test:unit_tests'}, 'components_background_task_scheduler_junit_tests': {'type': 'junit_test', 'label': '//components/background_task_scheduler:components_background_task_scheduler_junit_tests'}, 'chrome_public_test_vr_apk': {'type': 'console_test_launcher', 'label': '//chrome/android:chrome_public_test_vr_apk'}, 'chromeos_unittests': {'type': 'console_test_launcher', 'label': '//chromeos:chromeos_unittests'}, 'printing_unittests': {'type': 'console_test_launcher', 'label': '//printing:printing_unittests'}, 'media_service_unittests': {'type': 'console_test_launcher', 'label': '//media/mojo/services:media_service_unittests'}, 'device_unittests': {'type': 'console_test_launcher', 'label': '//device:device_unittests'}, 'notification_helper_unittests': {'type': 'windowed_test_launcher', 'label': '//notification_helper:notification_helper_unittests'}, 'gpu_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['gpu_perftests', '--adb-path', 'src/third_party/android_tools/sdk/platform-tools/adb'], 'label': '//gpu:gpu_perftests'}, 'ios_chrome_settings_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_settings_egtests'}, 'device_junit_tests': {'type': 'junit_test', 'label': '//device:device_junit_tests'}, 'load_library_perf_tests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['load_library_perf_tests', '--test-launcher-print-test-stdio=always'], 'label': '//chrome/test:load_library_perf_tests'}, 'devtools_closure_compile': {'script': '//testing/scripts/run_devtools_check.py', 'type': 'script', 'args': ['../../third_party/WebKit/Source/devtools/scripts/compile_frontend.py'], 'label': '//third_party/WebKit/Source/devtools:devtools_closure_compile'}, 'chromedriver_py_tests': {'script': '//testing/xvfb.py', 'type': 'script', 'args': ['../../chrome/test/chromedriver/test/run_py_tests.py', '--chromedriver=chromedriver', '--log-path=${ISOLATED_OUTDIR}/chromedriver.log'], 'label': '//chrome/test/chromedriver:chromedriver_py_tests'}, 'cronet_unittests_ios': {'type': 'raw', 'label': '//components/cronet/ios:cronet_unittests_ios'}, 'storage_unittests': {'type': 'console_test_launcher', 'label': '//storage:storage_unittests'}, 'empty_main': {'type': 'additional_compile_target', 'label': '//testing:empty_main'}, 'ocmock_support_unittests': {'args': [], 'type': 'raw', 'label': '//ios/testing:ocmock_support_unittests'}, 'angle_unittests': {'type': 'console_test_launcher', 'label': '//third_party/angle/src/tests:angle_unittests'}, 'cast_unittests': {'type': 'windowed_test_launcher', 'label': '//media/cast:cast_unittests'}, 'cc_unittests': {'type': 'windowed_test_launcher', 'label': '//cc:cc_unittests'}, 'cast_audio_backend_unittests': {'type': 'console_test_launcher', 'label': '//chromecast/media/cma/backend:cast_audio_backend_unittests'}, 'headless_lib': {'type': 'additional_compile_target', 'label': '//headless:headless_lib'}, 'ios_showcase_egtests': {'args': [], 'type': 'raw', 'label': '//ios/showcase:ios_showcase_egtests'}, 'cronet_smoketests_platform_only_instrumentation_apk': {'type': 'console_test_launcher', 'label': '//components/cronet/android:cronet_smoketests_platform_only_instrumentation_apk'}, 'extensions_unittests': {'type': 'windowed_test_launcher', 'label': '//extensions:extensions_unittests'}, 'webapk_client_junit_tests': {'type': 'junit_test', 'label': '//chrome/android/webapk/libs/client:webapk_client_junit_tests'}, 'telemetry_perf_unittests': {'script': '//testing/scripts/run_telemetry_as_googletest.py', 'type': 'script', 'args': ['../../tools/perf/run_tests', '-v'], 'label': '//chrome/test:telemetry_perf_unittests'}, 'content_shell_crash_test': {'script': '//testing/scripts/content_shell_crash_test.py', 'type': 'script', 'label': '//content/shell:content_shell_crash_test'}, 'ios_net_unittests': {'args': [], 'type': 'raw', 'label': '//ios/net:ios_net_unittests'}, 'cronet_unittests': {'type': 'console_test_launcher', 'label': '//components/cronet:cronet_unittests'}, 'monochrome_apk_checker': {'script': '//chrome/android/monochrome/scripts/monochrome_apk_checker_wrapper.py', 'type': 'script', 'args': ['--script', '../../chrome/android/monochrome/scripts/monochrome_apk_checker.py', '--chrome-apk', 'apks/ChromeModernPublic.apk', '--system-webview-apk', 'apks/SystemWebView.apk', '--monochrome-apk', 'apks/MonochromePublic.apk'], 'label': '//chrome/android/monochrome:monochrome_apk_checker'}, 'boringssl_crypto_tests': {'type': 'console_test_launcher', 'label': '//third_party/boringssl:boringssl_crypto_tests'}, 'performance_browser_tests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['performance_browser_tests', '--test-launcher-print-test-stdio=always', '--test-launcher-timeout=120000', '--gtest_filter=TabCapturePerformanceTest.*:CastV2PerformanceTest.*', '--test-launcher-jobs=1', '--enable-gpu'], 'label': '//chrome/test:performance_browser_tests'}, 'headless_unittests': {'type': 'console_test_launcher', 'label': '//headless:headless_unittests'}, 'webkit_layout_tests': {'script': '//testing/scripts/run_isolated_script_test.py', 'type': 'script', 'args': ['--xvfb', '../../third_party/WebKit/Tools/Scripts/run-webkit-tests', '--clobber-old-results', '--debug-rwt-logging', '--no-show-results', '--results-directory', '${ISOLATED_OUTDIR}/layout-test-results'], 'label': '//:webkit_layout_tests'}, 'ios_chrome_reading_list_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_reading_list_egtests'}, 'cronet_test_instrumentation_apk': {'type': 'additional_compile_target', 'label': '//components/cronet/android:cronet_test_instrumentation_apk'}, 'cast_test_lists': {'type': 'additional_compile_target', 'label': '//chromecast:cast_test_lists'}, 'components_variations_junit_tests': {'type': 'junit_test', 'label': '//components/variations/android:components_variations_junit_tests'}, 'android_webview_unittests': {'type': 'console_test_launcher', 'label': '//android_webview/test:android_webview_unittests'}, 'chromium_builder_asan': {'type': 'additional_compile_target', 'label': '//:chromium_builder_asan'}, 'webkit_unit_tests': {'type': 'console_test_launcher', 'label': '//third_party/WebKit/Source/controller:webkit_unit_tests'}, 'ios_web_view_unittests': {'args': [], 'type': 'raw', 'label': '//ios/web_view:ios_web_view_unittests'}, 'vrcore_fps_test': {'script': '//chrome/test/vr/perf/vrcore_fps/run_vrcore_fps_test.py', 'type': 'script', 'args': ['-v'], 'label': '//chrome/test/vr/perf:vrcore_fps_test'}, 'chrome_public_apk': {'type': 'additional_compile_target', 'label': '//chrome/android:chrome_public_apk'}, 'ios_web_shell_egtests': {'args': [], 'type': 'raw', 'label': '//ios/web/shell/test:ios_web_shell_egtests'}, 'webkit_layout_tests_exparchive': {'script': '//testing/scripts/run_isolated_script_test.py', 'type': 'script', 'args': ['--xvfb', '../../third_party/WebKit/Tools/Scripts/run-webkit-tests', '--seed', '4', '--no-show-results', '--clobber-old-results', '--exit-after-n-failures', '5000', '--exit-after-n-crashes-or-timeouts', '100', '--debug-rwt-logging', '--results-directory', '${ISOLATED_OUTDIR}/layout-test-results'], 'label': '//:webkit_layout_tests_exparchive'}, 'base_junit_tests': {'type': 'junit_test', 'label': '//base:base_junit_tests'}, 'libjingle_xmpp_unittests': {'type': 'console_test_launcher', 'label': '//third_party/libjingle_xmpp:libjingle_xmpp_unittests'}, 'telemetry_perf_webview_tests': {'script': '//third_party/catapult/devil/devil/android/tools/system_app.py', 'type': 'script', 'args': ['remove', '--package', 'com.android.webview', 'com.google.android.webview', '-v', '--', '../../testing/scripts/run_telemetry_benchmark_as_googletest.py', '../../tools/perf/run_benchmark'], 'label': '//chrome/test:telemetry_perf_webview_tests'}, 'remoting_unittests': {'type': 'console_test_launcher', 'label': '//remoting:remoting_unittests'}, 'vr_common_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['vr_common_perftests', '--adb-path', 'src/third_party/android_tools/sdk/platform-tools/adb'], 'label': '//chrome/browser/vr:vr_common_perftests'}, 'mac_installer_unittests': {'type': 'console_test_launcher', 'label': '//chrome/installer/mac/app:mac_installer_unittests'}, 'capture_unittests': {'type': 'windowed_test_launcher', 'label': '//media/capture:capture_unittests'}, 'filesystem_service_unittests': {'type': 'console_test_launcher', 'label': '//components/filesystem:filesystem_service_unittests'}, 'gl_tests': {'args': [], 'type': 'raw', 'label': '//gpu:gl_tests'}, 'headless_browsertests': {'type': 'console_test_launcher', 'label': '//headless:headless_browsertests'}, 'components_policy_junit_tests': {'type': 'junit_test', 'label': '//components/policy/android:components_policy_junit_tests'}, 'chrome_elf_unittests': {'type': 'raw', 'label': '//chrome_elf:chrome_elf_unittests'}, 'pdfium_test': {'type': 'additional_compile_target', 'label': '//third_party/pdfium/samples:pdfium_test'}, 'command_buffer_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['command_buffer_perftests', '--adb-path', 'src/third_party/android_tools/sdk/platform-tools/adb'], 'label': '//gpu:command_buffer_perftests'}, 'mini_installer': {'type': 'additional_compile_target', 'label': '//chrome/installer/mini_installer:mini_installer'}, 'mash:all': {'type': 'additional_compile_target', 'label': '//mash:all'}, 'display_unittests': {'type': 'console_test_launcher', 'label': '//ui/display:display_unittests'}, 'headless_shell': {'type': 'additional_compile_target', 'label': '//headless:headless_shell'}, 'cc_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['cc_perftests', '--adb-path', 'src/third_party/android_tools/sdk/platform-tools/adb'], 'label': '//cc:cc_perftests'}, 'chromedriver_unittests': {'type': 'windowed_test_launcher', 'label': '//chrome/test/chromedriver:chromedriver_unittests'}, 'sandbox_linux_unittests': {'type': 'console_test_launcher', 'label': '//sandbox/linux:sandbox_linux_unittests'}, 'monochrome_static_initializers': {'type': 'additional_compile_target', 'label': '//chrome/android:monochrome_static_initializers'}, 'junit_unit_tests': {'type': 'junit_test', 'label': '//testing/android/junit:junit_unit_tests'}, 'compositor_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/compositor:compositor_unittests'}, 'cast_media_unittests': {'type': 'console_test_launcher', 'label': '//chromecast/media:cast_media_unittests'}, 'swiftshader_unittests': {'args': [], 'type': 'raw', 'label': '//third_party/swiftshader/tests/unittests:swiftshader_unittests'}, 'service_junit_tests': {'type': 'junit_test', 'label': '//services:service_junit_tests'}, 'views_mus_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/views/mus:views_mus_unittests'}, 'components_unittests': {'type': 'windowed_test_launcher', 'label': '//components:components_unittests'}, 'content_browsertests': {'type': 'windowed_test_launcher', 'label': '//content/test:content_browsertests'}, 'chrome_official_builder_no_unittests': {'type': 'additional_compile_target', 'label': '//:chrome_official_builder_no_unittests'}, 'accessibility_unittests': {'type': 'console_test_launcher', 'label': '//ui/accessibility:accessibility_unittests'}, 'cronet_test': {'type': 'raw', 'label': '//components/cronet/ios/test:cronet_test'}, 'mojo_common_unittests': {'type': 'console_test_launcher', 'label': '//mojo/common:mojo_common_unittests'}, 'angle_deqp_gles3_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_deqp_gles3_tests'}, 'net_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['net_perftests'], 'label': '//net:net_perftests'}, 'aura_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/aura:aura_unittests'}, 'services_unittests': {'type': 'windowed_test_launcher', 'label': '//services:services_unittests'}, 'telemetry_perf_tests': {'script': '//testing/scripts/run_telemetry_benchmark_as_googletest.py', 'type': 'script', 'args': ['../../tools/perf/run_benchmark'], 'label': '//chrome/test:telemetry_perf_tests'}, 'ozone_unittests': {'type': 'console_test_launcher', 'label': '//ui/ozone:ozone_unittests'}, 'events_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/events:events_unittests'}, 'tracing_perftests': {'script': '//testing/scripts/run_gtest_perf_test.py', 'type': 'script', 'args': ['tracing_perftests', '--test-launcher-print-test-stdio=always', '--adb-path', 'src/third_party/android_tools/sdk/platform-tools/adb'], 'label': '//components/tracing:tracing_perftests'}, 'ui_touch_selection_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/touch_selection:ui_touch_selection_unittests'}, 'chromevox_tests': {'type': 'windowed_test_launcher', 'label': '//chrome/browser/resources/chromeos/chromevox:chromevox_tests'}, 'chrome_official_builder': {'type': 'additional_compile_target', 'label': '//:chrome_official_builder'}, 'ios_chrome_web_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_web_egtests'}, 'motopho_latency_test': {'script': '//chrome/test/vr/perf/latency/run_latency_test.py', 'type': 'script', 'args': ['-v'], 'label': '//chrome/test/vr/perf:motopho_latency_test'}, 'cast_shell': {'type': 'additional_compile_target', 'label': '//chromecast:cast_shell'}, 'browser_tests': {'type': 'windowed_test_launcher', 'label': '//chrome/test:browser_tests'}, 'media_router_tests': {'script': '//chrome/test/media_router/internal/media_router_tests.py', 'type': 'script', 'args': ['--extension', 'mr_extension/', '--test_binary', './browser_tests'], 'label': '//chrome/test/media_router:media_router_tests'}, 'angle_end2end_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_end2end_tests'}, 'telemetry_gpu_unittests': {'script': '//testing/scripts/run_telemetry_as_googletest.py', 'type': 'script', 'args': ['../../content/test/gpu/run_unittests.py', '-v'], 'label': '//chrome/test:telemetry_gpu_unittests'}, 'vr_common_unittests': {'type': 'console_test_launcher', 'label': '//chrome/browser/vr:vr_common_unittests'}, 'vr_perf_tests': {'script': '//testing/scripts/run_telemetry_benchmark_as_googletest.py', 'type': 'script', 'args': ['../../tools/perf/run_benchmark'], 'label': '//tools/perf/contrib/vr_benchmarks:vr_perf_tests'}, 'gpu_unittests': {'type': 'windowed_test_launcher', 'label': '//gpu:gpu_unittests'}, 'exo_unittests': {'type': 'windowed_test_launcher', 'label': '//components/exo:exo_unittests'}, 'ui_arc_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/arc:ui_arc_unittests'}, 'system_webview_shell_layout_test_apk': {'type': 'console_test_launcher', 'label': '//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk'}, 'ios_chrome_adaptive_toolbar_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_adaptive_toolbar_egtests'}, 'interactive_ui_tests': {'args': ['--snapshot-output-dir=${ISOLATED_OUTDIR}'], 'type': 'windowed_test_launcher', 'label': '//chrome/test:interactive_ui_tests'}, 'mojo_unittests': {'type': 'console_test_launcher', 'label': '//mojo:mojo_unittests'}, 'cast_shell_unittests': {'type': 'console_test_launcher', 'label': '//chromecast:cast_shell_unittests'}, 'ios_chrome_integration_egtests': {'args': [], 'type': 'raw', 'label': '//ios/chrome/test/earl_grey:ios_chrome_integration_egtests'}, 'cronet_tests': {'type': 'console_test_launcher', 'label': '//components/cronet:cronet_tests'}, 'cast_base_junit_tests': {'type': 'junit_test', 'label': '//chromecast/base:cast_base_junit_tests'}, 'google_apis_unittests': {'type': 'console_test_launcher', 'label': '//google_apis:google_apis_unittests'}, 'blink_heap_unittests': {'type': 'console_test_launcher', 'label': '//third_party/WebKit/Source/platform/heap:blink_heap_unittests'}, 'ios_web_inttests': {'args': [], 'type': 'raw', 'label': '//ios/web:ios_web_inttests'}, 'midi_unittests': {'type': 'windowed_test_launcher', 'label': '//media/midi:midi_unittests'}, 'base_unittests': {'type': 'console_test_launcher', 'label': '//base:base_unittests'}, 'sync_integration_tests': {'type': 'windowed_test_launcher', 'label': '//chrome/test:sync_integration_tests'}, 'cacheinvalidation_unittests': {'type': 'console_test_launcher', 'label': '//third_party/cacheinvalidation:cacheinvalidation_unittests'}, 'pdf_fuzzers': {'type': 'additional_compile_target', 'label': '//pdf/pdfium/fuzzers:pdf_fuzzers'}, 'chrome_public_test_apk': {'type': 'console_test_launcher', 'label': '//chrome/android:chrome_public_test_apk'}, 'cronet_smoketests_missing_native_library_instrumentation_apk': {'type': 'console_test_launcher', 'label': '//components/cronet/android:cronet_smoketests_missing_native_library_instrumentation_apk'}, 'app_list_unittests': {'type': 'windowed_test_launcher', 'label': '//ui/app_list:app_list_unittests'}, 'blink_tests': {'type': 'additional_compile_target', 'label': '//:blink_tests'}, 'pdf_unittests': {'type': 'console_test_launcher', 'label': '//pdf:pdf_unittests'}, 'webview_ui_test_app_test_apk': {'type': 'console_test_launcher', 'label': '//android_webview/tools/automated_ui_tests:webview_ui_test_app_test_apk'}, 'cast_base_unittests': {'type': 'console_test_launcher', 'label': '//chromecast/base:cast_base_unittests'}, 'components_browsertests': {'type': 'windowed_test_launcher', 'label': '//components:components_browsertests'}, 'remoting/host:host': {'type': 'additional_compile_target', 'label': '//remoting/host:host'}, 'ash_content_unittests': {'type': 'windowed_test_launcher', 'label': '//ash:ash_content_unittests'}, 'sbox_unittests': {'type': 'console_test_launcher', 'label': '//sandbox/win:sbox_unittests'}, 'vr_testapp': {'type': 'additional_compile_target', 'label': '//chrome/browser/vr/testapp:vr_testapp'}, 'wtf_unittests': {'type': 'console_test_launcher', 'label': '//third_party/WebKit/Source/platform/wtf:wtf_unittests'}, 'ios_remoting_unittests': {'args': [], 'type': 'raw', 'label': '//remoting/ios:ios_remoting_unittests'}, 'cast_junit_test_lists': {'type': 'additional_compile_target', 'label': '//chromecast:cast_junit_test_lists'}, 'cronet_sample_test_apk': {'type': 'console_test_launcher', 'label': '//components/cronet/android:cronet_sample_test_apk'}, 'angle_white_box_tests': {'args': [], 'type': 'raw', 'label': '//third_party/angle/src/tests:angle_white_box_tests'}, 'crypto_unittests': {'type': 'console_test_launcher', 'label': '//crypto:crypto_unittests'}, 'headless_tests': {'type': 'additional_compile_target', 'label': '//headless:headless_tests'}, 'telemetry_gpu_integration_test': {'script': '//testing/scripts/run_gpu_integration_test_as_googletest.py', 'type': 'script', 'args': ['../../content/test/gpu/run_gpu_integration_test.py'], 'label': '//chrome/test:telemetry_gpu_integration_test'}}

msan = {bool} False
self = {MetaBuildWrapper} <__main__.MetaBuildWrapper object at 0x7fda32ace050>
target = {str} 'chrome'
test_type = {str} 'additional_compile_target'
tsan = {bool} False
use_xvfb = {bool} True
vals = {dict} {'args_file': '', 'gn_args': 'is_official_build=true symbol_level=0', 'cros_passthrough': False}

On Thu, Mar 15, 2018 at 2:25 PM, Dirk Pranke <dpr...@chromium.org> wrote:
Hi,

I did get the responses. I apologize for the delay, I've been very busy this week and the answer to "how to do this" isn't as easy as I'd like. However, answers below:

Torne (Richard Coles)

unread,
Mar 19, 2018, 12:02:16 PM3/19/18
to nicholas...@lucidworks.com, Dirk Pranke, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
The build target for the main browser binary is always called "chrome" and produces a binary called "chrome"; this doesn't have anything to do with chrome vs chromium and there isn't ever a "chromium" build target no matter what settings you use.



Thanks,

-Nicholas 


--
You received this message because you are subscribed to the Google Groups "chromium-packagers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-packag...@chromium.org.

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.

Nico Weber

unread,
Mar 19, 2018, 12:16:45 PM3/19/18
to Lei Zhang, nicholas...@lucidworks.com, chromium-packagers, Chromium-dev, Mike Frysinger
I think Lei's suggestion is an easy way to do almost exactly what you want. Have you tried it?

Dirk Pranke

unread,
Mar 19, 2018, 12:19:31 PM3/19/18
to Torne (Richard Coles), Nicholas DiPiazza, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
On Mon, Mar 19, 2018 at 9:00 AM, Torne (Richard Coles) <to...@chromium.org> wrote:
The build target for the main browser binary is always called "chrome" and produces a binary called "chrome"; this doesn't have anything to do with chrome vs chromium and there isn't ever a "chromium" build target no matter what settings you use.

On Mon, 19 Mar 2018 at 11:42 Nicholas DiPiazza <nicholas.dipiazza@lucidworks.com> wrote:
I gave it another look tonight and I think my main problem is I don't really know what this mb.py python program really does.
 
So by giving it "chrome" it decided to use the "type" additional_compile_target. What does that mean exactly? 

MB needs to map between GN labels and ninja compile targets, and to determine what command line to use to run a test under swarming. 

It can only do that for targets that have entries in the gn_isolate_map.pyl file. So, you needed to add an entry for "chrome", and we declare
it as an "additional_compile_target" to indicate that it isn't a test and doesn't need additional command line arguments.

It's a simple bug that we should add chrome to this file, for exactly your needs.

As a larger bug to fix, we really shouldn't need to do this mapping at all, but that requires a bunch more work.

I'd rather build chromium by the way, is that going to use the same commands?

As torne@ said, yes, you're actually building Chromium, it's just called chrome in the GN and ninja files. 

-- Dirk



Thanks,

-Nicholas 


--
You received this message because you are subscribed to the Google Groups "chromium-packagers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-packagers+unsub...@chromium.org.

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.

Nicholas DiPiazza

unread,
Mar 19, 2018, 1:13:05 PM3/19/18
to Nico Weber, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Hi Nico,

I hit a problem with the build of the .deb about "RPATH" but tom anderson gave me the solution to that. So I will try that again and let you know if this works. 


> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CAAbOSckz_btVYagM88H7pU52ud8p8YZK39SW-dhEY2348E1SKA%40mail.gmail.com.

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
    http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.

Nicholas DiPiazza

unread,
Mar 19, 2018, 2:02:11 PM3/19/18
to Dirk Pranke, Torne (Richard Coles), Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Hi Dirk! Thanks for the explanation. 

I'm having trouble understanding this comment:

> It's a simple bug that we should add chrome to this file, for exactly your needs. 

Because the  gn_isolate_map.py file already has an entry for chrome:

"chrome": {
    "label": "//chrome:chrome",
    "type": "additional_compile_target",
  },

Pardon my ignorance, but should I change the "type" to something that has a command line component? 




Thanks,

-Nicholas 


--
You received this message because you are subscribed to the Google Groups "chromium-packagers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-packagers+unsubscribe@chromium.org.

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.

Dirk Pranke

unread,
Mar 19, 2018, 2:17:03 PM3/19/18
to Nicholas DiPiazza, Torne (Richard Coles), Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Oh, sorry, I misread the error message. There's a different simple bug to fix, which is that apparently the "isolate" command doesn't work for "additional_compile_targets" (which don't have command lines specified), but it should ;).

-- Dirk

Nicholas DiPiazza

unread,
Mar 19, 2018, 3:30:35 PM3/19/18
to Dirk Pranke, Torne (Richard Coles), Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
OK yeah it seems like that fix would be purely within mb.mb.MetaBuildWrapper#GetIsolateCommand

But I don't know what change to make in order to get that to allow me to proceed. 

Let me know if you have a change you want me to try. 

For now, I'm going to try to do some suggestions recommended above, where I will build the .deb file and then just use a utility to extract that file. But would still rather have this nice packaged command to get a zip bundle of chromium! :) Thanks for all the input, very appreciated. 

-Nicholas 



On Mon, Mar 19, 2018 at 1:15 PM, Dirk Pranke <dpr...@chromium.org> wrote:
Oh, sorry, I misread the error message. There's a different simple bug to fix, which is that apparently the "isolate" command doesn't work for "additional_compile_targets" (which don't have command lines specified), but it should ;).

-- Dirk

Dirk Pranke

unread,
Mar 19, 2018, 3:37:55 PM3/19/18
to Nicholas DiPiazza, Torne (Richard Coles), Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
On Mon, Mar 19, 2018 at 12:29 PM, Nicholas DiPiazza <nicholas...@lucidworks.com> wrote:
OK yeah it seems like that fix would be purely within mb.mb.MetaBuildWrapper#GetIsolateCommand

But I don't know what change to make in order to get that to allow me to proceed. 

Let me know if you have a change you want me to try. 

For now, I'm going to try to do some suggestions recommended above, where I will build the .deb file and then just use a utility to extract that file. But would still rather have this nice packaged command to get a zip bundle of chromium! :) Thanks for all the input, very appreciated. 

I'll try to post a CL that fixes these things later today.

-- Dirk

Nicholas DiPiazza

unread,
Mar 19, 2018, 5:49:22 PM3/19/18
to Dirk Pranke, Torne (Richard Coles), Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
OK I have made some progress here:

Here they say what to do (slightly modified to avoid errors)

  1. cd to the src directory
  2. Run gn args out/Release (A vi window will appear) and add these lines (Thanks Tom Anderson for the fix here)
is_component_build = false
is_debug = false
symbol_level = 0
enable_nacl = true
remove_webcore_debug_symbols = true
enable_linux_installer = true

And save.

  1. List out the possible installer targets available by using this command: ninja -C out/Release -t targets all | grep installer

  2. To build a release of one of these targets (for example Debian) run: ninja -C out/Release "chrome/installer/linux:unstable_deb"

  3. When it finishes, obtain your installer from the out/Release directory.

For me, it created: chromium-browser-unstable_67.0.3368.0-1_amd64.deb

  1. Now use ar to extract the debian file: ar x chromium-browser-unstable_67.0.3368.0-1_amd64.deb

  2. Now extract the two tar files within: tar xvf data.tar && tar xvf control.tar.gz

  3. at this point, you should be able to launch chrome from: ./opt/chromium.org/chromium-unstable/chromium-browser-unstable


So now I do have something usable and it does launch. But the paths are just not convenient.


On Mon, Mar 19, 2018 at 2:35 PM, Dirk Pranke <dpr...@chromium.org> wrote:

Lei Zhang

unread,
Mar 19, 2018, 6:04:46 PM3/19/18
to Nicholas DiPiazza, Dirk Pranke, Torne (Richard Coles), chromium-packagers, Chromium-dev, Mike Frysinger
Horray! For steps 6 and 7, you can also run "dpkg -x" to extract the
.deb file, assuming dpkg is available.
>>>>>>>>>>>>>> > email to chromium-packag...@chromium.org.
>>>>>>>>>>>>>> > To view this discussion on the web visit
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CAAbOSckz_btVYagM88H7pU52ud8p8YZK39SW-dhEY2348E1SKA%40mail.gmail.com.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>>> Google Groups "chromium-packagers" group.
>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>>>> it, send an email to chromium-packag...@chromium.org.

Nicholas DiPiazza

unread,
Mar 20, 2018, 11:40:37 PM3/20/18
to Lei Zhang, Dirk Pranke, Torne (Richard Coles), chromium-packagers, Chromium-dev, Mike Frysinger
Hi Dirk,

Any luck on those fixes related to getting the "isolate" command to work for "additional_compile_targets"? Let me know if I can help. 

Thanks!


>>>>>>>>>>>>>> > To view this discussion on the web visit
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CAAbOSckz_btVYagM88H7pU52ud8p8YZK39SW-dhEY2348E1SKA%40mail.gmail.com.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>>> Google Groups "chromium-packagers" group.
>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>>>> it, send an email to chromium-packagers+unsubscribe@chromium.org.

Dirk Pranke

unread,
Mar 21, 2018, 9:32:54 PM3/21/18
to Nicholas DiPiazza, Lei Zhang, Torne (Richard Coles), chromium-packagers, Chromium-dev, Mike Frysinger
Patch uploaded: https://crrev.com/c/974718 . It hasn't landed yet, but you should be able to apply it as-is if need be.

-- Dirk

Nicholas DiPiazza

unread,
Mar 22, 2018, 10:37:34 AM3/22/18
to Dirk Pranke, Lei Zhang, Torne (Richard Coles), chromium-packagers, Chromium-dev, Mike Frysinger
Here is the output of:

gn gen out/Default --args="is_official_build=true symbol_level=0" && ninja -C out/Default chrome && python tools/mb/mb.py isolate out/Default chrome && python tools/mb/mb.py zip out/Default chrome chrome-linux-x64.zip



Looks like great success to me!

Also the isolate command for chrome target is fixed as well.

This made a "default" build. What would be your recommended configuration parameters for a "release" build? If creating a release build, i'm wondering if it will work/will have the testing directory and such.


On Wed, Mar 21, 2018 at 8:30 PM, Dirk Pranke <dpr...@chromium.org> wrote:
Patch uploaded: https://crrev.com/c/974718 . It hasn't landed yet, but you should be able to apply it as-is if need be.

-- Dirk

Torne (Richard Coles)

unread,
Mar 22, 2018, 11:24:00 AM3/22/18
to Nicholas DiPiazza, Dirk Pranke, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
is_official_build=true is what makes a shippable release build. The name of the directory doesn't mean anything; you could use out/release or out/official or out/sandwiches if you wanted :)
The isolate tool is meant for our bots to pass data around, so might include things related to testing that aren't actually required by a user, and I don't think any build options will make a difference to this; to reduce this any further you may have to just experiment.

On Thu, 22 Mar 2018 at 10:36 Nicholas DiPiazza <nicholas...@lucidworks.com> wrote:
Here is the output of:

gn gen out/Default --args="is_official_build=true symbol_level=0" && ninja -C out/Default chrome && python tools/mb/mb.py isolate out/Default chrome && python tools/mb/mb.py zip out/Default chrome chrome-linux-x64.zip



Looks like great success to me!

Also the isolate command for chrome target is fixed as well.

This made a "default" build. What would be your recommended configuration parameters for a "release" build? If creating a release build, i'm wondering if it will work/will have the testing directory and such.

On Wed, Mar 21, 2018 at 8:30 PM, Dirk Pranke <dpr...@chromium.org> wrote:
Patch uploaded: https://crrev.com/c/974718 . It hasn't landed yet, but you should be able to apply it as-is if need be.

-- Dirk
>>>>>>>>>>>>>> > email to chromium-packag...@chromium.org.

Dirk Pranke

unread,
Mar 22, 2018, 12:30:23 PM3/22/18
to Torne (Richard Coles), Nicholas DiPiazza, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
`zip` replaces the need for the `ninja` and `isolate` commands, so you just need to run `gn gen out/Default --args="is_official_build=true" && python tools/mb/mb.py gen out/Default chrome chrome.zip`.

MB doesn't have an --args flag (so you still need the first step), because the purpose of MB is to work with particular builder config, not to create custom builds, though we could also add an --args flag if really desired.

-- Dirk

On Thu, Mar 22, 2018 at 8:22 AM, Torne (Richard Coles) <to...@chromium.org> wrote:
is_official_build=true is what makes a shippable release build. The name of the directory doesn't mean anything; you could use out/release or out/official or out/sandwiches if you wanted :)
The isolate tool is meant for our bots to pass data around, so might include things related to testing that aren't actually required by a user, and I don't think any build options will make a difference to this; to reduce this any further you may have to just experiment.
On Thu, 22 Mar 2018 at 10:36 Nicholas DiPiazza <nicholas.dipiazza@lucidworks.com> wrote:
Here is the output of:

gn gen out/Default --args="is_official_build=true symbol_level=0" && ninja -C out/Default chrome && python tools/mb/mb.py isolate out/Default chrome && python tools/mb/mb.py zip out/Default chrome chrome-linux-x64.zip



Looks like great success to me!

Also the isolate command for chrome target is fixed as well.

This made a "default" build. What would be your recommended configuration parameters for a "release" build? If creating a release build, i'm wondering if it will work/will have the testing directory and such.

On Wed, Mar 21, 2018 at 8:30 PM, Dirk Pranke <dpr...@chromium.org> wrote:
Patch uploaded: https://crrev.com/c/974718 . It hasn't landed yet, but you should be able to apply it as-is if need be.

-- Dirk
>>>>>>>>>>>>>> > email to chromium-packagers+unsub...@chromium.org.

>>>>>>>>>>>>>> > To view this discussion on the web visit
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CAAbOSckz_btVYagM88H7pU52ud8p8YZK39SW-dhEY2348E1SKA%40mail.gmail.com.
>>>>>>>>>>>>>

--
You received this message because you are subscribed to the Google Groups "chromium-packagers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-packagers+unsub...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/chromium-packagers/CAEV-rjdxEgaESAXMy8GiAaJ7V_zkFny72WkMqf0fKge582612w%40mail.gmail.com.

Torne (Richard Coles)

unread,
Mar 22, 2018, 4:54:09 PM3/22/18
to Nicholas DiPiazza, Dirk Pranke, Lei Zhang, chromium-packagers, Chromium-dev, Mike Frysinger
Compare the size/file contents to a Chrome package?

On Thu, 22 Mar 2018 at 13:21 Nicholas DiPiazza <nicholas...@lucidworks.com> wrote:
OK it's about 200+MB. That's a little bigger than I thought it'd be but perhaps that's totally normal. 

On Thu, Mar 22, 2018 at 11:28 AM, Dirk Pranke <dpr...@chromium.org> wrote:
`zip` replaces the need for the `ninja` and `isolate` commands, so you just need to run `gn gen out/Default --args="is_official_build=true" && python tools/mb/mb.py gen out/Default chrome chrome.zip`.

MB doesn't have an --args flag (so you still need the first step), because the purpose of MB is to work with particular builder config, not to create custom builds, though we could also add an --args flag if really desired.

-- Dirk
On Thu, Mar 22, 2018 at 8:22 AM, Torne (Richard Coles) <to...@chromium.org> wrote:
is_official_build=true is what makes a shippable release build. The name of the directory doesn't mean anything; you could use out/release or out/official or out/sandwiches if you wanted :)
The isolate tool is meant for our bots to pass data around, so might include things related to testing that aren't actually required by a user, and I don't think any build options will make a difference to this; to reduce this any further you may have to just experiment.
Reply all
Reply to author
Forward
0 new messages