On 2/25/23 07:22, Daniel Henrique Barboza wrote:
> Richard,
>
> Not sure if I forgot or missed something but this patch breaks my build as follows:
Nevermind, just did it again to test the powerpc changes and it worked. I probably
goofed something the first time.
Daniel
>
> $ make -j
> GIT ui/keycodemapdb tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc
> [1/885] Generating trace/trace-hw_hyperv.c with a custom command
> FAILED: trace/trace-hw_hyperv.c
> /usr/bin/python3 ../scripts/tracetool.py --backend=log --group=hw_hyperv --format=c /home/danielhb/work/qemu/hw/hyperv/trace-events trace/trace-hw_hyperv.c
> Traceback (most recent call last):
> File "/home/danielhb/work/qemu/build/../scripts/tracetool.py", line 19, in <module>
> from tracetool import error_write, out, out_open
> File "/home/danielhb/work/qemu/scripts/tracetool/__init__.py", line 21, in <module>
> import tracetool.transform
> ModuleNotFoundError: No module named 'tracetool.transform'
>
>
> It seems that tracetool.py is still referring transform. This fixes the build
> for me:
>
> $ git diff
> diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
> index 5393c7fc5c..c361815bc1 100644
> --- a/scripts/tracetool/__init__.py
> +++ b/scripts/tracetool/__init__.py
> @@ -18,7 +18,6 @@
>
> import tracetool.format
> import tracetool.backend
> -import tracetool.transform
>
>
> def error_write(*lines):
>
>
> For reference I grabbed and built the whole series from patchew:
>
> https://patchew.org/QEMU/20230225091427.1817156-1-richard.henderson@linaro.org/
>
>
>
> Thanks,
>
>
> Daniel
>
>
> On 2/25/23 06:14, Richard Henderson wrote:
>> This file got left behind when the tcg stuff was
>> removed from tracetool.
>>
>> Fixes: 126d4123c50a ("tracing: excise the tcg related from tracetool")
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>> meson.build | 1 -
>> scripts/tracetool/transform.py | 168 ---------------------------------
>> 2 files changed, 169 deletions(-)
>> delete mode 100644 scripts/tracetool/transform.py
>>
>> diff --git a/meson.build b/meson.build
>> index 6cb2b1a42f..275399b8c2 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -2861,7 +2861,6 @@ tracetool_depends = files(
>> 'scripts/tracetool/format/log_stap.py',
>> 'scripts/tracetool/format/stap.py',
>> 'scripts/tracetool/__init__.py',
>> - 'scripts/tracetool/transform.py',
>> 'scripts/tracetool/vcpu.py'
>> )
>> diff --git a/scripts/tracetool/transform.py b/scripts/tracetool/transform.py
>> deleted file mode 100644
>> index ea8b27799d..0000000000
>> --- a/scripts/tracetool/transform.py
>> +++ /dev/null
>> @@ -1,168 +0,0 @@
>> -# -*- coding: utf-8 -*-
>> -
>> -"""
>> -Type-transformation rules.
>> -"""
>> -
>> -__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
>> -__copyright__ = "Copyright 2012-2016, Lluís Vilanova <vilanova@ac.upc.edu>"
>> -__license__ = "GPL version 2 or (at your option) any later version"
>> -
>> -__maintainer__ = "Stefan Hajnoczi"
>> -__email__ = "stefanha@redhat.com"
>> -
>> -
>> -def _transform_type(type_, trans):
>> - if isinstance(trans, str):
>> - return trans
>> - elif isinstance(trans, dict):
>> - if type_ in trans:
>> - return _transform_type(type_, trans[type_])
>> - elif None in trans:
>> - return _transform_type(type_, trans[None])
>> - else:
>> - return type_
>> - elif callable(trans):
>> - return trans(type_)
>> - else:
>> - raise ValueError("Invalid type transformation rule: %s" % trans)
>> -
>> -
>> -def transform_type(type_, *trans):
>> - """Return a new type transformed according to the given rules.
>> -
>> - Applies each of the transformation rules in trans in order.
>> -
>> - If an element of trans is a string, return it.
>> -
>> - If an element of trans is a function, call it with type_ as its only
>> - argument.
>> -
>> - If an element of trans is a dict, search type_ in its keys. If type_ is
>> - a key, use the value as a transformation rule for type_. Otherwise, if
>> - None is a key use the value as a transformation rule for type_.
>> -
>> - Otherwise, return type_.
>> -
>> - Parameters
>> - ----------
>> - type_ : str
>> - Type to transform.
>> - trans : list of function or dict
>> - Type transformation rules.
>> - """
>> - if len(trans) == 0:
>> - raise ValueError
>> - res = type_
>> - for t in trans:
>> - res = _transform_type(res, t)
>> - return res
>> -
>> -
>> -##################################################
>> -# tcg -> host
>> -
>> -def _tcg_2_host(type_):
>> - if type_ == "TCGv":
>> - # force a fixed-size type (target-independent)
>> - return "uint64_t"
>> - else:
>> - return type_
>> -
>> -TCG_2_HOST = {
>> - "TCGv_i32": "uint32_t",
>> - "TCGv_i64": "uint64_t",
>> - "TCGv_ptr": "void *",
>> - None: _tcg_2_host,
>> - }
>> -
>> -
>> -##################################################
>> -# host -> host compatible with tcg sizes
>> -
>> -HOST_2_TCG_COMPAT = {
>> - "uint8_t": "uint32_t",
>> - "uint16_t": "uint32_t",
>> - }
>> -
>> -
>> -##################################################
>> -# host/tcg -> tcg
>> -
>> -def _host_2_tcg(type_):
>> - if type_.startswith("TCGv"):
>> - return type_
>> - raise ValueError("Don't know how to translate '%s' into a TCG type\n" % type_)
>> -
>> -HOST_2_TCG = {
>> - "uint32_t": "TCGv_i32",
>> - "uint64_t": "TCGv_i64",
>> - "void *" : "TCGv_ptr",
>> - "CPUArchState *": "TCGv_env",
>> - None: _host_2_tcg,
>> - }
>> -
>> -
>> -##################################################
>> -# tcg -> tcg helper definition
>> -
>> -def _tcg_2_helper_def(type_):
>> - if type_ == "TCGv":
>> - return "target_ulong"
>> - else:
>> - return type_
>> -
>> -TCG_2_TCG_HELPER_DEF = {
>> - "TCGv_i32": "uint32_t",
>> - "TCGv_i64": "uint64_t",
>> - "TCGv_ptr": "void *",
>> - None: _tcg_2_helper_def,
>> - }
>> -
>> -
>> -##################################################
>> -# tcg -> tcg helper declaration
>> -
>> -def _tcg_2_tcg_helper_decl_error(type_):
>> - raise ValueError("Don't know how to translate type '%s' into a TCG helper declaration type\n" % type_)
>> -
>> -TCG_2_TCG_HELPER_DECL = {
>> - "TCGv" : "tl",
>> - "TCGv_ptr": "ptr",
>> - "TCGv_i32": "i32",
>> - "TCGv_i64": "i64",
>> - "TCGv_env": "env",
>> - None: _tcg_2_tcg_helper_decl_error,
>> - }
>> -
>> -
>> -##################################################
>> -# host/tcg -> tcg temporal constant allocation
>> -
>> -def _host_2_tcg_tmp_new(type_):
>> - if type_.startswith("TCGv"):
>> - return "tcg_temp_new_nop"
>> - raise ValueError("Don't know how to translate type '%s' into a TCG temporal allocation" % type_)
>> -
>> -HOST_2_TCG_TMP_NEW = {
>> - "uint32_t": "tcg_const_i32",
>> - "uint64_t": "tcg_const_i64",
>> - "void *" : "tcg_const_ptr",
>> - None: _host_2_tcg_tmp_new,
>> - }
>> -
>> -
>> -##################################################
>> -# host/tcg -> tcg temporal constant deallocation
>> -
>> -def _host_2_tcg_tmp_free(type_):
>> - if type_.startswith("TCGv"):
>> - return "tcg_temp_free_nop"
>> - raise ValueError("Don't know how to translate type '%s' into a TCG temporal deallocation" % type_)
>> -
>> -HOST_2_TCG_TMP_FREE = {
>> - "uint32_t": "tcg_temp_free_i32",
>> - "uint64_t": "tcg_temp_free_i64",
>> - "void *" : "tcg_temp_free_ptr",
>> - None: _host_2_tcg_tmp_free,
>> - }
>