[Qemu-devel] [PATCH 1/2] qga-win: include glib when building VSS DLL

Michael Roth posted 2 patches 6 years, 2 months ago
Maintainers: Michael Roth <mdroth@linux.vnet.ibm.com>
[Qemu-devel] [PATCH 1/2] qga-win: include glib when building VSS DLL
Posted by Michael Roth 6 years, 2 months ago
Commit 3ebee3b191e defined assert() as g_assert(), but when we build
the VSS DLL component of QGA (to handle fsfreeze) we do not include
glib, which results in breakage when building with VSS support enabled.

Fix this by including glib. Since the VSS DLL is built statically,
this introduces an additional dependency on static glib and supporting
libs for the mingw environment (possibly why we didn't include glib
originally), but VSS support already has very specific prerequisites
so it shouldn't affect too many build environments.

Since the VSS DLL code does use qemu/osdep.h, this should also help
avoid future breakages and possibly allow for some clean ups in current
VSS code.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Cc: Daniel P. Berrangé <berrange@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/vss-win32/Makefile.objs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qga/vss-win32/Makefile.objs b/qga/vss-win32/Makefile.objs
index 23d08da225..dad9d1b0ba 100644
--- a/qga/vss-win32/Makefile.objs
+++ b/qga/vss-win32/Makefile.objs
@@ -5,7 +5,7 @@ qga-vss-dll-obj-y += requester.o provider.o install.o
 obj-qga-vss-dll-obj-y = $(addprefix $(obj)/, $(qga-vss-dll-obj-y))
 $(obj-qga-vss-dll-obj-y): QEMU_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wredundant-decls -fstack-protector-all -fstack-protector-strong, $(QEMU_CFLAGS)) -Wno-unknown-pragmas -Wno-delete-non-virtual-dtor
 
-$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lole32 -loleaut32 -lshlwapi -luuid -static
+$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lglib-2.0 -lole32 -loleaut32 -lshlwapi -luuid -lintl -lws2_32 -static
 $(obj)/qga-vss.dll: $(obj-qga-vss-dll-obj-y) $(SRC_PATH)/$(obj)/qga-vss.def
 	$(call quiet-command,$(CXX) -o $@ $(qga-vss-dll-obj-y) $(SRC_PATH)/qga/vss-win32/qga-vss.def $(CXXFLAGS) $(LDFLAGS),"LINK","$(TARGET_DIR)$@")
 
-- 
2.17.1


Re: [Qemu-devel] [PATCH 1/2] qga-win: include glib when building VSS DLL
Posted by Daniel P. Berrangé 6 years, 2 months ago
On Tue, Feb 12, 2019 at 03:29:16PM -0600, Michael Roth wrote:
> Commit 3ebee3b191e defined assert() as g_assert(), but when we build
> the VSS DLL component of QGA (to handle fsfreeze) we do not include
> glib, which results in breakage when building with VSS support enabled.
> 
> Fix this by including glib. Since the VSS DLL is built statically,
> this introduces an additional dependency on static glib and supporting
> libs for the mingw environment (possibly why we didn't include glib
> originally), but VSS support already has very specific prerequisites
> so it shouldn't affect too many build environments.
> 
> Since the VSS DLL code does use qemu/osdep.h, this should also help
> avoid future breakages and possibly allow for some clean ups in current
> VSS code.
> 
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Cc: Daniel P. Berrangé <berrange@redhat.com>
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
>  qga/vss-win32/Makefile.objs | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/qga/vss-win32/Makefile.objs b/qga/vss-win32/Makefile.objs
> index 23d08da225..dad9d1b0ba 100644
> --- a/qga/vss-win32/Makefile.objs
> +++ b/qga/vss-win32/Makefile.objs
> @@ -5,7 +5,7 @@ qga-vss-dll-obj-y += requester.o provider.o install.o
>  obj-qga-vss-dll-obj-y = $(addprefix $(obj)/, $(qga-vss-dll-obj-y))
>  $(obj-qga-vss-dll-obj-y): QEMU_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wredundant-decls -fstack-protector-all -fstack-protector-strong, $(QEMU_CFLAGS)) -Wno-unknown-pragmas -Wno-delete-non-virtual-dtor
>  
> -$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lole32 -loleaut32 -lshlwapi -luuid -static
> +$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lglib-2.0 -lole32 -loleaut32 -lshlwapi -luuid -lintl -lws2_32 -static

Adding -lglib-2.0 makes sense, but your commit message doesn't explain
why -lintl or -lws2_32 are being added & they don't really make sense
to me.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH 1/2] qga-win: include glib when building VSS DLL
Posted by Michael Roth 6 years, 2 months ago
Quoting Daniel P. Berrangé (2019-02-13 03:12:06)
> On Tue, Feb 12, 2019 at 03:29:16PM -0600, Michael Roth wrote:
> > Commit 3ebee3b191e defined assert() as g_assert(), but when we build
> > the VSS DLL component of QGA (to handle fsfreeze) we do not include
> > glib, which results in breakage when building with VSS support enabled.
> > 
> > Fix this by including glib. Since the VSS DLL is built statically,
> > this introduces an additional dependency on static glib and supporting
> > libs for the mingw environment (possibly why we didn't include glib
> > originally), but VSS support already has very specific prerequisites
> > so it shouldn't affect too many build environments.
> > 
> > Since the VSS DLL code does use qemu/osdep.h, this should also help
> > avoid future breakages and possibly allow for some clean ups in current
> > VSS code.
> > 
> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> > Cc: Daniel P. Berrangé <berrange@redhat.com>
> > Cc: qemu-stable@nongnu.org
> > Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > ---
> >  qga/vss-win32/Makefile.objs | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/qga/vss-win32/Makefile.objs b/qga/vss-win32/Makefile.objs
> > index 23d08da225..dad9d1b0ba 100644
> > --- a/qga/vss-win32/Makefile.objs
> > +++ b/qga/vss-win32/Makefile.objs
> > @@ -5,7 +5,7 @@ qga-vss-dll-obj-y += requester.o provider.o install.o
> >  obj-qga-vss-dll-obj-y = $(addprefix $(obj)/, $(qga-vss-dll-obj-y))
> >  $(obj-qga-vss-dll-obj-y): QEMU_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wredundant-decls -fstack-protector-all -fstack-protector-strong, $(QEMU_CFLAGS)) -Wno-unknown-pragmas -Wno-delete-non-virtual-dtor
> >  
> > -$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lole32 -loleaut32 -lshlwapi -luuid -static
> > +$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lglib-2.0 -lole32 -loleaut32 -lshlwapi -luuid -lintl -lws2_32 -static
> 
> Adding -lglib-2.0 makes sense, but your commit message doesn't explain
> why -lintl or -lws2_32 are being added & they don't really make sense
> to me.

Those are dependencies introduced by glib for w32 socket APIs and 
gettext/internationalization. I was getting linker errors otherwise.

I'll add a note in the commit msg before applying (if there's no need for
a re-respin).

> 
> 
> Regards,
> Daniel
> -- 
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>