blob: 34d900d8901cf9e4e8db0494d7ca52ef2117520a [file] [log] [blame]
Yuexi Ma461a0252017-02-28 11:49:48 -08001#!/usr/bin/env python
Tri Vo381ce112017-02-06 10:06:51 -08002#
3# Copyright (C) 2016 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17"""Update .bp and .mk files under test/vts-testcase/hal.
18
19Among .bp and .mk files affected are:
201. test/vts-testcase/hal/Android.bp
212. files matching: test/vts-testcase/hal/<hal_name>/<hal_version>/Android.bp
Tri Vo381ce112017-02-06 10:06:51 -080022
23Usage:
Zhuoyao Zhang59661632018-10-08 16:43:00 -070024 To update build files for all HALs:
25 cd test/vts-testcase/hal; ./script/update_makefiles.py
26 To update build files for a specific HAL:
27 cd test/vts-testcase/hal; ./script/update_makefiles.py --hal nfc@1.0
Tri Vo381ce112017-02-06 10:06:51 -080028"""
Zhuoyao Zhang59661632018-10-08 16:43:00 -070029import argparse
Keun Soo YIM5c6038e2018-10-16 12:06:21 -070030import os
Zhuoyao Zhang59661632018-10-08 16:43:00 -070031import re
Keun Soo YIMb27090f2018-10-16 11:39:55 -070032import sys
Tri Vo381ce112017-02-06 10:06:51 -080033
Tri Voc8ce80a2017-02-13 13:31:33 -080034from build.build_rule_gen import BuildRuleGen
Hsin-Yi Chen6d41b172018-04-26 18:55:02 +080035from utils.const import Constant
Tri Vo381ce112017-02-06 10:06:51 -080036
Keun Soo YIM5c6038e2018-10-16 12:06:21 -070037# File used to make sure users follow the provided update manual.
38_LOCK_FILE_NAME = "repo_upload_lock"
39
40def Touch(file_path):
41 """Touches a given file whose path is 'file_path'."""
42 open(file_path, "a").close()
43
44
45def Usage(updated_files):
46 """Shows the update manual and exits."""
47 print "Please do the following before re-trying repo upload ."
48 print "$ cd $ANDROID_BUILD_TOP/test/vts-testcase/hal"
49 print "$ rm", _LOCK_FILE_NAME
50 if updated_files:
51 for updated_file in updated_files:
52 print "$ git add %s" % updated_file
53 else:
54 print "$ git add <deleted file>"
55 print "$ git commit"
56 print "$ repo upload"
57 sys.exit(-1)
58
59
60def Main():
61 """Main function."""
Zhuoyao Zhang59661632018-10-08 16:43:00 -070062 parser = argparse.ArgumentParser(
63 description='Update build files for HAL driver/profiler.')
64 parser.add_argument(
65 '--hal',
66 dest='hal_package_name',
67 required=False,
68 help='hal package name (e.g. nfc@1.0).')
69 args = parser.parse_args()
70
Tri Vo7933fae2017-02-09 17:59:29 -080071 print 'Updating build rules.'
Hsin-Yi Chen6d41b172018-04-26 18:55:02 +080072 build_rule_gen = BuildRuleGen(Constant.BP_WARNING_HEADER,
73 Constant.HAL_PACKAGE_PREFIX,
74 Constant.HAL_INTERFACE_PATH)
Zhuoyao Zhang59661632018-10-08 16:43:00 -070075
76 if args.hal_package_name:
77 regex = re.compile(Constant.HAL_PACKAGE_NAME_PATTERN)
78 result = re.match(regex, args.hal_package_name)
79 if not result:
80 print 'Invalid hal package name. Exiting..'
81 sys.exit(1)
82 package_name, version = args.hal_package_name.split('@')
83 hal_list = [(package_name, version)]
Keun Soo YIMa552c762018-10-16 11:52:58 -070084 _, updated_files, updated = build_rule_gen.UpdateHalDirBuildRule(
Keun Soo YIMb27090f2018-10-16 11:39:55 -070085 hal_list, Constant.VTS_HAL_TEST_CASE_PATH)
Zhuoyao Zhang59661632018-10-08 16:43:00 -070086 else:
Keun Soo YIMa552c762018-10-16 11:52:58 -070087 updated_files, updated = build_rule_gen.UpdateBuildRule(
88 Constant.VTS_HAL_TEST_CASE_PATH)
Keun Soo YIMb27090f2018-10-16 11:39:55 -070089 if updated:
Keun Soo YIM5c6038e2018-10-16 12:06:21 -070090 Touch(_LOCK_FILE_NAME)
Keun Soo YIMa552c762018-10-16 11:52:58 -070091 print "ERROR: At least one file was not up-to-date and is updated now."
Keun Soo YIM5c6038e2018-10-16 12:06:21 -070092 Usage(updated_files)
93 elif os.path.exists(_LOCK_FILE_NAME):
94 print "ERROR: The previously updated file(s) are not sent as a change."
95 print "The files are under $ANDROID_BUILD_TOP/test/vts-testcase/hal"
Keun Soo YIMb27090f2018-10-16 11:39:55 -070096 sys.exit(-1)
97
Keun Soo YIM5c6038e2018-10-16 12:06:21 -070098
99if __name__ == "__main__":
100 Main()