Can't compile qemu because of errors in the Xen code

Bug #1531632 reported by Leo
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Invalid
Undecided
Unassigned

Bug Description

I'm using Arch Linux, with all needed libs packages installed via ABS (compiled from source).
I tried to clone the master repository, the v2.5.0 and the stable-2.4.0, all I had the same problems:

First I have to disable -Werror, because it claims about some uninitialized variables.

Trying to compile the code, it stops when compiling the xen code (hw/block/xendisk.o), complaining that ioservid_t is declared twice, first as 16bit and then as 32bit.

Output of make:

  CC hw/block/xen_disk.o
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types for ‘ioservid_t’
 typedef uint16_t ioservid_t;
                  ^
In file included from /usr/include/xenctrl.h:37:0,
                 from /home/leo/qemu/include/hw/xen/xen_common.h:9,
                 from /home/leo/qemu/include/hw/xen/xen_backend.h:4,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was here
 typedef uint32_t ioservid_t;
                  ^
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h: In function ‘xen_get_ioreq_server_info’:
/home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function)
     rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, &param);
                                    ^
/home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared identifier is reported only once for each function it appears in
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function)
     rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, &param);
                                    ^
/home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed
make: *** [hw/block/xen_disk.o] Error 1
[leo@AlphaArch build]$ make
  CC hw/block/xen_disk.o
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types for ‘ioservid_t’
 typedef uint16_t ioservid_t;
                  ^
In file included from /usr/include/xenctrl.h:37:0,
                 from /home/leo/qemu/include/hw/xen/xen_common.h:9,
                 from /home/leo/qemu/include/hw/xen/xen_backend.h:4,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was here
 typedef uint32_t ioservid_t;
                  ^
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h: In function ‘xen_get_ioreq_server_info’:
/home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function)
     rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, &param);
                                    ^
/home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared identifier is reported only once for each function it appears in
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function)
     rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, &param);
                                    ^
/home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed
make: *** [hw/block/xen_disk.o] Error 1
[leo@AlphaArch build]$ make
  CC hw/block/xen_disk.o
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types for ‘ioservid_t’
 typedef uint16_t ioservid_t;
                  ^
In file included from /usr/include/xenctrl.h:37:0,
                 from /home/leo/qemu/include/hw/xen/xen_common.h:9,
                 from /home/leo/qemu/include/hw/xen/xen_backend.h:4,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was here
 typedef uint32_t ioservid_t;
                  ^
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h: In function ‘xen_get_ioreq_server_info’:
/home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function)
     rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, &param);
                                    ^
/home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared identifier is reported only once for each function it appears in
In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0,
                 from /home/leo/qemu/hw/block/xen_disk.c:39:
/home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function)
     rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, &param);
                                    ^
/home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed
make: *** [hw/block/xen_disk.o] Error 1

Revision history for this message
pranith (bobby-prani) wrote :

Can you post the `configure` command line you used when you try to compile?

Revision history for this message
Leo (l-andro-cs) wrote :

Hello pranith,

  Well, as I'm using the "ABS" system from Arch Linux, I had to study how it compile things, but I found it:

./configure --prefix=/usr --sysconfdir=/etc --audio-drv-list='pa alsa sdl' \
              --python=/usr/bin/python2 --smbd=/usr/bin/smbd \
              --enable-docs --libexecdir=/usr/lib/qemu \
              --disable-gtk --enable-linux-aio --enable-seccomp \
              --enable-spice --localstatedir=/var \
              --enable-tpm \
              --enable-modules --enable-{rbd,glusterfs,libiscsi,curl}

Then I downloaded a copy of qemu with git and I run the configure help (configure --help), then I saw that I can "enable/disable" xen, so I added the ---disable-xen to the above line in the PKGBUILD file from ABS and it compiled.
So, on **my** box I just had to disable Xen as I don't use it.
Thank you for your help.

Revision history for this message
pranith (bobby-prani) wrote :

OK. I am closing this then. :)

Changed in qemu:
status: New → Invalid
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.