qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@gmail.com>
To: "Lluís Vilanova" <vilanova@ac.upc.edu>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC PATCH v3 1/8] tracetool: Rewrite infrastructure as python modules
Date: Fri, 30 Mar 2012 08:27:16 +0100	[thread overview]
Message-ID: <20120330072716.GA16437@stefanha-thinkpad.localdomain> (raw)
In-Reply-To: <20120327194918.7241.10931.stgit@ginnungagap.bsc.es>

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 <vilanova@ac.upc.edu>"
> +__copyright__  = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"
> +__license__    = "GPL version 2 or (at your option) any later version"
> +
> +__maintainer__ = "Stefan Hajnoczi"
> +__email__      = "stefanha@linux.vnet.ibm.com"
> +
> +
> +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	other threads:[~2012-03-30  8:20 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-27 19:49 [Qemu-devel] [RFC PATCH v3 0/8] Rewrite tracetool using python modules Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 1/8] tracetool: Rewrite infrastructure as " Lluís Vilanova
2012-03-30  7:27   ` Stefan Hajnoczi [this message]
2012-03-30 16:55     ` Lluís Vilanova
2012-04-02  7:36       ` Stefan Hajnoczi
2012-04-02 12:57         ` Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 2/8] tracetool: Add module for the 'c' format Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 3/8] tracetool: Add module for the 'h' format Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 4/8] tracetool: Add support for the 'stderr' backend Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 5/8] tracetool: Add support for the 'simple' backend Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 6/8] tracetool: Add support for the 'ust' backend Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 7/8] tracetool: Add support for the 'dtrace' backend Lluís Vilanova
2012-03-27 19:49 ` [Qemu-devel] [RFC PATCH v3 8/8] tracetool: Add MAINTAINERS info Lluís Vilanova
2012-03-29 17:16 ` [Qemu-devel] [RFC PATCH v3 0/8] Rewrite tracetool using python modules Stefan Hajnoczi
2012-03-30 17:12   ` Lluís Vilanova
2012-04-02  7:39     ` Stefan Hajnoczi
2012-04-02 12:52       ` Lluís Vilanova
2012-04-02 13:16         ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120330072716.GA16437@stefanha-thinkpad.localdomain \
    --to=stefanha@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=vilanova@ac.upc.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).