blob: ab6645a27be3b45e45a960e7c3fc5ae7bbc88ca6 [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
10import os
11
Alex Klein231d2da2019-07-22 16:44:45 -060012from chromite.api import validate
Tiancong Wangaf050172019-07-10 11:52:03 -070013from chromite.lib import cros_logging as logging
14from chromite.lib import gs
15from chromite.lib import toolchain_util
16
17
Alex Klein231d2da2019-07-22 16:44:45 -060018@validate.require('build_target.name')
19@validate.validation_complete
20def UpdateChromeEbuildWithOrderfile(input_proto, _output_proto, _config):
Tiancong Wangaf050172019-07-10 11:52:03 -070021 """Update Chrome ebuild with most recent unvetted orderfile.
22
23 Args:
24 input_proto (UpdateChromeEbuildRequest): The input proto
Alex Klein231d2da2019-07-22 16:44:45 -060025 _output_proto (UpdateChromeEbuildResponse): Empty output proto
26 _config (api_config.ApiConfig): The API call config.
Tiancong Wangaf050172019-07-10 11:52:03 -070027 """
28
29 board = input_proto.build_target.name
30 toolchain_util.OrderfileUpdateChromeEbuild(board)
31
32
Alex Klein231d2da2019-07-22 16:44:45 -060033@validate.validation_complete
34def UploadVettedOrderfile(_input_proto, output_proto, _config):
Tiancong Wangaf050172019-07-10 11:52:03 -070035 """Upload a vetted orderfile to GS bucket.
36
37 Args:
Alex Klein231d2da2019-07-22 16:44:45 -060038 _input_proto (UploadVettedOrderfileRequest): Empty input proto
Tiancong Wangaf050172019-07-10 11:52:03 -070039 output_proto (UploadVettedOrderfileResponse): The output proto
Alex Klein231d2da2019-07-22 16:44:45 -060040 _config (api_config.ApiConfig): The API call config.
Tiancong Wangaf050172019-07-10 11:52:03 -070041 """
Tiancong Wangaf050172019-07-10 11:52:03 -070042 gs_context = gs.GSContext()
43 orderfile = toolchain_util.FindLatestChromeOrderfile(
44 toolchain_util.ORDERFILE_GS_URL_UNVETTED)
45
46 if gs_context.Exists(
47 os.path.join(toolchain_util.ORDERFILE_GS_URL_VETTED, orderfile)):
48 output_proto.status = False
49 return
50
51 source_url = os.path.join(toolchain_util.ORDERFILE_GS_URL_UNVETTED, orderfile)
52 dest_url = os.path.join(toolchain_util.ORDERFILE_GS_URL_VETTED, orderfile)
53
54 logging.info('Copying tarball from %s to %s', source_url, dest_url)
55 gs_context.Copy(source_url, dest_url, acl='public-read')
56 output_proto.status = True