qemu: Update to 7.0.0, splits packages, enhances deps, extends tests/docs
This commit is contained in:
@@ -1,12 +1,17 @@
|
||||
_realname=qemu
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
|
||||
_base_ver="6.2.0"
|
||||
pkgname=(
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu"
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-common"
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-guest-agent"
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-image-util"
|
||||
)
|
||||
_base_ver="7.0.0"
|
||||
# QEMU Versioning of RC-SourcePackage and RC-Version differs
|
||||
# e.g. qemu-6.1.0-rc0.tar.xz contains 6.0.90, qemu-6.1.0-rc1.tar.xz contains 6.0.91
|
||||
# Unset _rc_no to create Release-Build
|
||||
#_rc_no="4"
|
||||
_rc_base_ver="6.1.9${_rc_no}"
|
||||
_rc_base_ver="6.2.9${_rc_no}"
|
||||
_rc_file_ver="rc${_rc_no}"
|
||||
_tarname=$( [ -z "${_rc_no}" ] && echo ${_realname}-${_base_ver} || echo ${_realname}-${_base_ver}-${_rc_file_ver} )
|
||||
pkgver=$( [ -z "${_rc_no}" ] && echo ${_base_ver} || echo ${_rc_base_ver} )
|
||||
@@ -24,49 +29,85 @@ makedepends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-python-sphinx"
|
||||
"${MINGW_PACKAGE_PREFIX}-python-sphinx_rtd_theme"
|
||||
"${MINGW_PACKAGE_PREFIX}-autotools"
|
||||
"${MINGW_PACKAGE_PREFIX}-tools-git"
|
||||
"${MINGW_PACKAGE_PREFIX}-cc"
|
||||
'perl' 'bison' 'bsdtar')
|
||||
depends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-capstone"
|
||||
"${MINGW_PACKAGE_PREFIX}-curl"
|
||||
"${MINGW_PACKAGE_PREFIX}-cyrus-sasl"
|
||||
"${MINGW_PACKAGE_PREFIX}-expat"
|
||||
"${MINGW_PACKAGE_PREFIX}-fontconfig"
|
||||
"${MINGW_PACKAGE_PREFIX}-freetype"
|
||||
"${MINGW_PACKAGE_PREFIX}-fribidi"
|
||||
"${MINGW_PACKAGE_PREFIX}-gcc-libs"
|
||||
"${MINGW_PACKAGE_PREFIX}-gdk-pixbuf2"
|
||||
"${MINGW_PACKAGE_PREFIX}-gettext"
|
||||
"${MINGW_PACKAGE_PREFIX}-glib2"
|
||||
"${MINGW_PACKAGE_PREFIX}-gmp"
|
||||
"${MINGW_PACKAGE_PREFIX}-gnutls"
|
||||
"${MINGW_PACKAGE_PREFIX}-graphite2"
|
||||
"${MINGW_PACKAGE_PREFIX}-gst-plugins-base"
|
||||
"${MINGW_PACKAGE_PREFIX}-gstreamer"
|
||||
"${MINGW_PACKAGE_PREFIX}-gtk3"
|
||||
"${MINGW_PACKAGE_PREFIX}-libjpeg"
|
||||
"${MINGW_PACKAGE_PREFIX}-harfbuzz"
|
||||
"${MINGW_PACKAGE_PREFIX}-jbigkit"
|
||||
"${MINGW_PACKAGE_PREFIX}-lerc"
|
||||
"${MINGW_PACKAGE_PREFIX}-libc++"
|
||||
"${MINGW_PACKAGE_PREFIX}-libdatrie"
|
||||
"${MINGW_PACKAGE_PREFIX}-libdeflate"
|
||||
"${MINGW_PACKAGE_PREFIX}-libepoxy"
|
||||
"${MINGW_PACKAGE_PREFIX}-libffi"
|
||||
"${MINGW_PACKAGE_PREFIX}-libiconv"
|
||||
"${MINGW_PACKAGE_PREFIX}-libidn2"
|
||||
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
|
||||
"${MINGW_PACKAGE_PREFIX}-libnfs"
|
||||
"${MINGW_PACKAGE_PREFIX}-libpng"
|
||||
"${MINGW_PACKAGE_PREFIX}-libpsl"
|
||||
"${MINGW_PACKAGE_PREFIX}-libslirp"
|
||||
"${MINGW_PACKAGE_PREFIX}-libssh"
|
||||
"${MINGW_PACKAGE_PREFIX}-libssh2"
|
||||
"${MINGW_PACKAGE_PREFIX}-libssp"
|
||||
"${MINGW_PACKAGE_PREFIX}-libtasn1"
|
||||
"${MINGW_PACKAGE_PREFIX}-libthai"
|
||||
"${MINGW_PACKAGE_PREFIX}-libtiff"
|
||||
"${MINGW_PACKAGE_PREFIX}-libunistring"
|
||||
"${MINGW_PACKAGE_PREFIX}-libunwind"
|
||||
"${MINGW_PACKAGE_PREFIX}-libusb"
|
||||
"${MINGW_PACKAGE_PREFIX}-libxml2"
|
||||
"${MINGW_PACKAGE_PREFIX}-libwebp"
|
||||
"${MINGW_PACKAGE_PREFIX}-libwinpthread-git"
|
||||
"${MINGW_PACKAGE_PREFIX}-lz4"
|
||||
"${MINGW_PACKAGE_PREFIX}-lzo2"
|
||||
"${MINGW_PACKAGE_PREFIX}-nettle"
|
||||
"${MINGW_PACKAGE_PREFIX}-nghttp2"
|
||||
"${MINGW_PACKAGE_PREFIX}-openssl"
|
||||
"${MINGW_PACKAGE_PREFIX}-opus"
|
||||
"${MINGW_PACKAGE_PREFIX}-orc"
|
||||
"${MINGW_PACKAGE_PREFIX}-p11-kit"
|
||||
"${MINGW_PACKAGE_PREFIX}-pango"
|
||||
"${MINGW_PACKAGE_PREFIX}-pcre"
|
||||
"${MINGW_PACKAGE_PREFIX}-pixman"
|
||||
"${MINGW_PACKAGE_PREFIX}-SDL2"
|
||||
"${MINGW_PACKAGE_PREFIX}-SDL2_image"
|
||||
"${MINGW_PACKAGE_PREFIX}-spice"
|
||||
"${MINGW_PACKAGE_PREFIX}-snappy"
|
||||
"${MINGW_PACKAGE_PREFIX}-spice"
|
||||
"${MINGW_PACKAGE_PREFIX}-usbredir"
|
||||
"${MINGW_PACKAGE_PREFIX}-xz"
|
||||
"${MINGW_PACKAGE_PREFIX}-zlib"
|
||||
"${MINGW_PACKAGE_PREFIX}-zstd"
|
||||
)
|
||||
optdepends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-gtk-vnc: Contains gvncviewer. For connections to Qemu VNC server"
|
||||
"${MINGW_PACKAGE_PREFIX}-spice-gtk: Contains spicy. For connections to Qemu SPICE server"
|
||||
"${MINGW_PACKAGE_PREFIX}-virt-viewer: Contains remote-viewer. For connections to Qemu SPICE or VNC server"
|
||||
)
|
||||
source=(
|
||||
"https://download.qemu.org/${_tarname}.tar.xz"{,.sig}
|
||||
msys2.readme.txt
|
||||
msys2.qemu-guest-agent.txt
|
||||
msys2.examples.tests.sh
|
||||
)
|
||||
sha256sums=(
|
||||
'68e15d8e45ac56326e0b9a4afa8b49a3dfe8aba3488221d098c84698bca65b45'
|
||||
'f6b375c7951f728402798b0baabb2d86478ca53d44cedbefabbe1c46bf46f839'
|
||||
'SKIP'
|
||||
'51625fd83c0a63729942d3dfc6d48be3491a700fe0f7cb8e88935b46081c9016'
|
||||
'75723aade171bfe92082262819624df726f30122ccdd3a194584a3b74320f35d'
|
||||
'f2f9eeb31023d002f54637a9941ea0d8fae3c6f0a66c05c033857b305bd1470d'
|
||||
'3adcd2a37c975890c95e89538d6147872ea3d32b034edbedf5fafe8063bb62a1'
|
||||
)
|
||||
validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') # Michael Roth <flukshun@gmail.com>
|
||||
# tar cannot create links, to keep build running, manual extraction is required
|
||||
@@ -75,17 +116,15 @@ noextract=(${_tarname}.tar.xz)
|
||||
prepare() {
|
||||
[[ -d "${srcdir}"/${_tarname} ]] && rm -rf "${srcdir}"/${_tarname}
|
||||
# tar cannot create links here, therefore hide the failure
|
||||
tar -xf ${srcdir}/${_tarname}.tar.xz -C ${srcdir} || true
|
||||
|
||||
cd "${srcdir}/${_tarname}"
|
||||
tar -xf "${srcdir}"/${_tarname}.tar.xz -C "${srcdir}" || true
|
||||
}
|
||||
|
||||
build() {
|
||||
LDFLAGS+=" -fstack-protector"
|
||||
[[ -d "${srcdir}"/build-${CARCH} ]] && rm -rf "${srcdir}"/build-${CARCH}
|
||||
mkdir -p "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH}
|
||||
mkdir -pv "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH}
|
||||
|
||||
# configure failes to create links, which can be ignored
|
||||
# configure fails to create links, which can be ignored
|
||||
# qemu enables all features if possible, so keep it simple
|
||||
# For faster testing:
|
||||
#TARGETLIST="--target-list=x86_64-softmmu"
|
||||
@@ -99,6 +138,10 @@ build() {
|
||||
|
||||
# Finally build
|
||||
make
|
||||
# TODO Remove widl-cmd as soon as qga-vss.tlb is generated by make
|
||||
cd qga/vss-win32
|
||||
widl -I${MINGW_PREFIX}/include -L${MINGW_PREFIX}/include \
|
||||
-t "${srcdir}"/${_tarname}/qga/vss-win32/qga-vss.idl -o qga-vss.tlb
|
||||
}
|
||||
|
||||
check() {
|
||||
@@ -108,7 +151,7 @@ check() {
|
||||
make test || true
|
||||
}
|
||||
|
||||
package() {
|
||||
makeinstall() {
|
||||
cd "${srcdir}"/build-${CARCH}
|
||||
|
||||
# Install to ${pkgdir}
|
||||
@@ -127,12 +170,76 @@ package() {
|
||||
mv -v share/qemu/icons share/
|
||||
mkdir -pv share/qemu/applications
|
||||
mv -v share/qemu/applications share/
|
||||
}
|
||||
|
||||
makeinstallpkg() {
|
||||
local _pkg=$1
|
||||
|
||||
makeinstall
|
||||
|
||||
echo
|
||||
echo "Split installation into partitions"
|
||||
|
||||
cd "${pkgdir}"
|
||||
|
||||
# Start with all content in qemu partition
|
||||
local _qemu=qemu/${MINGW_PREFIX}
|
||||
mkdir -pv qemu
|
||||
mv -v ./${MINGW_PREFIX} qemu/
|
||||
|
||||
# Move to qemu-guest-agent partition
|
||||
local _qemu_ga=qemu-guest-agent/${MINGW_PREFIX}
|
||||
mkdir -pv ${_qemu_ga}/bin ${_qemu_ga}/share/man/man7 ${_qemu_ga}/share/man/man8
|
||||
mv -v ${_qemu}/bin/qemu-ga.exe ${_qemu_ga}/bin/
|
||||
mv -v ${_qemu}/share/man/man8/qemu-ga.8 ${_qemu_ga}/share/man/man8/
|
||||
mv -v ${_qemu}/share/man/man7/qemu-ga-ref.7 ${_qemu_ga}/share/man/man7/
|
||||
|
||||
# Move to qemu-image-util partition
|
||||
local _qemu_img=qemu-image-util/${MINGW_PREFIX}
|
||||
mkdir -pv ${_qemu_img}/bin ${_qemu_img}/share/man/man1
|
||||
mv -v ${_qemu}/bin/qemu-img.exe ${_qemu_img}/bin/
|
||||
mv -v ${_qemu}/share/man/man1/qemu-img.1 ${_qemu_img}/share/man/man1/
|
||||
|
||||
# Move to qemu-common partition
|
||||
local _qemu_com=qemu-common/${MINGW_PREFIX}
|
||||
mkdir -pv ${_qemu_com}/share/doc
|
||||
mv -v ${_qemu}/share/doc/qemu ${_qemu_com}/share/doc/
|
||||
|
||||
# Select requested partition and remove other partitions
|
||||
echo
|
||||
echo "Select partition ${_pkg} for packaging"
|
||||
mv -v ${_pkg}/${MINGW_PREFIX} ./
|
||||
rm -rf ${_qemu} ${_qemu_ga} ${_qemu_img} ${_qemu_com}
|
||||
|
||||
cd ./${MINGW_PREFIX}
|
||||
}
|
||||
|
||||
package_qemu() {
|
||||
# Split package depends
|
||||
depends+=(
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-common"
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-guest-agent"
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-image-util"
|
||||
)
|
||||
optdepends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-gtk-vnc: Contains gvncviewer. For connections to Qemu VNC server"
|
||||
"${MINGW_PACKAGE_PREFIX}-spice-gtk: Contains spicy. For connections to Qemu SPICE server"
|
||||
"${MINGW_PACKAGE_PREFIX}-virt-viewer: Contains remote-viewer. For connections to Qemu SPICE or VNC server"
|
||||
)
|
||||
|
||||
makeinstallpkg qemu
|
||||
|
||||
# Fix firmware descriptors
|
||||
# see https://bugzilla.redhat.com/show_bug.cgi?id=1728652#c7
|
||||
mkdir -pv share/qemu/firmware
|
||||
find share/qemu/firmware -type f -exec \
|
||||
sed -i "s%\(\"filename\"\s*:\s*\"\).*edk2%\1${MINGW_PREFIX}/share/qemu/edk2%" {} \;
|
||||
}
|
||||
|
||||
package_qemu-common() {
|
||||
depends=()
|
||||
|
||||
makeinstallpkg qemu-common
|
||||
|
||||
# Add all licenses found in qemu sources to share/licences/qemu/
|
||||
mkdir -pv share/licenses/qemu
|
||||
@@ -145,7 +252,77 @@ package() {
|
||||
) | tar -C share/licenses/qemu -xv
|
||||
|
||||
# Add msys2 docs
|
||||
mkdir -pv share/doc/qemu
|
||||
cp -pv "${srcdir}"/msys2.readme.txt share/doc/qemu/
|
||||
cp -pv "${srcdir}"/msys2.examples.tests.sh share/doc/qemu/
|
||||
install -v -Dm644 -t share/doc/qemu/ "${srcdir}"/msys2.readme.txt
|
||||
install -v -Dm644 -t share/doc/qemu/ "${srcdir}"/msys2.qemu-guest-agent.txt
|
||||
install -v -Dm755 -t share/doc/qemu/ "${srcdir}"/msys2.examples.tests.sh
|
||||
}
|
||||
|
||||
package_qemu-guest-agent() {
|
||||
depends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-gettext"
|
||||
"${MINGW_PACKAGE_PREFIX}-gcc-libs"
|
||||
"${MINGW_PACKAGE_PREFIX}-glib2"
|
||||
"${MINGW_PACKAGE_PREFIX}-libc++"
|
||||
"${MINGW_PACKAGE_PREFIX}-libiconv"
|
||||
"${MINGW_PACKAGE_PREFIX}-libunwind"
|
||||
"${MINGW_PACKAGE_PREFIX}-libwinpthread"
|
||||
"${MINGW_PACKAGE_PREFIX}-pcre"
|
||||
)
|
||||
# Split package depends
|
||||
depends+=(
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-common"
|
||||
)
|
||||
|
||||
makeinstallpkg qemu-guest-agent
|
||||
|
||||
# Upstream doesn't install, but creates qga.msi which contains these
|
||||
install -v -Dm644 -t bin/ "${srcdir}"/build-${CARCH}/qga/vss-win32/qga-vss.dll
|
||||
install -v -Dm644 -t bin/ "${srcdir}"/build-${CARCH}/qga/vss-win32/qga-vss.tlb
|
||||
}
|
||||
|
||||
package_qemu-image-util() {
|
||||
depends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-brotli"
|
||||
"${MINGW_PACKAGE_PREFIX}-bzip2"
|
||||
"${MINGW_PACKAGE_PREFIX}-curl"
|
||||
"${MINGW_PACKAGE_PREFIX}-gcc-libs"
|
||||
"${MINGW_PACKAGE_PREFIX}-gettext"
|
||||
"${MINGW_PACKAGE_PREFIX}-glib2"
|
||||
"${MINGW_PACKAGE_PREFIX}-gmp"
|
||||
"${MINGW_PACKAGE_PREFIX}-gnutls"
|
||||
"${MINGW_PACKAGE_PREFIX}-libiconv"
|
||||
"${MINGW_PACKAGE_PREFIX}-libidn2"
|
||||
"${MINGW_PACKAGE_PREFIX}-libffi"
|
||||
"${MINGW_PACKAGE_PREFIX}-libnfs"
|
||||
"${MINGW_PACKAGE_PREFIX}-libpsl"
|
||||
"${MINGW_PACKAGE_PREFIX}-libssh"
|
||||
"${MINGW_PACKAGE_PREFIX}-libssh2"
|
||||
"${MINGW_PACKAGE_PREFIX}-libunistring"
|
||||
"${MINGW_PACKAGE_PREFIX}-libtasn1"
|
||||
"${MINGW_PACKAGE_PREFIX}-libwinpthread"
|
||||
"${MINGW_PACKAGE_PREFIX}-nettle"
|
||||
"${MINGW_PACKAGE_PREFIX}-nghttp2"
|
||||
"${MINGW_PACKAGE_PREFIX}-openssl"
|
||||
"${MINGW_PACKAGE_PREFIX}-pcre"
|
||||
"${MINGW_PACKAGE_PREFIX}-p11-kit"
|
||||
"${MINGW_PACKAGE_PREFIX}-zlib"
|
||||
"${MINGW_PACKAGE_PREFIX}-zstd"
|
||||
)
|
||||
# Split package depends
|
||||
depends+=(
|
||||
"${MINGW_PACKAGE_PREFIX}-qemu-common"
|
||||
)
|
||||
|
||||
makeinstallpkg qemu-image-util
|
||||
}
|
||||
|
||||
# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
|
||||
# vim: set ft=bash :
|
||||
|
||||
# generate wrappers
|
||||
for _name in "${pkgname[@]}"; do
|
||||
_short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
|
||||
_func="$(declare -f "${_short}")"
|
||||
eval "${_func/#${_short}/package_${_name}}"
|
||||
done
|
||||
# template end;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
90
mingw-w64-qemu/msys2.qemu-guest-agent.txt
Normal file
90
mingw-w64-qemu/msys2.qemu-guest-agent.txt
Normal file
@@ -0,0 +1,90 @@
|
||||
----------
|
||||
Versioning
|
||||
----------
|
||||
There are concurrent versioning schemes depending on the distribution source.
|
||||
This qemu-ga binary shows the version based on QEMU source code.
|
||||
|
||||
----------------------------------------------
|
||||
Start the guest with QEMU Guest Agent support:
|
||||
----------------------------------------------
|
||||
Before installing qemu-ga in the Windows guest, start the QEMU process for the Windows guest with guest support.
|
||||
|
||||
On Linux host add the following parameters to the qemu command line for guest support
|
||||
-device virtio-serial-pci \
|
||||
-chardev socket,id=qga0,path=qga.sock,server=on,wait=off \
|
||||
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0
|
||||
|
||||
On Windows host add the following parameters to the qemu command line
|
||||
-device virtio-serial-pci \
|
||||
-chardev socket,id=qga0,port=5906,host=127.0.0.1,server=on,wait=off \
|
||||
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0
|
||||
|
||||
Further information:
|
||||
https://wiki.qemu.org/Features/GuestAgent
|
||||
|
||||
------------------------------------------
|
||||
Install QEMU Guest Agent in Windows guest:
|
||||
------------------------------------------
|
||||
Install software as usual for your architecture:
|
||||
pacman -S mingw-w64-<ARCH>-qemu-guest-agent
|
||||
ARCH=x86_64: pacman -S mingw-w64-x86_64-qemu-guest-agent
|
||||
|
||||
As administrator start an installation shell depending on your architecture.
|
||||
ARCH=x86_64: Start "MSYS2 MinGW 64-bit" shell as administrator
|
||||
|
||||
Check and stop an already registered qemu-ga with
|
||||
net stop "QEMU Guest Agent"
|
||||
net stop "QEMU Guest Agent VSS Provider"
|
||||
|
||||
Verify that the msys2 provided qemu-ga works with
|
||||
qemu-ga -v
|
||||
|
||||
If the process logs messages and keeps running, qemu-ga is ready to react upon requests.
|
||||
Stop this foreground qemu-ga with CTRL-C to go on.
|
||||
|
||||
If existing, uninstall the old qemu-ga using its appropriate routine now.
|
||||
|
||||
Register the msys2 provided qemu-ga with
|
||||
qemu-ga -s install
|
||||
|
||||
Start freshly registered qemu-ga service with
|
||||
net start "QEMU Guest Agent"
|
||||
|
||||
qemu-ga service is configured to start automatically on restart.
|
||||
|
||||
Furher information:
|
||||
man qemu-ga
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=962669
|
||||
|
||||
----------------------
|
||||
Using QEMU Guest Agent
|
||||
----------------------
|
||||
Reacts in guest OS to your requests sent from host OS.
|
||||
|
||||
Open a shell on the host to connect to the guest's socket while qemu-ga is active now.
|
||||
|
||||
On Linux host (after installing socat)
|
||||
socat - unix-connect:qga.sock
|
||||
|
||||
On Windows host (after pacman -S socat)
|
||||
socat - tcp-connect:127.0.0.1:5906
|
||||
|
||||
Now you are ready to send a json request to the agent. For example sending
|
||||
{"execute": "guest-info"}
|
||||
|
||||
will be answered with
|
||||
{"return": {"version": "6.2.93", "supported_commands": ...
|
||||
|
||||
Stop the connection with CTRL-C
|
||||
|
||||
Further information:
|
||||
man qemu-ga-ref
|
||||
|
||||
-----------------------------
|
||||
QEMU Guest Agent VSS Provider
|
||||
-----------------------------
|
||||
VSS defines a process to create consistent backups initiated from Windows guest.
|
||||
|
||||
Further information:
|
||||
https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1286672
|
||||
Reference in New Issue
Block a user