[Qemu-devel] [PATCH qemu-ga] qga: Make qemu-ga compile statically for Windows

Sameeh Jubran posted 1 patch 7 years ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170322130952.8997-1-sameeh@daynix.com
Test s390x passed
There is a newer version of this series
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH qemu-ga] qga: Make qemu-ga compile statically for Windows
Posted by Sameeh Jubran 7 years ago
Attempting to compile qemu-ga statically as follows for Windows causes
the following error:

Compilation:
    ./configure --disable-docs --target-list=x86_64-softmmu \
    --cross-prefix=x86_64-w64-mingw32- --static \
    --enable-guest-agent-msi --with-vss-sdk=/path/to/VSSSDK72

    make -j8 qemu-ga

Error:
    path/to/qemu/stubs/error-printf.c:7: undefined reference to `__imp_g_test_config_vars'
    collect2: error: ld returned 1 exit status
    Makefile:444: recipe for target 'qemu-ga.exe' failed
    make: *** [qemu-ga.exe] Error 1

This is caused by a bug in the pkg-config file for glib as it doesn't define
GLIB_STATIC_COMPILATION for pkg-config --static.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
---
 configure | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure b/configure
index b9a30cf..6f7b460 100755
--- a/configure
+++ b/configure
@@ -4138,7 +4138,7 @@ int main(void) { return VSS_CTX_BACKUP; }
 EOF
   if compile_prog "$vss_win32_include" "" ; then
     guest_agent_with_vss="yes"
-    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
+    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS $vss_win32_include"
     libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
     qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
   else
-- 
2.9.3


Re: [Qemu-devel] [PATCH qemu-ga] qga: Make qemu-ga compile statically for Windows
Posted by Peter Maydell 7 years ago
On 22 March 2017 at 13:09, Sameeh Jubran <sameeh@daynix.com> wrote:
> Attempting to compile qemu-ga statically as follows for Windows causes
> the following error:
>
> Compilation:
>     ./configure --disable-docs --target-list=x86_64-softmmu \
>     --cross-prefix=x86_64-w64-mingw32- --static \
>     --enable-guest-agent-msi --with-vss-sdk=/path/to/VSSSDK72
>
>     make -j8 qemu-ga
>
> Error:
>     path/to/qemu/stubs/error-printf.c:7: undefined reference to `__imp_g_test_config_vars'
>     collect2: error: ld returned 1 exit status
>     Makefile:444: recipe for target 'qemu-ga.exe' failed
>     make: *** [qemu-ga.exe] Error 1
>
> This is caused by a bug in the pkg-config file for glib as it doesn't define
> GLIB_STATIC_COMPILATION for pkg-config --static.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
> Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
> @@ -4138,7 +4138,7 @@ int main(void) { return VSS_CTX_BACKUP; }
>  EOF
>    if compile_prog "$vss_win32_include" "" ; then
>      guest_agent_with_vss="yes"
> -    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
> +    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS $vss_win32_include"
>      libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
>      qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
>    else

If we need this for static glib compilation we should
be adding it where we do the "test for glib and
add glib related flags to the CFLAGS", not in the
part of configure where we decide that we're
compiling the guest agent.

Also, please can we have a comment that clearly states
why we need this and that we're working around a
packaging bug in glib for Windows, please?

thanks
-- PMM

Re: [Qemu-devel] [PATCH qemu-ga] qga: Make qemu-ga compile statically for Windows
Posted by Sameeh Jubran 7 years ago
On Wed, Mar 22, 2017 at 3:21 PM, Peter Maydell <peter.maydell@linaro.org>
wrote:

> On 22 March 2017 at 13:09, Sameeh Jubran <sameeh@daynix.com> wrote:
> > Attempting to compile qemu-ga statically as follows for Windows causes
> > the following error:
> >
> > Compilation:
> >     ./configure --disable-docs --target-list=x86_64-softmmu \
> >     --cross-prefix=x86_64-w64-mingw32- --static \
> >     --enable-guest-agent-msi --with-vss-sdk=/path/to/VSSSDK72
> >
> >     make -j8 qemu-ga
> >
> > Error:
> >     path/to/qemu/stubs/error-printf.c:7: undefined reference to
> `__imp_g_test_config_vars'
> >     collect2: error: ld returned 1 exit status
> >     Makefile:444: recipe for target 'qemu-ga.exe' failed
> >     make: *** [qemu-ga.exe] Error 1
> >
> > This is caused by a bug in the pkg-config file for glib as it doesn't
> define
> > GLIB_STATIC_COMPILATION for pkg-config --static.
> >
> > Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
> > Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
> > @@ -4138,7 +4138,7 @@ int main(void) { return VSS_CTX_BACKUP; }
> >  EOF
> >    if compile_prog "$vss_win32_include" "" ; then
> >      guest_agent_with_vss="yes"
> > -    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
> > +    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS
> $vss_win32_include"
> >      libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++
> -Wl,--enable-stdcall-fixup $libs_qga"
> >      qga_vss_provider="qga/vss-win32/qga-vss.dll
> qga/vss-win32/qga-vss.tlb"
> >    else
>
> If we need this for static glib compilation we should
> be adding it where we do the "test for glib and
> add glib related flags to the CFLAGS", not in the
> part of configure where we decide that we're
> compiling the guest agent.
>
> Also, please can we have a comment that clearly states
> why we need this and that we're working around a
> packaging bug in glib for Windows, please?
>
sure, no problem.

>
> thanks
> -- PMM
>



-- 
Respectfully,
*Sameeh Jubran*
*Linkedin <https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a>*
*Software Engineer @ Daynix <http://www.daynix.com>.*
Re: [Qemu-devel] [PATCH qemu-ga] qga: Make qemu-ga compile statically for Windows
Posted by Marc-André Lureau 7 years ago
Hi

On Wed, Mar 22, 2017 at 5:11 PM Sameeh Jubran <sameeh@daynix.com> wrote:

> Attempting to compile qemu-ga statically as follows for Windows causes
> the following error:
>
> Compilation:
>     ./configure --disable-docs --target-list=x86_64-softmmu \
>     --cross-prefix=x86_64-w64-mingw32- --static \
>     --enable-guest-agent-msi --with-vss-sdk=/path/to/VSSSDK72
>
>     make -j8 qemu-ga
>
> Error:
>     path/to/qemu/stubs/error-printf.c:7: undefined reference to
> `__imp_g_test_config_vars'
>     collect2: error: ld returned 1 exit status
>     Makefile:444: recipe for target 'qemu-ga.exe' failed
>     make: *** [qemu-ga.exe] Error 1
>

weird, I don't get this error on fedora 25 (but I have no vss-sdk, is that
related?).


>
> This is caused by a bug in the pkg-config file for glib as it doesn't
> define
> GLIB_STATIC_COMPILATION for pkg-config --static.
>

If that's a bug in glib, it would be nice to have a link to a bug report.


>
> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
> Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
>
---
>  configure | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index b9a30cf..6f7b460 100755
> --- a/configure
> +++ b/configure
> @@ -4138,7 +4138,7 @@ int main(void) { return VSS_CTX_BACKUP; }
>  EOF
>    if compile_prog "$vss_win32_include" "" ; then
>      guest_agent_with_vss="yes"
> -    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
> +    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS
> $vss_win32_include"
>      libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++
> -Wl,--enable-stdcall-fixup $libs_qga"
>      qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
>    else
> --
> 2.9.3
>
>
> --
Marc-André Lureau
Re: [Qemu-devel] [PATCH qemu-ga] qga: Make qemu-ga compile statically for Windows
Posted by Sameeh Jubran 7 years ago
On Wed, Mar 22, 2017 at 3:29 PM, Marc-André Lureau <
marcandre.lureau@gmail.com> wrote:

> Hi
>
> On Wed, Mar 22, 2017 at 5:11 PM Sameeh Jubran <sameeh@daynix.com> wrote:
>
>> Attempting to compile qemu-ga statically as follows for Windows causes
>> the following error:
>>
>> Compilation:
>>     ./configure --disable-docs --target-list=x86_64-softmmu \
>>     --cross-prefix=x86_64-w64-mingw32- --static \
>>     --enable-guest-agent-msi --with-vss-sdk=/path/to/VSSSDK72
>>
>>     make -j8 qemu-ga
>>
>> Error:
>>     path/to/qemu/stubs/error-printf.c:7: undefined reference to
>> `__imp_g_test_config_vars'
>>     collect2: error: ld returned 1 exit status
>>     Makefile:444: recipe for target 'qemu-ga.exe' failed
>>     make: *** [qemu-ga.exe] Error 1
>>
>
> weird, I don't get this error on fedora 25 (but I have no vss-sdk, is that
> related?).
>
Can you please try it with vss-sdk (
https://www.microsoft.com/en-us/download/details.aspx?id=23490)

>
>
>>
>> This is caused by a bug in the pkg-config file for glib as it doesn't
>> define
>> GLIB_STATIC_COMPILATION for pkg-config --static.
>>
>
> If that's a bug in glib, it would be nice to have a link to a bug report.
>
I've just filed a bug report:
https://bugzilla.gnome.org/show_bug.cgi?id=780399
<https://bugzilla.gnome.org/show_bug.cgi?id=780399>

>
>
>>
>> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
>> Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
>>
> ---
>>  configure | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index b9a30cf..6f7b460 100755
>> --- a/configure
>> +++ b/configure
>> @@ -4138,7 +4138,7 @@ int main(void) { return VSS_CTX_BACKUP; }
>>  EOF
>>    if compile_prog "$vss_win32_include" "" ; then
>>      guest_agent_with_vss="yes"
>> -    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
>> +    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS
>> $vss_win32_include"
>>      libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++
>> -Wl,--enable-stdcall-fixup $libs_qga"
>>      qga_vss_provider="qga/vss-win32/qga-vss.dll
>> qga/vss-win32/qga-vss.tlb"
>>    else
>> --
>> 2.9.3
>>
>>
>> --
> Marc-André Lureau
>



-- 
Respectfully,
*Sameeh Jubran*
*Linkedin <https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a>*
*Software Engineer @ Daynix <http://www.daynix.com>.*