blob: a88f859e62b6917be37af0ffb8e491c233f4affb [file] [log] [blame]
Tiancong Wangaf050172019-07-10 11:52:03 -07001# -*- coding: utf-8 -*-
2# Copyright 2019 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Toolchain-related operations."""
7
8from __future__ import print_function
9
Alex Klein231d2da2019-07-22 16:44:45 -060010from chromite.api import validate
Tiancong Wang24a3df72019-08-20 15:48:51 -070011from chromite.api.gen.chromite.api import toolchain_pb2
Tiancong Wangaf050172019-07-10 11:52:03 -070012from chromite.lib import toolchain_util
13
Tiancong Wang24a3df72019-08-20 15:48:51 -070014_VALID_ARTIFACT_TYPES = [toolchain_pb2.ORDERFILE, toolchain_pb2.KERNEL_AFDO]
15
Tiancong Wangaf050172019-07-10 11:52:03 -070016
Alex Klein231d2da2019-07-22 16:44:45 -060017@validate.require('build_target.name')
Tiancong Wang24a3df72019-08-20 15:48:51 -070018@validate.is_in('artifact_type', _VALID_ARTIFACT_TYPES)
Alex Klein231d2da2019-07-22 16:44:45 -060019@validate.validation_complete
Tiancong Wang24a3df72019-08-20 15:48:51 -070020def UpdateEbuildWithAFDOArtifacts(input_proto, output_proto, _config):
21 """Update Chrome or kernel ebuild with most recent unvetted artifacts.
Tiancong Wangaf050172019-07-10 11:52:03 -070022
23 Args:
Tiancong Wang24a3df72019-08-20 15:48:51 -070024 input_proto (VerifyAFDOArtifactsRequest): The input proto
25 output_proto (VerifyAFDOArtifactsResponse): The output proto
Alex Klein231d2da2019-07-22 16:44:45 -060026 _config (api_config.ApiConfig): The API call config.
Tiancong Wangaf050172019-07-10 11:52:03 -070027 """
28
29 board = input_proto.build_target.name
Tiancong Wang24a3df72019-08-20 15:48:51 -070030 artifact_type = input_proto.artifact_type
31 if artifact_type is toolchain_pb2.ORDERFILE:
32 status = toolchain_util.OrderfileUpdateChromeEbuild(board)
33 else:
34 status = toolchain_util.AFDOUpdateKernelEbuild(board)
35 output_proto.status = status
Tiancong Wangaf050172019-07-10 11:52:03 -070036
37
Tiancong Wang24a3df72019-08-20 15:48:51 -070038@validate.require('build_target.name')
39@validate.is_in('artifact_type', _VALID_ARTIFACT_TYPES)
Alex Klein231d2da2019-07-22 16:44:45 -060040@validate.validation_complete
Tiancong Wang24a3df72019-08-20 15:48:51 -070041def UploadVettedAFDOArtifacts(input_proto, output_proto, _config):
Tiancong Wangaf050172019-07-10 11:52:03 -070042 """Upload a vetted orderfile to GS bucket.
43
44 Args:
Tiancong Wang24a3df72019-08-20 15:48:51 -070045 input_proto (VerifyAFDOArtifactsRequest): The input proto
46 output_proto (VerifyAFDOArtifactsResponse): The output proto
Alex Klein231d2da2019-07-22 16:44:45 -060047 _config (api_config.ApiConfig): The API call config.
Tiancong Wangaf050172019-07-10 11:52:03 -070048 """
Tiancong Wang24a3df72019-08-20 15:48:51 -070049 board = input_proto.build_target.name
50 if input_proto.artifact_type is toolchain_pb2.ORDERFILE:
51 artifact_type = 'orderfile'
52 else:
53 artifact_type = 'kernel_afdo'
Tiancong Wangaf050172019-07-10 11:52:03 -070054
Tiancong Wang24a3df72019-08-20 15:48:51 -070055 output_proto.status = toolchain_util.UploadAndPublishVettedAFDOArtifacts(
56 artifact_type, board)