From 151aee4220ae44d5458a41cc2109693a8d285783 Mon Sep 17 00:00:00 2001 From: borenet Date: Wed, 27 Jul 2016 14:05:54 -0700 Subject: Fix silently-failing compile Ouch... TBR=rmistry BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2191663002 Review-Url: https://codereview.chromium.org/2191663002 --- infra/bots/recipe_modules/skia/default_flavor.py | 2 + infra/bots/recipe_modules/skia/fake_specs.py | 60 ++++--- .../Build-Ubuntu-GCC-x86-Debug.json | 172 +++++++++++++++++++++ .../swarm_compile.expected/failed_compile.json | 140 +++++++++++++++++ infra/bots/recipes/swarm_compile.py | 17 ++ 5 files changed, 358 insertions(+), 33 deletions(-) create mode 100644 infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json create mode 100644 infra/bots/recipes/swarm_compile.expected/failed_compile.json (limited to 'infra') diff --git a/infra/bots/recipe_modules/skia/default_flavor.py b/infra/bots/recipe_modules/skia/default_flavor.py index 3a444e44ba..9c0734047e 100644 --- a/infra/bots/recipe_modules/skia/default_flavor.py +++ b/infra/bots/recipe_modules/skia/default_flavor.py @@ -144,6 +144,8 @@ class DefaultFlavorUtils(object): # The linker occasionally crashes on Windows. Try again. self._skia_api.run(self._skia_api.m.step, 'build %s' % target, cmd=cmd, env=env, cwd=self._skia_api.m.path['checkout']) + else: + raise if 'CommandBuffer' in self._skia_api.builder_name: self._skia_api._run_once(self.build_command_buffer) diff --git a/infra/bots/recipe_modules/skia/fake_specs.py b/infra/bots/recipe_modules/skia/fake_specs.py index f31da5e97f..b83063dc3b 100644 --- a/infra/bots/recipe_modules/skia/fake_specs.py +++ b/infra/bots/recipe_modules/skia/fake_specs.py @@ -278,6 +278,33 @@ FAKE_SPECS = { 'upload_dm_results': True, 'upload_perf_results': False, }, + 'Build-Ubuntu-GCC-x86-Debug': { + 'build_targets': [ + 'most', + ], + 'builder_cfg': { + 'compiler': 'GCC', + 'configuration': 'Debug', + 'is_trybot': False, + 'os': 'Ubuntu', + 'role': 'Build', + 'target_arch': 'x86', + }, + 'configuration': 'Debug', + 'dm_flags': [ + '--dummy-flags', + ], + 'do_perf_steps': False, + 'do_test_steps': False, + 'env': { + 'GYP_DEFINES': 'skia_arch_type=x86 skia_warnings_as_errors=1', + }, + 'nanobench_flags': [ + '--dummy-flags', + ], + 'upload_dm_results': True, + 'upload_perf_results': False, + }, 'Build-Ubuntu-GCC-x86_64-Debug': { 'build_targets': [ 'most', @@ -1179,39 +1206,6 @@ FAKE_SPECS = { 'upload_dm_results': False, 'upload_perf_results': False, }, - 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Release-Vulkan': { - 'build_targets': [ - 'dm', - ], - 'builder_cfg': { - 'arch': 'x86_64', - 'compiler': 'MSVC', - 'configuration': 'Release', - 'cpu_or_gpu': 'GPU', - 'cpu_or_gpu_value': 'GTX660', - 'extra_config': 'Vulkan', - 'is_trybot': False, - 'model': 'ShuttleA', - 'os': 'Win10', - 'role': 'Test', - }, - 'configuration': 'Release_x64', - 'dm_flags': [ - '--dummy-flags', - ], - 'do_perf_steps': False, - 'do_test_steps': True, - 'env': { - 'GYP_DEFINES': - ('qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86_64 skia_vulkan=1 skia_warn' - 'ings_as_errors=0 skia_win_debuggers_path=c:/DbgHelp'), - }, - 'nanobench_flags': [ - '--dummy-flags', - ], - 'upload_dm_results': True, - 'upload_perf_results': False, - }, 'Test-Win8-MSVC-ShuttleA-GPU-HD7770-x86_64-Release': { 'build_targets': [ 'dm', diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json b/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json new file mode 100644 index 0000000000..0bf3675700 --- /dev/null +++ b/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json @@ -0,0 +1,172 @@ +[ + { + "cmd": [ + "python", + "-u", + "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n", + "[CUSTOM_/_B_WORK]", + "511" + ], + "name": "makedirs checkout_path", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import sys, os@@@", + "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@", + "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@", + "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py", + "config", + "--spec", + "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]\ntarget_os = ['llvm']" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient setup" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py", + "sync", + "--nohooks", + "--force", + "--verbose", + "--delete_unversioned_trees", + "--revision", + "skia@abc123", + "--output-json", + "/path/to/tmp/json" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient sync", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"skia/\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"revision\": 164710@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@SET_BUILD_PROPERTY@got_revision@164710@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[CUSTOM_/_B_WORK]/skia/tools/buildbot_spec.py", + "/path/to/tmp/json", + "Build-Ubuntu-GCC-x86-Debug" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "name": "exec buildbot_spec.py", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"most\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"GCC\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"os\": \"Ubuntu\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"skia_arch_type=x86 skia_warnings_as_errors=1\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "make", + "most" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Debug", + "CHROME_HEADLESS": "1", + "CHROME_PATH": "[SLAVE_BUILD]/src", + "GYP_DEFINES": "skia_arch_type=x86 skia_warnings_as_errors=1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86-Debug" + }, + "name": "build most" + }, + { + "cmd": [ + "python", + "-u", + "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['dm', 'dm.exe', 'nanobench', 'nanobench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86-Debug/Debug", + "[CUSTOM_[SWARM_OUT_DIR]]/out/Debug" + ], + "name": "copy build products", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@import errno@@@", + "@@@STEP_LOG_LINE@python.inline@import glob@@@", + "@@@STEP_LOG_LINE@python.inline@import os@@@", + "@@@STEP_LOG_LINE@python.inline@import shutil@@@", + "@@@STEP_LOG_LINE@python.inline@import sys@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@", + "@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['dm', 'dm.exe', 'nanobench', 'nanobench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@try:@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@", + "@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@", + "@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@", + "@@@STEP_LOG_LINE@python.inline@ raise@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@", + "@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@", + "@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@", + "@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@", + "@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@", + "@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file diff --git a/infra/bots/recipes/swarm_compile.expected/failed_compile.json b/infra/bots/recipes/swarm_compile.expected/failed_compile.json new file mode 100644 index 0000000000..2bdddaef3a --- /dev/null +++ b/infra/bots/recipes/swarm_compile.expected/failed_compile.json @@ -0,0 +1,140 @@ +[ + { + "cmd": [ + "python", + "-u", + "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n", + "[CUSTOM_/_B_WORK]", + "511" + ], + "name": "makedirs checkout_path", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import sys, os@@@", + "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@", + "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@", + "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py", + "config", + "--spec", + "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]\ntarget_os = ['llvm']" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient setup" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py", + "sync", + "--nohooks", + "--force", + "--verbose", + "--delete_unversioned_trees", + "--revision", + "skia@abc123", + "--output-json", + "/path/to/tmp/json" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient sync", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"skia/\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"revision\": 164710@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@SET_BUILD_PROPERTY@got_revision@164710@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[CUSTOM_/_B_WORK]/skia/tools/buildbot_spec.py", + "/path/to/tmp/json", + "Build-Ubuntu-GCC-x86-Debug" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "name": "exec buildbot_spec.py", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"most\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"GCC\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"os\": \"Ubuntu\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"skia_arch_type=x86 skia_warnings_as_errors=1\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "make", + "most" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Debug", + "CHROME_HEADLESS": "1", + "CHROME_PATH": "[SLAVE_BUILD]/src", + "GYP_DEFINES": "skia_arch_type=x86 skia_warnings_as_errors=1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86-Debug" + }, + "name": "build most", + "~followup_annotations": [ + "step returned non-zero exit code: 1", + "@@@STEP_FAILURE@@@" + ] + }, + { + "name": "$result", + "reason": "Step('build most') failed with return_code 1", + "recipe_result": null, + "status_code": 1 + } +] \ No newline at end of file diff --git a/infra/bots/recipes/swarm_compile.py b/infra/bots/recipes/swarm_compile.py index 8e7370fdbc..274ca5af95 100644 --- a/infra/bots/recipes/swarm_compile.py +++ b/infra/bots/recipes/swarm_compile.py @@ -25,6 +25,7 @@ TEST_BUILDERS = { 'Build-Ubuntu-GCC-Arm7-Debug-Android-Trybot', 'Build-Ubuntu-GCC-Arm7-Release-Android', 'Build-Ubuntu-GCC-Arm7-Release-Android_Vulkan', + 'Build-Ubuntu-GCC-x86-Debug', 'Build-Ubuntu-GCC-x86_64-Debug-MSAN', 'Build-Ubuntu-GCC-x86_64-Release-CMake', 'Build-Ubuntu-GCC-x86_64-Release-PDFium', @@ -83,6 +84,22 @@ def GenTests(api): mastername = 'client.skia.compile' slavename = 'skiabot-win-compile-000' + buildername = 'Build-Ubuntu-GCC-x86-Debug' + yield ( + api.test('failed_compile') + + api.properties(buildername=buildername, + mastername=mastername, + slavename=slavename, + buildnumber=5, + revision='abc123', + path_config='kitchen', + swarm_out_dir='[SWARM_OUT_DIR]') + + api.path.exists( + api.path['slave_build'].join('tmp', 'uninteresting_hashes.txt') + ) + + api.step_data('build most', retcode=1) + ) + buildername = 'Build-Win-MSVC-x86-Debug' yield ( api.test('win_retry_failed_compile') + -- cgit v1.2.3