From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: "Denis V. Lunev" <den-lists@parallels.com>,
Peter Maydell <peter.maydell@linaro.org>
Cc: Olga Krishtal <okrishtal@parallels.com>,
den@paralles.com, QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] qga: fix build for older versions of mingw
Date: Tue, 07 Jul 2015 16:23:05 -0500 [thread overview]
Message-ID: <20150707212305.5523.98383@loki> (raw)
In-Reply-To: <559C30C4.4050707@parallels.com>
Quoting Denis V. Lunev (2015-07-07 15:04:20)
> On 07/07/15 23:02, Michael Roth wrote:
> > Quoting Peter Maydell (2015-07-07 14:16:29)
> >> On 7 July 2015 at 19:06, Denis V. Lunev <den-lists@parallels.com> wrote:
> >>> On 07/07/15 20:13, Olga Krishtal wrote:
> >>>>
> >>>> Peter, can you try this patch on your system?
> >>>>
> >>>> In mingw older than mingw64-headers-4.0.2-1.el7.noarch
> >>>> header ntddscsi.h can be found in include/ddk, however
> >>>> compiler does not look there. This breaks the compilation.
> >>>>
> >>>> The patch adds this directory in QEMU_INCLUDES.
> >>>>
> >>>> Signed-off-by: Olga Krishtal <okrishtal@parallels.com>
> >>>> ---
> >>>> configure | 9 ++++++++-
> >>>> 1 file changed, 8 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/configure b/configure
> >>>> index 52cfe18..ada8895 100755
> >>>> --- a/configure
> >>>> +++ b/configure
> >>>> @@ -3763,7 +3763,6 @@ if test "$usb_redir" != "no" ; then
> >>>> usb_redir="no"
> >>>> fi
> >>>> fi
> >>>> -
> >>>> ##########################################
> >>>> # check if we have VSS SDK headers for win
> >>>>
> >>>> @@ -3820,6 +3819,14 @@ if test "$mingw32" = "yes" -a "$guest_agent" !=
> >>>> "no" -a "$guest_agent_with_vss"
> >>>> fi
> >>>>
> >>>> ##########################################
> >>>> +# mingw package on Linux is quite different with different versions.
> >>>> ntddscsi.h
> >>>> +# can be found sys-root/mingw/include and in sys-root/mingw/include/ddk
> >>>> +# Add ddk directory to lookup path automatically
> >>>> +if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
> >>>> + QEMU_INCLUDES="$QEMU_INCLUDES -I`$cc -print-sysroot`/mingw/include/ddk"
> >>>> +fi
> >>>> +
> >>>> +##########################################
> >>>> # Guest agent Window MSI package
> >>>>
> >>>> if test "$guest_agent" != yes; then
> >>>>
> >>>
> >>> actually this is a dirty hack, but we want to
> >>> know whether additional include directory help or not.
> >>> If this helps, we could think how to avoid extra
> >>> configuration option and ifdef in the code.
> >>
> >> I agree it's a pretty nasty hack :-)
> >>
> >> Unfortunately my build machine is going to be running
> >> flat out processing all the last-minute pull requests.
> >> I won't be able to test this until tomorrow at best.
> >
> > I've gotten an ubuntu 14.04 mingw environment set up that I think matches yours
> > fairly closely, so I can give any proposed fixes a spin.
> >
> > Unfortunately simply pointing to ddk/ntddscsi.h instead of ntddscsi.h
> > doesn't quite do it:
> >
> > In file included from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddk.h:76,
> > from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddscsi.h:34,
> > from /home/mdroth/w/qemu4.git/qga/commands-win32.c:25:
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:1069: error: redefinition of ‘struct _DRIVE_LAYOUT_INFORMATION_MBR’
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:1073: error: redefinition of ‘struct _DRIVE_LAYOUT_INFORMATION_GPT’
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:1080: error: redefinition of ‘struct _PARTITION_INFORMATION_MBR’
> > In file included from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddk.h:76,
> > from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddscsi.h:34,
> > from /home/mdroth/w/qemu4.git/qga/commands-win32.c:25:
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3575: error: nested redefinition of ‘enum _PARTITION_STYLE’
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3575: error: redeclaration of ‘enum _PARTITION_STYLE’
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3576: error: redeclaration of enumerator ‘PARTITION_STYLE_MBR’
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/winioctl.h:208: error: previous definition of ‘PARTITION_STYLE_MBR’ was here
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3578: error: redeclaration of enumerator ‘PARTITION_STYLE_GPT’
> > /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/winioctl.h:209: error: previous definition of ‘PARTITION_STYLE_GPT’ was here
> > ...
> >
> > I'm still trying to make sense of how the headers are organized but the
> > impression I'm getting is that stuff in ddk/ is meant for kernel code and
> > doesn't play very nicely with userspace headers. At some point ntddscsi.h
> > got moved out of ddk/ and #ifdef guards were added all over the place to
> > make it useable, so it seems likely we'll have to disable the feature
> > completely for the ddk/ntddscsi.h versions of mingw.
> >
> >>
> >> -- PMM
> >>
> >
>
>
> yep :( this seems so thus we need to disable it if the header is not
> available
Hmm, well it seems it's *almost* possible. I can build with the
following changes (ddk/ntddstor.h replaces winioctl.h):
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 609f3c7..6ebb531 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -21,8 +21,11 @@
#include <ws2ipdef.h>
#include <iptypes.h>
#include <iphlpapi.h>
-#include <winioctl.h>
-#include <ntddscsi.h>
+#include <ddk/ntddk.h>
+#include <ddk/ntddscsi.h>
+#include <ddk/ntddstor.h>
#include <setupapi.h>
#include <initguid.h>
#include "qga/guest-agent-core.h"
But I have to modify ddk/winddk.h (pulled in by ddk/ntddk.h) due to an
unfortunately-named 'PCIBus' enum that conflicts with QEMU defs. I
don't think there's a reasonable way to work around this so we'll
have to stick to the original plan.
Since I have a build environment handy I'll go ahead and put together
a patch to disable the feature via a configure check/flag.
>
next prev parent reply other threads:[~2015-07-07 21:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-07 4:40 [Qemu-devel] [PULL 00/10] qemu-ga patches for 2.4.0 Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 01/10] qga/commands-posix: Fix bug in guest-fstrim Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 02/10] qga/qmp_guest_fstrim: Return per path fstrim result Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 03/10] Revert "guest agent: remove g_strcmp0 usage" Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 04/10] qga: add win32 library iphlpapi Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 05/10] qga: win32 qmp_guest_network_get_interfaces implementation Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 06/10] qga: fail early for invalid time Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 07/10] qga: added empty qmp_quest_get_fsinfo functionality Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 08/10] qga: added mountpoint and filesystem type for single volume Michael Roth
2015-07-07 4:40 ` [Qemu-devel] [PATCH 09/10] qga: added bus type and disk location path Michael Roth
2015-07-20 15:06 ` Eric Blake
2015-07-20 15:19 ` Denis V. Lunev
2015-07-07 4:40 ` [Qemu-devel] [PATCH 10/10] qga: added GuestPCIAddress information Michael Roth
2015-07-07 10:32 ` [Qemu-devel] [PULL 00/10] qemu-ga patches for 2.4.0 Peter Maydell
2015-07-07 13:06 ` Olga Krishtal
2015-07-07 13:15 ` Peter Maydell
2015-07-07 13:18 ` Peter Maydell
2015-07-07 13:25 ` Olga Krishtal
2015-07-07 13:30 ` Peter Maydell
2015-07-07 17:13 ` [Qemu-devel] [PATCH] qga: fix build for older versions of mingw Olga Krishtal
2015-07-07 18:06 ` Denis V. Lunev
2015-07-07 19:16 ` Peter Maydell
2015-07-07 20:02 ` Michael Roth
2015-07-07 20:04 ` Denis V. Lunev
2015-07-07 21:23 ` Michael Roth [this message]
2015-07-07 21:28 ` Peter Maydell
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=20150707212305.5523.98383@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=den-lists@parallels.com \
--cc=den@paralles.com \
--cc=okrishtal@parallels.com \
--cc=peter.maydell@linaro.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.