qemu-devel
[Top][All Lists]
Advanced

[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: Paolo Bonzini
Subject: Re: [Qemu-devel] [RFC PATCH 03/10] qemu-ga: Add an configure option to specify path to Windows VSS SDK
Date: Thu, 14 Feb 2013 15:36:42 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2

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?


>  ##########################################
> +# 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.

> +  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.

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
> 
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]