[devtools] Add full (clean) build capability
Bug: chromium:1143363
Change-Id: Ia562434c1191adbc62dbe8d19053f157f46e8e6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/build/+/2506750
Commit-Queue: Liviu Rau <liviurau@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
diff --git a/recipes/recipes/devtools/devtools-frontend.expected/basic debug.json b/recipes/recipes/devtools/devtools-frontend.expected/basic debug.json
index 79729d6..7fbbc5d 100644
--- a/recipes/recipes/devtools/devtools-frontend.expected/basic debug.json
+++ b/recipes/recipes/devtools/devtools-frontend.expected/basic debug.json
@@ -175,16 +175,22 @@
},
{
"cmd": [
- "rm",
- "-rf",
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gn.py",
+ "clean",
"[CACHE]/builder/devtools-frontend/out/Debug"
],
+ "cwd": "[CACHE]/builder/devtools-frontend/out/Debug",
"env_prefixes": {
"PATH": [
"[CACHE]/builder/devtools-frontend/third_party"
]
},
- "name": "clean debug"
+ "name": "clean outdir",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[gn output]@@@"
+ ]
},
{
"cmd": [
diff --git a/recipes/recipes/devtools/devtools-frontend.py b/recipes/recipes/devtools/devtools-frontend.py
index 46658fa..0858045 100644
--- a/recipes/recipes/devtools/devtools-frontend.py
+++ b/recipes/recipes/devtools/devtools-frontend.py
@@ -4,7 +4,7 @@
from contextlib import contextmanager
from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb
-from recipe_engine.post_process import (DropExpectation, StatusFailure)
+from recipe_engine import post_process
import json
DEPS = [
@@ -15,6 +15,7 @@
'depot_tools/git',
'depot_tools/gclient',
'depot_tools/tryserver',
+ 'gn',
'perf_dashboard',
'recipe_engine/buildbucket',
'recipe_engine/context',
@@ -39,12 +40,12 @@
with _depot_on_path(api):
api.chromium.ensure_goma()
- _clean_debug(api)
+ clean_out_dir(api)
api.chromium.run_gn(use_goma=True)
compilation_result = api.chromium.compile(use_goma_module=True)
if compilation_result.status != common_pb.SUCCESS:
return compilation_result
- if is_debug(api):
+ if is_debug_builder(api):
return
run_unit_tests(api)
run_type_check(api)
@@ -64,9 +65,11 @@
return api.properties.get('builder_config', 'Release')
-def is_debug(api):
+def is_debug_builder(api):
return builder_config(api) == 'Debug'
+def is_clobber(api):
+ return api.properties.get('clobber', False)
def _configure(api):
_configure_source(api)
@@ -138,12 +141,15 @@
with api.context(cwd=api.path['checkout']):
api.git('clean', '-xf', '--', 'front_end')
-def _clean_debug(api):
- if is_debug(api):
- api.step(
- 'clean debug',
- ['rm', '-rf', api.path['checkout'].join('out', 'Debug')]
- )
+def clean_out_dir(api):
+ if is_clobber(api):
+ dir_to_clean = 'Release'
+ elif is_debug_builder(api):
+ dir_to_clean = 'Debug'
+ else:
+ return
+ api.gn.clean(
+ api.path['checkout'].join('out', dir_to_clean))
@contextmanager
@@ -268,7 +274,7 @@
api.builder_group.for_current('devtools-frontend'),
ci_build(builder='linux'),
api.step_data('compile', retcode=1),
- api.post_process(StatusFailure),
+ api.post_process(post_process.StatusFailure),
)
yield api.test(
@@ -284,3 +290,13 @@
ci_build(builder='linux'),
api.properties(builder_config='Debug'),
)
+
+ yield api.test(
+ 'full build',
+ api.builder_group.for_current('tryserver.devtools-frontend'),
+ ci_build(builder='linux'),
+ api.properties(clobber=True),
+ api.post_process(post_process.MustRun, 'clean outdir'),
+ api.post_process(post_process.StatusSuccess),
+ api.post_process(post_process.DropExpectation),
+ )