Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Unified Diff: scripts/slave/recipes/deterministic_build.py

Issue 1846073003: Remove deterministic trybots. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: scripts/slave/recipes/deterministic_build.py
diff --git a/scripts/slave/recipes/deterministic_build.py b/scripts/slave/recipes/deterministic_build.py
deleted file mode 100644
index bebe3a7d79b2cbcc351593f67652b666237b0c3c..0000000000000000000000000000000000000000
--- a/scripts/slave/recipes/deterministic_build.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Recipe to test the deterministic build.
-"""
-
-DEPS = [
- 'depot_tools/bot_update',
- 'chromium',
- 'chromium_android',
- 'depot_tools/gclient',
- 'isolate',
- 'recipe_engine/json',
- 'recipe_engine/path',
- 'recipe_engine/platform',
- 'recipe_engine/properties',
- 'recipe_engine/python',
- 'recipe_engine/step',
-]
-
-DETERMINISTIC_BUILDERS = {
- 'android_deterministic': {
- 'chromium_config': 'android',
- 'chromium_config_kwargs': {
- 'BUILD_CONFIG': 'Release',
- 'TARGET_BITS': 32,
- 'TARGET_PLATFORM': 'android',
- },
- 'platform': 'linux',
- 'targets': ['all'],
- },
- 'linux_deterministic': {
- 'chromium_config': 'chromium',
- 'gclient_config': 'chromium',
- 'platform': 'linux',
- },
- 'mac_deterministic': {
- 'chromium_config': 'chromium',
- 'gclient_config': 'chromium',
- 'platform': 'mac',
- },
- 'win_deterministic': {
- 'chromium_config': 'chromium',
- 'gclient_config': 'chromium',
- 'platform': 'win',
- },
-}
-
-
-def MoveBuildDirectory(api, src_dir, dst_dir):
- api.python.inline('Move %s to %s' % (src_dir, dst_dir),
- """
- import os
- import shutil
- import sys
- if os.path.exists(sys.argv[2]):
- shutil.rmtree(sys.argv[2])
- shutil.move(sys.argv[1], sys.argv[2])""",
- args=[src_dir, dst_dir])
-
-
-def ConfigureChromiumBuilder(api, recipe_config):
- api.chromium.set_config(recipe_config['chromium_config'],
- **recipe_config.get('chromium_config_kwargs',
- {'BUILD_CONFIG': 'Release'}))
- api.gclient.set_config(recipe_config['gclient_config'],
- **recipe_config.get('gclient_config_kwargs', {}))
-
- api.chromium.cleanup_temp()
-
- # Checkout chromium.
- api.bot_update.ensure_checkout(force=True)
-
-
-def ConfigureAndroidBuilder(api, recipe_config):
- kwargs = {
- 'REPO_NAME': 'src',
- 'REPO_URL': 'https://chromium.googlesource.com/chromium/src.git',
- 'Internal': False,
- }
- kwargs.update(recipe_config.get('chromium_config_kwargs',
- {'BUILD_CONFIG': 'Release'}))
-
- api.chromium_android.configure_from_properties(
- 'base_config', **kwargs)
- api.chromium.set_config('base_config', **kwargs)
- api.chromium.apply_config(recipe_config['chromium_config'])
-
-def RunSteps(api):
- buildername = api.properties['buildername']
- recipe_config = DETERMINISTIC_BUILDERS[buildername]
- enable_isolate = True
-
- targets = recipe_config.get('targets', ['chromium_swarm_tests'])
- if recipe_config.get('chromium_config_kwargs'):
- target_platform = recipe_config['chromium_config_kwargs'].get(
- 'TARGET_PLATFORM')
- else:
- target_platform = recipe_config.get('platform')
-
- if target_platform in ('linux', 'mac', 'win'):
- ConfigureChromiumBuilder(api, recipe_config)
- elif target_platform is 'android':
- # Disable the tests isolation on Android as it's not supported yet.
- enable_isolate = False
- ConfigureAndroidBuilder(api, recipe_config)
- api.chromium_android.init_and_sync()
-
- if enable_isolate:
- # Enable test isolation. Modifies GYP_DEFINES used in 'runhooks' below.
- api.isolate.set_isolate_environment(api.chromium.c)
-
- # Do a first build and move the build artifact to the temp directory.
- api.chromium.runhooks()
- api.chromium.compile(targets, force_clobber=True, name='First build')
- api.isolate.remove_build_metadata()
- if enable_isolate:
- # This archives the results and regenerate the .isolated files.
- api.isolate.isolate_tests(api.chromium.output_dir)
- MoveBuildDirectory(api, str(api.chromium.output_dir),
- str(api.chromium.output_dir).rstrip('\\/') + '.1')
-
- # Do the second build and move the build artifact to the temp directory.
- api.chromium.runhooks()
- api.chromium.compile(targets, force_clobber=True, name='Second build')
- api.isolate.remove_build_metadata()
- if enable_isolate:
- # This should be quick if the build is indeed deterministic.
- api.isolate.isolate_tests(api.chromium.output_dir)
- MoveBuildDirectory(api, str(api.chromium.output_dir),
- str(api.chromium.output_dir).rstrip('\\/') + '.2')
-
- # Compare the artifacts from the 2 builds, raise an exception if they're
- # not equals.
- api.isolate.compare_build_artifacts(
- str(api.chromium.output_dir).rstrip('\\/') + '.1',
- str(api.chromium.output_dir).rstrip('\\/') + '.2')
-
-
-def _sanitize_nonalpha(text):
- return ''.join(c if c.isalnum() else '_' for c in text)
-
-
-def GenTests(api):
- mastername = 'chromium.swarm'
- for buildername in DETERMINISTIC_BUILDERS:
- test_name = 'full_%s_%s' % (_sanitize_nonalpha(mastername),
- _sanitize_nonalpha(buildername))
- yield (
- api.test(test_name) +
- api.properties.scheduled() +
- api.properties.generic(buildername=buildername,
- mastername=mastername) +
- api.platform(DETERMINISTIC_BUILDERS[buildername]['platform'], 32) +
- api.properties(configuration='Release') +
- api.step_data('remove_build_metadata', retcode=1)
- )

Powered by Google App Engine
This is Rietveld 408576698