
On Sat, 5 Sep 2020 at 08:44, Alper Nebi Yasak alpernebiyasak@gmail.com wrote:
This patch lets tools.Run() use host-specific versions with the for_host keyword argument, based on the host-specific environment variables (HOSTCC, HOSTOBJCOPY, HOSTSTRIP, etc.).
Signed-off-by: Alper Nebi Yasak alpernebiyasak@gmail.com
Not sure if this patch will ever be useful, but it complements the previous patch very well.
Yes, agreed.
tools/patman/tools.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
Please see below.
Also please add a mention of the CROSS_COMPILE thing in binman's README.
diff --git a/tools/patman/tools.py b/tools/patman/tools.py index ee8b70d0cc..6d539fe594 100644 --- a/tools/patman/tools.py +++ b/tools/patman/tools.py @@ -188,6 +188,31 @@ def PathHasFile(path_spec, fname): return True return False
+def GetHostCompileTool(name):
- """Get the host-specific version for a compile tool
- This checks the environment variables that specify which version of
- the tool should be used.
Can you please expand the comment to mention the environment variables it checks?
- Args:
name: Command name to run
- Returns:
host_name: Exact command name to run instead
extra_args: List of extra arguments to pass
- """
- host_name = None
- extra_args = []
- if name in ('as', 'ld', 'cc', 'cpp', 'ar', 'nm', 'ldr', 'strip',
'objcopy', 'objdump', 'dtc'):
host_name, *host_args = env.get('HOST' + name.upper(), '').split(' ')
- elif name == 'c++':
host_name, *host_args = env.get('HOSTCXX', '').split(' ')
- if host_name:
return host_name, extra_args
- return name, []
def GetTargetCompileTool(name, cross_compile=None): """Get the target-specific version for a compile tool
@@ -250,6 +275,7 @@ def Run(name, *args, **kwargs): Args: name: Command name to run args: Arguments to the tool
for_host: True to resolve the command to the version for the host for_target: False to run the command as-is, without resolving it to the version for the compile target
@@ -258,7 +284,8 @@ def Run(name, *args, **kwargs): """ try: binary = kwargs.get('binary')
for_target = kwargs.get('for_target', True)
for_host = kwargs.get('for_host', False)
for_target = kwargs.get('for_target', not for_host) env = None if tool_search_paths: env = dict(os.environ)
@@ -266,6 +293,9 @@ def Run(name, *args, **kwargs): if for_target: name, extra_args = GetTargetCompileTool(name) args = tuple(extra_args) + args
elif for_host:
name, extra_args = GetHostCompileTool(name)
args = tuple(extra_args) + args all_args = (name,) + args result = command.RunPipe([all_args], capture=True, capture_stderr=True, env=env, raise_on_error=False, binary=binary)
-- 2.28.0