Le jeu. 27 août 2020 16:32, Stefan Hajnoczi <stefa...@redhat.com> a écrit :
> Store the input filename and line number in Event. > > A later patch will use this to improve error messages. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- > scripts/tracetool/__init__.py | 27 ++++++++++++++++++++++----- > 1 file changed, 22 insertions(+), 5 deletions(-) > > diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py > index e4ee4d5e61..1a6e2fa64a 100644 > --- a/scripts/tracetool/__init__.py > +++ b/scripts/tracetool/__init__.py > @@ -218,6 +218,10 @@ class Event(object): > Properties of the event. > args : Arguments > The event arguments. > + lineno : int > + The line number in the input file. > + filename : str > + The path to the input file. > > """ > > @@ -230,7 +234,7 @@ class Event(object): > > _VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec", > "vcpu"]) > > - def __init__(self, name, props, fmt, args, orig=None, > + def __init__(self, name, props, fmt, args, lineno, filename, > orig=None, > event_trans=None, event_exec=None): > """ > Parameters > @@ -243,6 +247,10 @@ class Event(object): > Event printing format string(s). > args : Arguments > Event arguments. > + lineno : int > + The line number in the input file. > + filename : str > + The path to the input file. > orig : Event or None > Original Event before transformation/generation. > event_trans : Event or None > @@ -255,6 +263,8 @@ class Event(object): > self.properties = props > self.fmt = fmt > self.args = args > + self.lineno = int(lineno) > + self.filename = str(filename) > self.event_trans = event_trans > self.event_exec = event_exec > > @@ -276,16 +286,21 @@ class Event(object): > def copy(self): > """Create a new copy.""" > return Event(self.name, list(self.properties), self.fmt, > - self.args.copy(), self, self.event_trans, > self.event_exec) > + self.args.copy(), self.lineno, self.filename, > + self, self.event_trans, self.event_exec) > > @staticmethod > - def build(line_str): > + def build(line_str, lineno, filename): > """Build an Event instance from a string. > > Parameters > ---------- > line_str : str > Line describing the event. > + lineno : int > + Line number in input file. > + filename : str > + Path to input file. > """ > m = Event._CRE.match(line_str) > assert m is not None > @@ -315,7 +330,7 @@ class Event(object): > if "tcg" in props and isinstance(fmt, str): > raise ValueError("Events with 'tcg' property must have two > format strings") > > - event = Event(name, props, fmt, args) > + event = Event(name, props, fmt, args, lineno, filename) > > # add implicit arguments when using the 'vcpu' property > import tracetool.vcpu > @@ -360,6 +375,8 @@ class Event(object): > list(self.properties), > self.fmt, > self.args.transform(*trans), > + self.lineno, > + self.filename, > self) > > > @@ -386,7 +403,7 @@ def read_events(fobj, fname): > continue > > try: > - event = Event.build(line) > + event = Event.build(line, lineno, fname) > except ValueError as e: > arg0 = 'Error at %s:%d: %s' % (fname, lineno, e.args[0]) > e.args = (arg0,) + e.args[1:] > -- > 2.26.2 > >