[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH 03/10] qemu-ga: Add an configure option to s
From: |
Tomoki Sekiyama |
Subject: |
Re: [Qemu-devel] [RFC PATCH 03/10] qemu-ga: Add an configure option to specify path to Windows VSS SDK |
Date: |
Fri, 15 Feb 2013 12:56:11 +0900 |
User-agent: |
Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 |
Hi Paolo,
On 2013/02/14 23:36, Paolo Bonzini wrote:
> Il 14/02/2013 07:10, Tomoki Sekiyama ha scritto:
>> To enable VSS support in qemu-ga for Windows, header files included in
>> VSS SDK is required.
>> The VSS support is enabled when the option like below:
>> ./configure --with-vss-sdk="/pass/to/VSS SDK"
>>
>> VSS SDK is available from:
>> http://www.microsoft.com/en-us/download/details.aspx?id=23490
>>
>> To cross-compilie using mingw32 for Linux, you need to setup the SDK on
>> Windows environments to extract headers. You can also use wine to run the
>> setup of SDK on Linux etc.
>
> You can also use msitools (https://live.gnome.org/msitools; right now
> they are not packaged for any distro, but will be in Fedora soon):
>
> -----
> #! /bin/bash
>
> # extract-vsssdk-headers
> # Author: Paolo Bonzini <address@hidden>
>
> set -e
> if test $# = 0 || ! test -f "$1"; then
> echo 'Usage: extract-vsssdk-headers /path/to/setup.exe
> exit 1
> fi
>
> # Extract .MSI file in the .exe, looking for the OLE compound
> # document signature. Extra data at the end does not matter.
> export LC_ALL=C
> MAGIC=$'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'
> offset=`grep -abom1 "$MAGIC" setup.exe | sed -n 's/:/\n/; P' `
> (dd of=/dev/null skip=$offset bs=1 count=0; cat) < "$1" > vsssdk.msi
>
> # Now extract the files.
> tmpdir=tmp$$
> mkdir $tmpdir
> msiextract -C $tmpdir vsssdk.msi
> mv "$tmpdir/Program Files/Microsoft/VSSSDK72/inc" inc
> rm -rf $tmpdir vsssdk.msi
> exit 0
> -----
>
> Can you add this in scripts/extract-vsssdk-headers please?
Thank you for the code (tricky!), I will add this.
>> ##########################################
>> +# check if we have VSS SDK headers for win
>> +
>> +if test "$mingw32" = "yes" -a "$guest_agent" = "yes" ; then
>> + case "$vss_win32_sdk" in
>> + "") vss_win32_include="" ;;
>> + *\ *) # The SDK is installed in "Program Files" by default, but we
>> cannot
>> + # handle path with spaces. So we copy the headers into ".sdk/sdk".
>> + vss_win32_include="-I$source_path/.sdk/vss"
>> + symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
>> + ;;
>> + *) vss_win32_include="-I$vss_win32_sdk"
>> + esac
>
> Please also add support for these:
>
> --with-vss-sdk=no and --without-vss-sdk to disable VSS
>
> --with-vss-sdk (with no path) is the same as "--with-vss-sdk=", but
> should fail if the program does not compile.
>
> The default should be what you have now, i.e. test and proceed according
> to the result.
I see.
>> + cat > $TMPC << EOF
>> +#define __MIDL_user_allocate_free_DEFINED__
>> +#include <inc/win2003/vss.h>
>> +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"
>> + libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++
>> -Wl,--enable-stdcall-fixup $libs_qga"
>> + else
>> + if test "$vss_win32_sdk" != "" ; then
>> + echo "ERROR: Please download and install Microsoft VSS SDK from"
>> + echo "ERROR:
>> http://www.microsoft.com/en-us/download/details.aspx?id=23490"
>
> Please add a note here detailing how to extract the headers on POSIX
> systems.
OK, thanks again.
> Paolo
>
>> + feature_not_found "VSS support"
>> + fi
>> + guest_agent_with_vss="no"
>> + fi
>> +fi
>> +
>> +##########################################
>>
>> ##########################################
>> # check if we have fdatasync
>> @@ -3343,6 +3380,7 @@ echo "usb net redir $usb_redir"
>> echo "OpenGL support $opengl"
>> echo "libiscsi support $libiscsi"
>> echo "build guest agent $guest_agent"
>> +echo "QGA VSS support $guest_agent_with_vss"
>> echo "seccomp support $seccomp"
>> echo "coroutine backend $coroutine_backend"
>> echo "GlusterFS support $glusterfs"
>> @@ -3404,6 +3442,9 @@ if test "$mingw32" = "yes" ; then
>> version_micro=0
>> echo
>> "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro"
>> >> $config_host_mak
>> echo
>> "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro"
>> >> $config_host_mak
>> + if test "$guest_agent_with_vss" = "yes" ; then
>> + echo "CONFIG_QGA_VSS=y" >> $config_host_mak
>> + fi
>> else
>> echo "CONFIG_POSIX=y" >> $config_host_mak
>> fi
>>
>>
>>
--
Tomoki Sekiyama
[Qemu-devel] [RFC PATCH 01/10] configure: Support configuring c++ compiler, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 06/10] qemu-ga: call Windows VSS requester in fsfreeze command handler, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 05/10] qemu-ga: Add Windows VSS requester to quisce applications and filesystems, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 07/10] qemu-ga: install Windows VSS provider on `qemu-ga -s install', Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 09/10] QMP/qemu-ga-client: make timeout longer for guest-fsfreeze-freeze command, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 04/10] qemu-ga: Add Windows VSS provider to quiesce applications on fsfreeze, Tomoki Sekiyama, 2013/02/14