qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v3 1/8] tracetool: Rewrite infrastructure as


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [RFC PATCH v3 1/8] tracetool: Rewrite infrastructure as python modules
Date: Fri, 30 Mar 2012 08:27:16 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, Mar 27, 2012 at 09:49:18PM +0200, Lluís Vilanova wrote:
> diff --git a/scripts/tracetool.py b/scripts/tracetool.py
> new file mode 100755
> index 0000000..70bf79a
> --- /dev/null
> +++ b/scripts/tracetool.py
> @@ -0,0 +1,110 @@
> +#!/usr/bin/env python
> +# -*- coding: utf-8 -*-
> +
> +"""
> +Command-line wrapper for the tracetool machinery.
> +"""
> +
> +__author__     = "Lluís Vilanova <address@hidden>"
> +__copyright__  = "Copyright 2012, Lluís Vilanova <address@hidden>"
> +__license__    = "GPL version 2 or (at your option) any later version"
> +
> +__maintainer__ = "Stefan Hajnoczi"
> +__email__      = "address@hidden"
> +
> +
> +import sys
> +import getopt
> +
> +from tracetool import error_write, out
> +import tracetool.backend
> +import tracetool.format
> +
> +
> +_SCRIPT = ""
> +
> +def error_opt(msg = None):
> +    if msg is not None:
> +        error_write("Error: " + msg + "\n")
> +
> +    backend_descr = "\n".join([ "    %-15s %s" % (n, d)
> +                                for n,d in tracetool.backend.get_list() ])
> +    format_descr = "\n".join([ "    %-15s %s" % (n, d)
> +                               for n,d in tracetool.format.get_list() ])
> +    error_write("""\
> +Usage: %(script)s --format=<format> --backend=<backend> [<options>]
> +
> +Backends:
> +%(backends)s
> +
> +Formats:
> +%(formats)s
> +
> +Options:
> +    --help                   This help message.
> +    --list-backends          Print list of available backends.
> +    --check-backend          Check if the given backend is valid.
> +""" % {
> +            "script" : _SCRIPT,
> +            "backends" : backend_descr,
> +            "formats" : format_descr,
> +            })
> +
> +    if msg is None:
> +        sys.exit(0)
> +    else:
> +        sys.exit(1)
> +
> +
> +def main(args):
> +    global _SCRIPT
> +    _SCRIPT = args[0]
> +
> +    long_opts  = [ "backend=", "format=", "help", "list-backends", 
> "check-backend" ]
> +    long_opts += [ "binary=", "target-type=", "target-arch=", 
> "probe-prefix=" ]
> +
> +    try:
> +        opts, args = getopt.getopt(args[1:], "", long_opts)
> +    except getopt.GetoptError as err:
> +        error_opt(str(err))
> +
> +    check_backend = False
> +    arg_backend = ""
> +    arg_format = ""
> +    for opt, arg in opts:
> +        if opt == "--help":
> +            error_opt()
> +
> +        elif opt == "--backend":
> +            arg_backend = arg
> +        elif opt == "--format":
> +            arg_format = arg
> +
> +        elif opt == "--list-backends":
> +            public_backends = tracetool.backend.get_list(only_public = True)
> +            out(", ".join([ b for b,_ in public_backends ]))
> +            sys.exit(0)
> +        elif opt == "--check-backend":
> +            check_backend = True
> +
> +        else:
> +            error_opt("unhandled option: %s" % opt)
> +
> +    if arg_backend is None:
> +        error_opt("backend not set")
> +
> +    if check_backend:
> +        if tracetool.backend.exists(arg_backend):
> +            sys.exit(0)
> +        else:
> +            sys.exit(1)
> +
> +    kwargs = {}
> +
> +    try:
> +        tracetool.generate(sys.stdin, arg_format, arg_backend, **kwargs)

If forgot to ask what kwargs is doing here?   Can we default to {}?
Otherwise let's drop it for now since there are no options defined yet.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]