qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Jes.Sorensen@redhat.com, aliguori@us.ibm.com,
	clalance@redhat.com, qemu-devel@nongnu.org, crobinso@redhat.com
Subject: Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.
Date: Fri, 14 May 2010 11:06:54 +0100	[thread overview]
Message-ID: <20100514100654.GC9282@redhat.com> (raw)
In-Reply-To: <m3eihekee6.fsf@blackfin.pond.sub.org>

On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote:
> "Daniel P. Berrange" <berrange@redhat.com> writes:
> 
> > On Thu, May 13, 2010 at 10:32:52AM +0200, Jes.Sorensen@redhat.com wrote:
> >> From: Jes Sorensen <Jes.Sorensen@redhat.com>
> >> 
> >> Add -version-simple argument for QEMU, printing just the version
> >> number, without any supporting text.
> >> 
> >> This makes it simpler for other apps, such as libvirt, to parse the
> >> version string from QEMU independant of how the naming string may
> >> change.
> >> 
> >> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> >> ---
> >>  qemu-options.hx |    8 ++++++++
> >>  vl.c            |    9 +++++++++
> >>  2 files changed, 17 insertions(+), 0 deletions(-)
> >> 
> >> diff --git a/qemu-options.hx b/qemu-options.hx
> >> index 12f6b51..e4f3979 100644
> >> --- a/qemu-options.hx
> >> +++ b/qemu-options.hx
> >> @@ -27,6 +27,14 @@ STEXI
> >>  Display version information and exit
> >>  ETEXI
> >>  
> >> +DEF("version-simple", 0, QEMU_OPTION_version_simple,
> >> +    "-version-simple display version information and exit\n", QEMU_ARCH_ALL)
> >> +STEXI
> >> +@item -version-simple
> >> +@findex -version-simple
> >> +Display basic version number information and exit
> >> +ETEXI
> >> +
> >>  DEF("M", HAS_ARG, QEMU_OPTION_M,
> >>      "-M machine      select emulated machine (-M ? for list)\n", QEMU_ARCH_ALL)
> >>  STEXI
> >> diff --git a/vl.c b/vl.c
> >> index 85bcc84..5adca87 100644
> >> --- a/vl.c
> >> +++ b/vl.c
> >> @@ -2015,6 +2015,11 @@ static void version(void)
> >>      printf("QEMU emulator version " QEMU_VERSION QEMU_PKGVERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n");
> >>  }
> >>  
> >> +static void version_simple(void)
> >> +{
> >> +    printf(QEMU_VERSION QEMU_PKGVERSION "\n");
> >> +}
> >> +
> >>  static void help(int exitcode)
> >>  {
> >>      const char *options_help =
> >> @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
> >>                  version();
> >>                  exit(0);
> >>                  break;
> >> +            case QEMU_OPTION_version_simple:
> >> +                version_simple();
> >> +                exit(0);
> >> +                break;
> >>              case QEMU_OPTION_m: {
> >>                  uint64_t value;
> >>                  char *ptr;
> >
> > This omits the KVM version string which is something we also want to see.
> > It would also be nice to avoid having to parse the -help output to determine
> > ARGV supported too. I wonder if it would be a good idea to just produce a
> > well structured equivalent to -help that provides the same data, but in 
> > JSON format for sane parsing. That would let peple easily determine the
> > supported ARGV as well as version number(s)
> 
> I'm all for machine-readable self-documentation.  And the place for that
> is QMP.  Humble beginnings are already there:
> 
> { "execute": "query-version", "arguments": { } }
> --> {"return": {"qemu": "0.12.50", "package": ""}}
> 
> { "execute": "query-commands", "arguments": { } }
> --> {"return": [{"name": "quit"}, {"name": "eject"}, [...]
> 
> Any practical problems with use of QMP instead of parsing command line
> option output?

It is unneccessarily complex for such a simple task, requiring you to 
configure & connect to the monitor & do the capabilities negotiaton
and then issue the command. 

To just query the version requires this ridiculous interaction:

  $ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control
  {"execute":"qmp_capabilities"}
  {"QMP": {"version": {"qemu": "0.12.1", "package": " (qemu-kvm-0.12.1.2)"}, "capabilities": []}}
  {"execute":"query-version"}
  {"return": {"qemu": "0.12.50", "package": ""}}
  

I'm suggesting we just allow some simple syntactic sugar on the command 
line for the handful of QMP commands that are just returning static info
about the binary, that are not affected by VM state. 

eg, make this work:

  $ qemu -query-version
  {"qemu": "0.12.50", "package": ""}

Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

  reply	other threads:[~2010-05-14 10:07 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-13  8:32 [Qemu-devel] [PATCH] Add -version-simple argument to QEMU Jes.Sorensen
2010-05-13  8:32 ` [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number Jes.Sorensen
2010-05-13 13:33   ` Daniel P. Berrange
2010-05-13 13:41     ` Jes Sorensen
2010-05-13 19:30     ` Blue Swirl
2010-05-14  9:42     ` Markus Armbruster
2010-05-14 10:06       ` Daniel P. Berrange [this message]
2010-05-14 11:24         ` Markus Armbruster
2010-05-14 13:34           ` Daniel P. Berrange
2010-05-14 13:48         ` Anthony Liguori
2010-05-14 13:57           ` Daniel P. Berrange
2010-05-14 13:27     ` Anthony Liguori
2010-05-14 13:32       ` Daniel P. Berrange
2010-05-14 14:25       ` Markus Armbruster
2010-05-14 13:21   ` [Qemu-devel] " Anthony Liguori
2010-05-14 13:58     ` Chris Lalancette
2010-05-14 14:06     ` Daniel P. Berrange
2010-05-17  6:54     ` Jes Sorensen

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=20100514100654.GC9282@redhat.com \
    --to=berrange@redhat.com \
    --cc=Jes.Sorensen@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=armbru@redhat.com \
    --cc=clalance@redhat.com \
    --cc=crobinso@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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).