qemu -version output is incorrect with configure --with-pkgversion

Bug #1673373 reported by Jordan Justen
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Jordan Justen

Bug Description

Since qemu v2.7.0, up to the current master
(1883ff34b540daacae948f493b0ba525edf5f642)
the pkgversion feature appears to have a bug:

$ ./configure --target-list=x86_64-softmmu --with-pkgversion=foo

Results in this output:

$ x86_64-softmmu/qemu-system-x86_64 -version
QEMU emulator version 2.8.90(foo)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

This appears to have been introduced in:

67a1de0d19 Makefile: Derive "PKGVERSION" from "git describe" by default

The previous commit (077de81a4c) produces this output:

$ x86_64-softmmu/qemu-system-x86_64 -version
QEMU emulator version 2.6.50 (foo), Copyright (c) 2003-2008 Fabrice Bellard

Jordan Justen (jljusten)
Changed in qemu:
assignee: nobody → Jordan Justen (jljusten)
Revision history for this message
Peter Maydell (pmaydell) wrote : Re: [Qemu-devel] [PATCH] qemu: Fix -version with configure --with-pkgversion

On 16 March 2017 at 09:00, Jordan Justen <email address hidden> wrote:
> This appears to have regressed in 67a1de0d19.
>
> When the configure --with-pkgversion=foo option is used, the output
> from -version will look like:
>
> QEMU emulator version 2.8.90(foo)
> Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
>
> After this patch, it will be:
>
> QEMU emulator version 2.8.90 (foo)
> Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
>
> Cc: Paolo Bonzini <email address hidden>
> Cc: Fam Zheng <email address hidden>
> Fixes: https://bugs.launchpad.net/bugs/1673373
> Cc: <email address hidden>
> Signed-off-by: Jordan Justen <email address hidden>
> ---
> Makefile | 2 +-
> configure | 2 +-
> vl.c | 2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 1c4c04f6f2..c9df119798 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -289,7 +289,7 @@ qemu-version.h: FORCE
> printf '"$(PKGVERSION)"\n'; \
> else \
> if test -d .git; then \
> - printf '" ('; \
> + printf '"('; \
> git describe --match 'v*' 2>/dev/null | tr -d '\n'; \
> if ! git diff-index --quiet HEAD &>/dev/null; then \
> printf -- '-dirty'; \
> diff --git a/configure b/configure
> index 99d8bece70..e94b06b5fc 100755
> --- a/configure
> +++ b/configure
> @@ -1004,7 +1004,7 @@ for opt do
> ;;
> --disable-blobs) blobs="no"
> ;;
> - --with-pkgversion=*) pkgversion=" ($optarg)"
> + --with-pkgversion=*) pkgversion="($optarg)"
> ;;
> --with-coroutine=*) coroutine="$optarg"
> ;;
> diff --git a/vl.c b/vl.c
> index 0b4ed5241c..3e60e61905 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1904,7 +1904,7 @@ static void main_loop(void)
>
> static void version(void)
> {
> - printf("QEMU emulator version " QEMU_VERSION QEMU_PKGVERSION "\n"
> + printf("QEMU emulator version " QEMU_VERSION " " QEMU_PKGVERSION "\n"
> QEMU_COPYRIGHT "\n");
> }

This is not the only place where we assemble a string from
QEMU_VERSION QEMU_PKGVERSION, so if you want to change from the
original approach where QEMU_PKGVERSION had a space in it then
you need to change the other places too.

Also it looks like we return QEMU_PKGVERSION as part of the
QMP qmp_query_version() code, so we should check to see what
the expected behaviour there is regarding having the space
or not.

I think when I wrote those printfs I was expecting that
QEMU_PKGVERSION might be a "-something" kind of string,
and so did whoever wrote the commit log for 67a1de0d19.
However looking at git history it seems to have always been
a " (something)" format, so obviously some confusion here...

thanks
-- PMM

Revision history for this message
Thomas Huth (th-huth) wrote :
Changed in qemu:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.