gn2bp: Move replacing of response_file to Sanitizer

* This was affecting the original target args as it was being executed after setting target.args . So this is a step in maintaining the original target as a read-only object.

Test: update_results.sh
Change-Id: I6852dbecbd1ce304af091f3e4d00e0d698cd53f8
This commit is contained in:
Mohannad Farrag
2022-12-02 14:44:15 +00:00
parent fc8464d500
commit 00ecfb5183

View File

@@ -108,6 +108,8 @@ buildtools_protobuf_src = '//buildtools/protobuf/src'
# Location of the protobuf src dir in the Android source tree. # Location of the protobuf src dir in the Android source tree.
android_protobuf_src = 'external/protobuf/src' android_protobuf_src = 'external/protobuf/src'
response_file = '{{response_file_name}}'
# Compiler flags which are passed through to the blueprint. # Compiler flags which are passed through to the blueprint.
cflag_allowlist = [ cflag_allowlist = [
# needed for zlib:zlib # needed for zlib:zlib
@@ -732,7 +734,14 @@ class BaseActionSanitizer():
return self.target.outputs return self.target.outputs
def _sanitize_args(self): def _sanitize_args(self):
pass # Handle passing parameters via response file by piping them into the script
# and reading them from /dev/stdin.
self.use_response_file = response_file in self.target.args
if self.use_response_file:
# Replace {{response_file_contents}} with /dev/stdin
self.target.args = ['/dev/stdin' if it == response_file else it for it in
self.target.args]
def _sanitize_outputs(self): def _sanitize_outputs(self):
pass pass
@@ -895,20 +904,12 @@ def create_action_module(blueprint, target, type):
script = gn_utils.label_to_path(target.script) script = gn_utils.label_to_path(target.script)
module.tool_files.add(script) module.tool_files.add(script)
# Handle passing parameters via response file by piping them into the script
# and reading them from /dev/stdin.
response_file = '{{response_file_name}}'
use_response_file = response_file in target.args
if use_response_file:
# Replace {{response_file_contents}} with /dev/stdin
target.args = ['/dev/stdin' if it == response_file else it for it in target.args]
# put all args on a new line for better diffs. # put all args on a new line for better diffs.
NEWLINE = ' " +\n "' NEWLINE = ' " +\n "'
arg_string = NEWLINE.join(target.args) arg_string = NEWLINE.join(target.args)
module.cmd = '$(location %s) %s' % (script, arg_string) module.cmd = '$(location %s) %s' % (script, arg_string)
if use_response_file: if sanitizer.use_response_file:
# Pipe response file contents into script # Pipe response file contents into script
module.cmd = 'echo \'%s\' |%s%s' % (target.response_file_contents, NEWLINE, module.cmd) module.cmd = 'echo \'%s\' |%s%s' % (target.response_file_contents, NEWLINE, module.cmd)