From d9578367949f9f333c2bc10e3e385ce09b8eeb3b Mon Sep 17 00:00:00 2001 From: Jeremy Leconte Date: Wed, 9 Nov 2022 14:45:04 +0100 Subject: [PATCH] Use gtest_parallel for PipeWire tests. This CL will also make PipeWire tests retried 3 times in case of failures. Change-Id: I9c66351f7ee171e29266fe4b8dcd52ca282c8f6d Bug: webrtc:14644 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/282820 Reviewed-by: Mirko Bonadei Owners-Override: Mirko Bonadei Commit-Queue: Jeremy Leconte Cr-Commit-Position: refs/heads/main@{#38595} --- infra/specs/client.webrtc.json | 157 +++++++++----- infra/specs/gn_isolate_map.pyl | 11 +- infra/specs/test_suites.pyl | 5 +- infra/specs/tryserver.webrtc.json | 204 +++++++++++------- infra/specs/waterfalls.pyl | 32 +-- modules/desktop_capture/BUILD.gn | 13 +- .../configure_pipewire.py | 46 +--- tools_webrtc/mb/mb.py | 3 + 8 files changed, 252 insertions(+), 219 deletions(-) rename modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py => tools_webrtc/configure_pipewire.py (56%) diff --git a/infra/specs/client.webrtc.json b/infra/specs/client.webrtc.json index 563407339a..93615be55e 100644 --- a/infra/specs/client.webrtc.json +++ b/infra/specs/client.webrtc.json @@ -3409,6 +3409,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -4708,6 +4729,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -5141,6 +5183,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -6358,32 +6421,6 @@ }, "test_id_prefix": "ninja://pc:peerconnection_unittests/" }, - { - "args": [ - ".", - "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json" - ], - "isolate_name": "pipewire_shared_screencast_stream_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pipewire_shared_screencast_stream_test", - "resultdb": { - "result_file": "${ISOLATED_OUTDIR}/gtest_output.json", - "result_format": "gtest_json" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Ubuntu-18.04" - } - ] - }, - "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/" - }, { "isolate_name": "rtc_media_unittests", "merge": { @@ -6469,6 +6506,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -6818,32 +6876,6 @@ }, "test_id_prefix": "ninja://pc:peerconnection_unittests/" }, - { - "args": [ - ".", - "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json" - ], - "isolate_name": "pipewire_shared_screencast_stream_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pipewire_shared_screencast_stream_test", - "resultdb": { - "result_file": "${ISOLATED_OUTDIR}/gtest_output.json", - "result_format": "gtest_json" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Ubuntu-18.04" - } - ] - }, - "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/" - }, { "isolate_name": "rtc_media_unittests", "merge": { @@ -6929,6 +6961,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { diff --git a/infra/specs/gn_isolate_map.pyl b/infra/specs/gn_isolate_map.pyl index 598b15fac6..25ab4f2e2d 100644 --- a/infra/specs/gn_isolate_map.pyl +++ b/infra/specs/gn_isolate_map.pyl @@ -80,13 +80,10 @@ "label": "//pc:peerconnection_unittests", "type": "console_test_launcher", }, - "pipewire_shared_screencast_stream_test": { - "label": - "//modules/desktop_capture:pipewire_shared_screencast_stream_test", - "type": - "script", - "script": - "//modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py", + "shared_screencast_stream_test": { + "label": "//modules/desktop_capture:shared_screencast_stream_test", + "type": "console_test_launcher", + "use_pipewire": True, }, "rtc_media_unittests": { "label": "//media:rtc_media_unittests", diff --git a/infra/specs/test_suites.pyl b/infra/specs/test_suites.pyl index 6037ba6696..88de021205 100644 --- a/infra/specs/test_suites.pyl +++ b/infra/specs/test_suites.pyl @@ -184,10 +184,7 @@ 'webrtc_nonparallel_tests': {}, }, 'linux_desktop_specific_tests': { - 'pipewire_shared_screencast_stream_test': { - 'args': ['.'], - 'mixins': ['resultdb-gtest-json-format'], - }, + 'shared_screencast_stream_test': {}, }, 'more_configs_tests': { 'peerconnection_unittests': { diff --git a/infra/specs/tryserver.webrtc.json b/infra/specs/tryserver.webrtc.json index 4ed88ea142..a5dc5aebf5 100644 --- a/infra/specs/tryserver.webrtc.json +++ b/infra/specs/tryserver.webrtc.json @@ -6092,6 +6092,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -6446,32 +6467,6 @@ }, "test_id_prefix": "ninja://pc:peerconnection_unittests/" }, - { - "args": [ - ".", - "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json" - ], - "isolate_name": "pipewire_shared_screencast_stream_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pipewire_shared_screencast_stream_test", - "resultdb": { - "result_file": "${ISOLATED_OUTDIR}/gtest_output.json", - "result_format": "gtest_json" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Ubuntu-18.04" - } - ] - }, - "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/" - }, { "isolate_name": "rtc_media_unittests", "merge": { @@ -6557,6 +6552,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -6906,32 +6922,6 @@ }, "test_id_prefix": "ninja://pc:peerconnection_unittests/" }, - { - "args": [ - ".", - "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json" - ], - "isolate_name": "pipewire_shared_screencast_stream_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pipewire_shared_screencast_stream_test", - "resultdb": { - "result_file": "${ISOLATED_OUTDIR}/gtest_output.json", - "result_format": "gtest_json" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Ubuntu-18.04" - } - ] - }, - "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/" - }, { "isolate_name": "rtc_media_unittests", "merge": { @@ -7017,6 +7007,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -7824,32 +7835,6 @@ }, "test_id_prefix": "ninja://pc:peerconnection_unittests/" }, - { - "args": [ - ".", - "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json" - ], - "isolate_name": "pipewire_shared_screencast_stream_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pipewire_shared_screencast_stream_test", - "resultdb": { - "result_file": "${ISOLATED_OUTDIR}/gtest_output.json", - "result_format": "gtest_json" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Ubuntu-18.04" - } - ] - }, - "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/" - }, { "isolate_name": "rtc_media_unittests", "merge": { @@ -7935,6 +7920,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -8850,6 +8856,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { @@ -9283,6 +9310,27 @@ }, "test_id_prefix": "ninja://:rtc_unittests/" }, + { + "isolate_name": "shared_screencast_stream_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "shared_screencast_stream_test", + "resultdb": { + "result_format": "json" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04" + } + ] + }, + "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/" + }, { "isolate_name": "slow_peer_connection_unittests", "merge": { diff --git a/infra/specs/waterfalls.pyl b/infra/specs/waterfalls.pyl index 1df1a0c314..1a9257e0b8 100644 --- a/infra/specs/waterfalls.pyl +++ b/infra/specs/waterfalls.pyl @@ -83,9 +83,7 @@ 'os_type': 'linux', 'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'], 'test_suites': { - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. - 'isolated_scripts': 'desktop_tests', + 'isolated_scripts': 'linux_tests', }, }, 'Linux MSan': { @@ -95,8 +93,6 @@ # TODO(crbug.com/webrtc/14568): Using 'linux_tests' # fails on "MemorySanitizer: use-of-uninitialized-value in # libpipewire-0.3.so." - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. 'isolated_scripts': 'desktop_tests', }, }, @@ -107,8 +103,6 @@ # TODO(crbug.com/webrtc/14568): Using 'linux_tests' # fails on "ThreadSanitizer: data race on vptr (ctor/dtor vs # virtual call) in shared_screencast_stream_test." - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. 'isolated_scripts': 'desktop_tests', }, }, @@ -116,18 +110,14 @@ 'os_type': 'linux', 'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'], 'test_suites': { - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. - 'isolated_scripts': 'desktop_tests', + 'isolated_scripts': 'linux_tests', }, }, 'Linux UBSan vptr': { 'os_type': 'linux', 'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'], 'test_suites': { - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. - 'isolated_scripts': 'desktop_tests', + 'isolated_scripts': 'linux_tests', }, }, 'Linux32 Debug': { @@ -509,9 +499,7 @@ 'os_type': 'linux', 'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'], 'test_suites': { - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. - 'isolated_scripts': 'desktop_tests', + 'isolated_scripts': 'linux_tests', }, }, 'linux_compile_arm64_dbg': {}, @@ -549,8 +537,6 @@ # TODO(crbug.com/webrtc/14568): Using 'linux_tests' # fails on "MemorySanitizer: use-of-uninitialized-value in # libpipewire-0.3.so." - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. 'isolated_scripts': 'desktop_tests', }, }, @@ -568,8 +554,6 @@ # TODO(crbug.com/webrtc/14568): Using 'linux_tests' # fails on "ThreadSanitizer: data race on vptr (ctor/dtor vs # virtual call) in shared_screencast_stream_test." - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. 'isolated_scripts': 'desktop_tests', }, }, @@ -577,18 +561,14 @@ 'os_type': 'linux', 'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'], 'test_suites': { - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. - 'isolated_scripts': 'desktop_tests', + 'isolated_scripts': 'linux_tests', }, }, 'linux_ubsan_vptr': { 'os_type': 'linux', 'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'], 'test_suites': { - # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests - # when the failing pipewire tests are ignored on sanitizers. - 'isolated_scripts': 'desktop_tests', + 'isolated_scripts': 'linux_tests', }, }, 'linux_x86_dbg': { diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn index 34a5704b40..2deb71c5b5 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -139,20 +139,9 @@ if (rtc_include_tests) { deps += [ ":pipewire_stubs" ] } + data = [ "../../third_party/pipewire" ] public_configs = [ ":pipewire_config" ] } - - group("pipewire_shared_screencast_stream_test") { - testonly = true - - deps = [ ":shared_screencast_stream_test" ] - - data = [ - "../../third_party/pipewire", - "linux/wayland/test/shared_screencast_stream_test.py", - "${root_out_dir}/shared_screencast_stream_test", - ] - } } rtc_library("desktop_capture_unittests") { diff --git a/modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py b/tools_webrtc/configure_pipewire.py similarity index 56% rename from modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py rename to tools_webrtc/configure_pipewire.py index bf97d0c30e..79f8accbb4 100644 --- a/modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py +++ b/tools_webrtc/configure_pipewire.py @@ -7,43 +7,19 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. """ -This script is the wrapper that runs the "shared_screencast_screen" test. +This script is a wrapper that loads "pipewire" library. """ -import argparse -import json import os import subprocess import sys -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -# Get rid of "modules/desktop_capture/linux/wayland/test" -ROOT_DIR = os.path.normpath( - os.path.join(SCRIPT_DIR, os.pardir, os.pardir, os.pardir, os.pardir, - os.pardir)) - - -def _ParseArgs(): - parser = argparse.ArgumentParser( - description='Run shared_screencast_screen test.') - parser.add_argument('build_dir', - help='Path to the build directory (e.g. out/Release).') - parser.add_argument( - '--isolated-script-test-output', - default=None, - help='Path to output JSON file which Chromium infra requires.') - # Unused args - # We just need to avoid passing these to the test - parser.add_argument( - '--isolated-script-test-perf-output', - default=None, - help='Path to store perf results in histogram proto format.') - - return parser.parse_known_args() +_SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) +_SRC_DIR = os.path.dirname(_SCRIPT_DIR) def _GetPipeWireDir(): - pipewire_dir = os.path.join(ROOT_DIR, 'third_party', 'pipewire', + pipewire_dir = os.path.join(_SRC_DIR, 'third_party', 'pipewire', 'linux-amd64') if not os.path.isdir(pipewire_dir): @@ -72,11 +48,10 @@ def _ConfigurePipeWirePaths(path): def main(): - args, extra_args = _ParseArgs() - pipewire_dir = _GetPipeWireDir() if pipewire_dir is None: + print('configure-pipewire: Couldn\'t find directory %s' % pipewire_dir) return 1 _ConfigurePipeWirePaths(pipewire_dir) @@ -85,20 +60,11 @@ def main(): pipewire_media_session_process = subprocess.Popen(["pipewire-media-session"], stdout=None) - test_command = os.path.join(args.build_dir, 'shared_screencast_stream_test') - pipewire_test_process = subprocess.run([test_command] + extra_args, - stdout=True, - check=False) - - return_value = pipewire_test_process.returncode + return_value = subprocess.call(sys.argv[1:]) pipewire_media_session_process.terminate() pipewire_process.terminate() - if args.isolated_script_test_output: - with open(args.isolated_script_test_output, 'w') as f: - json.dump({"version": 3}, f) - return return_value diff --git a/tools_webrtc/mb/mb.py b/tools_webrtc/mb/mb.py index 620a0c1d26..07cb14c016 100755 --- a/tools_webrtc/mb/mb.py +++ b/tools_webrtc/mb/mb.py @@ -102,6 +102,9 @@ class WebRTCMetaBuildWrapper(mb.MetaBuildWrapper): vpython_exe, '../../tools_webrtc/ensure_webcam_is_running.py' ] extra_files.append('../../tools_webrtc/ensure_webcam_is_running.py') + if isolate_map[target].get('use_pipewire', False): + cmdline += [vpython_exe, '../../tools_webrtc/configure_pipewire.py'] + extra_files.append('../../tools_webrtc/configure_pipewire.py') # is_linux uses use_ozone and x11 by default. use_x11 = is_linux