| # -*- coding: utf-8 -*- |
| # Copyright 2015 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Module containing SDK builders.""" |
| |
| from __future__ import print_function |
| |
| import datetime |
| |
| from chromite.lib import constants |
| from chromite.lib import parallel |
| from chromite.cbuildbot.builders import simple_builders |
| from chromite.cbuildbot.stages import artifact_stages |
| from chromite.cbuildbot.stages import build_stages |
| from chromite.cbuildbot.stages import chrome_stages |
| from chromite.cbuildbot.stages import sdk_stages |
| |
| |
| class ChrootSdkBuilder(simple_builders.SimpleBuilder): |
| """Build the SDK chroot.""" |
| |
| def RunStages(self): |
| """Runs through build process.""" |
| # Unlike normal CrOS builds, the SDK has no concept of pinned CrOS manifest |
| # or specific Chrome version. Use a datestamp instead. |
| version = datetime.datetime.now().strftime('%Y.%m.%d.%H%M%S') |
| self._RunStage(build_stages.UprevStage, boards=[]) |
| self._RunStage(build_stages.InitSDKStage) |
| |
| # We don't need the Chrome source until SDKTestStage. Syncing it should |
| # take less time than BuildSDKBoardStage, so lets run in parallel with it. |
| parallel_stages = [ |
| lambda: self._RunStage(chrome_stages.SyncChromeStage), |
| lambda: self._RunStage(build_stages.BuildSDKBoardStage, |
| constants.CHROOT_BUILDER_BOARD), |
| ] |
| parallel.RunParallelSteps(parallel_stages) |
| |
| self._RunStage(sdk_stages.SDKBuildToolchainsStage) |
| |
| self._RunStage(sdk_stages.SDKPackageStage, version=version) |
| # Note: This produces badly named toolchain tarballs. Before |
| # we re-enable it, make sure we fix that first. For example: |
| # gs://chromiumos-sdk/2015/06/... |
| # .../cros-sdk-overlay-toolchains-aarch64-cros-linux-gnu-$VER.tar.xz |
| # self._RunStage(sdk_stages.SDKPackageToolchainOverlaysStage, |
| # version=version) |
| |
| self._RunStage(sdk_stages.SDKTestStage) |
| # manojgupta: The comment in para below is not valid right now. Need to |
| # test SDK before making artifacts available to users because of |
| # https://crbug.com/798617. |
| # Move it after UploadPrebuilts again once the bug is fixed. |
| # |
| # Upload artifacts before tests. Testing takes several hours, so during |
| # that, goma server will find the new archive and stage it. So that, |
| # goma can be used on bots just after uprev. |
| # TODO(hidehiko): We may want to run upload prebuilts and test in |
| # parallel in future, if it becomes performance bottleneck. |
| self._RunStage(artifact_stages.UploadPrebuiltsStage, |
| constants.CHROOT_BUILDER_BOARD, version=version) |
| |
| self._RunStage(sdk_stages.SDKUprevStage, version=version) |