Yuexi Ma | 461a025 | 2017-02-28 11:49:48 -0800 | [diff] [blame] | 1 | #!/usr/bin/env python |
Tri Vo | 381ce11 | 2017-02-06 10:06:51 -0800 | [diff] [blame] | 2 | # |
| 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 | |
| 19 | Among .bp and .mk files affected are: |
| 20 | 1. test/vts-testcase/hal/Android.bp |
| 21 | 2. files matching: test/vts-testcase/hal/<hal_name>/<hal_version>/Android.bp |
Tri Vo | 381ce11 | 2017-02-06 10:06:51 -0800 | [diff] [blame] | 22 | |
| 23 | Usage: |
Zhuoyao Zhang | 5966163 | 2018-10-08 16:43:00 -0700 | [diff] [blame] | 24 | 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 Vo | 381ce11 | 2017-02-06 10:06:51 -0800 | [diff] [blame] | 28 | """ |
Zhuoyao Zhang | 5966163 | 2018-10-08 16:43:00 -0700 | [diff] [blame] | 29 | import argparse |
Keun Soo YIM | 5c6038e | 2018-10-16 12:06:21 -0700 | [diff] [blame] | 30 | import os |
Zhuoyao Zhang | 5966163 | 2018-10-08 16:43:00 -0700 | [diff] [blame] | 31 | import re |
Keun Soo YIM | b27090f | 2018-10-16 11:39:55 -0700 | [diff] [blame] | 32 | import sys |
Tri Vo | 381ce11 | 2017-02-06 10:06:51 -0800 | [diff] [blame] | 33 | |
Tri Vo | c8ce80a | 2017-02-13 13:31:33 -0800 | [diff] [blame] | 34 | from build.build_rule_gen import BuildRuleGen |
Hsin-Yi Chen | 6d41b17 | 2018-04-26 18:55:02 +0800 | [diff] [blame] | 35 | from utils.const import Constant |
Tri Vo | 381ce11 | 2017-02-06 10:06:51 -0800 | [diff] [blame] | 36 | |
Keun Soo YIM | 5c6038e | 2018-10-16 12:06:21 -0700 | [diff] [blame] | 37 | # File used to make sure users follow the provided update manual. |
| 38 | _LOCK_FILE_NAME = "repo_upload_lock" |
| 39 | |
| 40 | def Touch(file_path): |
| 41 | """Touches a given file whose path is 'file_path'.""" |
| 42 | open(file_path, "a").close() |
| 43 | |
| 44 | |
| 45 | def 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 | |
| 60 | def Main(): |
| 61 | """Main function.""" |
Zhuoyao Zhang | 5966163 | 2018-10-08 16:43:00 -0700 | [diff] [blame] | 62 | 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 Vo | 7933fae | 2017-02-09 17:59:29 -0800 | [diff] [blame] | 71 | print 'Updating build rules.' |
Hsin-Yi Chen | 6d41b17 | 2018-04-26 18:55:02 +0800 | [diff] [blame] | 72 | build_rule_gen = BuildRuleGen(Constant.BP_WARNING_HEADER, |
| 73 | Constant.HAL_PACKAGE_PREFIX, |
| 74 | Constant.HAL_INTERFACE_PATH) |
Zhuoyao Zhang | 5966163 | 2018-10-08 16:43:00 -0700 | [diff] [blame] | 75 | |
| 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 YIM | a552c76 | 2018-10-16 11:52:58 -0700 | [diff] [blame] | 84 | _, updated_files, updated = build_rule_gen.UpdateHalDirBuildRule( |
Keun Soo YIM | b27090f | 2018-10-16 11:39:55 -0700 | [diff] [blame] | 85 | hal_list, Constant.VTS_HAL_TEST_CASE_PATH) |
Zhuoyao Zhang | 5966163 | 2018-10-08 16:43:00 -0700 | [diff] [blame] | 86 | else: |
Keun Soo YIM | a552c76 | 2018-10-16 11:52:58 -0700 | [diff] [blame] | 87 | updated_files, updated = build_rule_gen.UpdateBuildRule( |
| 88 | Constant.VTS_HAL_TEST_CASE_PATH) |
Keun Soo YIM | b27090f | 2018-10-16 11:39:55 -0700 | [diff] [blame] | 89 | if updated: |
Keun Soo YIM | 5c6038e | 2018-10-16 12:06:21 -0700 | [diff] [blame] | 90 | Touch(_LOCK_FILE_NAME) |
Keun Soo YIM | a552c76 | 2018-10-16 11:52:58 -0700 | [diff] [blame] | 91 | print "ERROR: At least one file was not up-to-date and is updated now." |
Keun Soo YIM | 5c6038e | 2018-10-16 12:06:21 -0700 | [diff] [blame] | 92 | 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 YIM | b27090f | 2018-10-16 11:39:55 -0700 | [diff] [blame] | 96 | sys.exit(-1) |
| 97 | |
Keun Soo YIM | 5c6038e | 2018-10-16 12:06:21 -0700 | [diff] [blame] | 98 | |
| 99 | if __name__ == "__main__": |
| 100 | Main() |