gn2bp: sanitize file path from VersionSanitizer
Test: ./update_results.sh
Change-Id: Icc411534d8940ad88e6bd39af81c54708c76ffd1
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 55f5ab5..4c9c40c 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -713,6 +713,10 @@
filepath = re.sub('^gen', '$(genDir)', filepath)
return filepath
+ # Iterate through all the args and apply function
+ def _update_all_args(self, func):
+ self.target.args = [func(arg) for arg in self.target.args]
+
def get_args(self):
return self.target.args
@@ -759,8 +763,17 @@
return super().get_args()
class VersionSanitizer(BaseActionSanitizer):
+ def _sanitize_version_filepath(self, arg):
+ if arg.startswith('../../'):
+ arg = self._sanitize_filepath(arg)
+ arg = self._add_location_tag(arg)
+ return arg
+
def get_args(self):
self._set_value_arg('-o', '$(out)')
+ # args for the version.py contain file path without leading --arg key. So apply sanitize
+ # function for all the args.
+ self._update_all_args(self._sanitize_version_filepath)
return super().get_args()
def get_action_sanitizer(target):
@@ -837,10 +850,7 @@
# android_chrome_version.py is not specified in anywhere but version.py imports this file
module.tool_files.add('build/util/android_chrome_version.py')
for i, val in enumerate(target.args):
- if val.startswith('../../'):
- filename = re.sub('^\.\./\.\./', '', val)
- target.args[i] = '$(location %s)' % filename
- elif val == '-e':
+ if val == '-e':
# arg for -e EVAL option should be passed in -e PATCH_HI=int(PATCH)//256 format.
target.args[i + 1] = '%s=\'%s\'' % (target.args[i + 1], target.args[i + 2])
target.args[i + 2] = ''