spice: upgrade 0.14.2 -> 0.15.2

-switch to meson buildsystem
-remove patches
-update dependencies
-fetch spice-common as a submodule

Major Changes in 0.15.2:
Really minor fix release, mainly to fix a distribution issue

Add missing file to distribution
Fix sound recording fix in case of buffer wrapping

Major Changes in 0.15.1:

Fix some compatibility issues with FreeBSD
Fix some minor issue with build
Improve packaging with Meson
Lot of C++ improves (clang-tidy)
Fix some compatibility with no-Glibc libraries (like Musl)
Fix minor leaks shutting down library
Add Doxygen file to distribution
Fix a longstanding issue related to surface updates where wrong surfaces were possibly used
Fix compatibility with OpenSSL 3
Updates and fixes for CI
Use more random connection IDs to fix possible issues with proxies

Major Changes in 0.15:
This is the first release in the new 0.15.x stable series. This release should
be ready for production use.

Minor updates to CI
Some compatibility with OpenSSL
Change the behavior of handle_dev_start ignoring multiple start requests
Ignore multiple calls to handle_dev_stop
Pick up newer spice-common to fix a buffer overflow issue

Major Changes in 0.14.91:
IMPORTANT
0.14.91 is the first release candidate for the stable 0.15.x series. While some
bugs might still be present, it should be reasonably stable. If you are looking
for stability for daily use, please keep using the latest 0.14.x release.

Support UNIX abstract sockets
Fix some potential thread race condition in RedClient
Many cleanups in the code
Improve migration test script
Update in protocol documentation
Improve Meson build
Removed CELT support
Update CI
Removed QXLWorker definition, it was deprecated 6 years ago
Fix some compatibility with MacOS
Fix some compatibility with Windows
Move the project to C++
Some fixes for SASL dealing with WebDAV
Fix minor Coverity reports
Add Doxygen support, manually built with "make doxy"
Support more mouse buttons (up to 16 buttons)
CVE-2020-14355 multiple buffer overflow vulnerabilities in QUIC decoding
code

Major Changes in 0.14.3:
Main changes are WebSocket and support for Windows.

Add support for WebSocket, this will allow to use spice-html5 without proxy
Support Windows, now Qemu Windows can be build enabling Spice
Fix some alignment problem
Converted some documentation to Asciidoc format to make easier to update,
updated some
Minor compatibility fix for PPC64EL and ARMHF
Minor fixes for big endian machines like MIPS
Avoid some crashes with some buggy guest drivers, simply ignore the invalid
request
Fix for old OpenSSL versions
Minor fix for Windows clients and brushes, fixed an issue with Photoshop
under Windows 7
Add ability to query video-codecs
Small use-after-free fix
Fix for debugging recording/replaying using QUIC images
Fix a regression where spice reported no monitors to the client
Fix DoS in spicevmc if WebDAV used
Updated and improved test migration script
Some minor fixes to smartcard support
Avoid possible disconnection using proxies using a in-flow keepalive
mechanism

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Markus Volk
2023-08-23 14:19:55 +02:00
committed by Khem Raj
parent 1b8c39fe98
commit 9320d33900
4 changed files with 10 additions and 230 deletions
@@ -1,59 +0,0 @@
From 0726ce6d6f52e135e28f15ca8392568c84909b1d Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 16 Jun 2018 16:21:39 -0700
Subject: [PATCH] Convert pthread_t to be numeric
typecast pthread_t to unsigned long
pthread_t is implemented as a struct point in musl and its as per standard
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Pending
server/red-channel.c | 5 +++--
server/red-client.c | 6 +++---
2 files changed, 6 insertions(+), 5 deletions(-)
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -204,7 +204,7 @@ red_channel_constructed(GObject *object)
{
RedChannel *self = RED_CHANNEL(object);
- red_channel_debug(self, "thread_id 0x%" G_GSIZE_MODIFIER "x", self->priv->thread_id);
+ red_channel_debug(self, "thread_id 0x%" G_GSIZE_MODIFIER "x", (unsigned long)self->priv->thread_id);
RedChannelClass *klass = RED_CHANNEL_GET_CLASS(self);
@@ -479,7 +479,8 @@ void red_channel_remove_client(RedChanne
"pthread_self (0x%" G_GSIZE_MODIFIER "x)."
"If one of the threads is != io-thread && != vcpu-thread, "
"this might be a BUG",
- channel->priv->thread_id, pthread_self());
+ (unsigned long)channel->priv->thread_id,
+ (unsigned long)pthread_self());
}
spice_return_if_fail(channel);
link = g_list_find(channel->priv->clients, rcc);
--- a/server/red-client.c
+++ b/server/red-client.c
@@ -180,7 +180,7 @@ void red_client_migrate(RedClient *clien
"pthread_self (0x%" G_GSIZE_MODIFIER "x)."
"If one of the threads is != io-thread && != vcpu-thread,"
" this might be a BUG",
- client->thread_id, pthread_self());
+ (unsigned long)client->thread_id, (unsigned long)pthread_self());
}
FOREACH_CHANNEL_CLIENT(client, rcc) {
if (red_channel_client_is_connected(rcc)) {
@@ -199,8 +199,8 @@ void red_client_destroy(RedClient *clien
"pthread_self (0x%" G_GSIZE_MODIFIER "x)."
"If one of the threads is != io-thread && != vcpu-thread,"
" this might be a BUG",
- client->thread_id,
- pthread_self());
+ (unsigned long)client->thread_id,
+ (unsigned long)pthread_self());
}
red_client_set_disconnecting(client);
FOREACH_CHANNEL_CLIENT(client, rcc) {
@@ -1,96 +0,0 @@
From a2af005b5d4a62839e56f42a43df793356e78f58 Mon Sep 17 00:00:00 2001
From: "Hongzhi.Song" <hongzhi.song@windriver.com>
Date: Tue, 4 Jun 2019 03:58:17 -0400
Subject: [PATCH] Fix compile errors on Linux 32bit system
There are folowing compile errors on Linux 32bit system:
red-channel.c:207:73: error: format '%x' expects argument of type
'unsigned int', but argument 7 has type 'long unsigned int' [-Werror=format=]
|207| red_channel_debug(self, "thread_id 0x%" G_GSIZE_MODIFIER "x",
~~~~~~~~~~~~~~~~~~~~~^
self->priv->thread_id);
~~~~~~~~~~~~~~~~~~~~~^
On 32bit system, #define G_GSIZE_MODIFIER "". But the type of
'self->priv->thread_id' is 'unsigned long int' which should match '%lx'
not '%x'.
So we should recovery the <0x%" G_GSIZE_MODIFIER "x"> to <0x%lx">.
And others files modification are similar to G_GSIZE_MODIFIER.
Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
---
Upstream-Status: Submitted [https://lists.freedesktop.org/archives/spice-devel/2019-June/049285.html]
server/red-channel.c | 6 +++---
server/red-client.c | 8 ++++----
server/red-replay-qxl.c | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/server/red-channel.c b/server/red-channel.c
index f81142d..6a03ec2 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -202,7 +202,7 @@ red_channel_constructed(GObject *object)
{
RedChannel *self = RED_CHANNEL(object);
- red_channel_debug(self, "thread_id 0x%" G_GSIZE_MODIFIER "x", (unsigned long)self->priv->thread_id);
+ red_channel_debug(self, "thread_id 0x%lx", (unsigned long)self->priv->thread_id);
RedChannelClass *klass = RED_CHANNEL_GET_CLASS(self);
@@ -473,8 +473,8 @@ void red_channel_remove_client(RedChannel *channel, RedChannelClient *rcc)
if (!pthread_equal(pthread_self(), channel->priv->thread_id)) {
red_channel_warning(channel,
- "channel->thread_id (0x%" G_GSIZE_MODIFIER "x) != "
- "pthread_self (0x%" G_GSIZE_MODIFIER "x)."
+ "channel->thread_id (0x%lx) != "
+ "pthread_self (0x%lx)."
"If one of the threads is != io-thread && != vcpu-thread, "
"this might be a BUG",
(unsigned long)channel->priv->thread_id,
diff --git a/server/red-client.c b/server/red-client.c
index 2b859cb..ff4da2a 100644
--- a/server/red-client.c
+++ b/server/red-client.c
@@ -174,8 +174,8 @@ void red_client_migrate(RedClient *client)
RedChannel *channel;
if (!pthread_equal(pthread_self(), client->thread_id)) {
- spice_warning("client->thread_id (0x%" G_GSIZE_MODIFIER "x) != "
- "pthread_self (0x%" G_GSIZE_MODIFIER "x)."
+ spice_warning("client->thread_id (0x%lx) != "
+ "pthread_self (0x%lx)."
"If one of the threads is != io-thread && != vcpu-thread,"
" this might be a BUG",
(unsigned long)client->thread_id, (unsigned long)pthread_self());
@@ -193,8 +193,8 @@ void red_client_destroy(RedClient *client)
RedChannelClient *rcc;
if (!pthread_equal(pthread_self(), client->thread_id)) {
- spice_warning("client->thread_id (0x%" G_GSIZE_MODIFIER "x) != "
- "pthread_self (0x%" G_GSIZE_MODIFIER "x)."
+ spice_warning("client->thread_id (0x%lx) != "
+ "pthread_self (0x%lx)."
"If one of the threads is != io-thread && != vcpu-thread,"
" this might be a BUG",
(unsigned long)client->thread_id,
diff --git a/server/red-replay-qxl.c b/server/red-replay-qxl.c
index 6d34818..0deb406 100644
--- a/server/red-replay-qxl.c
+++ b/server/red-replay-qxl.c
@@ -264,7 +264,7 @@ static replay_t read_binary(SpiceReplay *replay, const char *prefix, size_t *siz
exit(1);
}
if ((ret = inflate(&strm, Z_NO_FLUSH)) != Z_STREAM_END) {
- spice_error("inflate error %d (disc: %" G_GSSIZE_FORMAT ")",
+ spice_error("inflate error %d (disc: %li)",
ret, *size - strm.total_out);
if (ret == Z_DATA_ERROR) {
/* last operation may be wrong. since we do the recording
--
2.8.1
@@ -1,48 +0,0 @@
From 6ffd9db8e02e411bda2f421abf7951dab6cf0e38 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 5 Feb 2021 01:43:44 -0800
Subject: [PATCH] configure.ac: explicitly link to jpeg lib
Since oe has added lib jpeg to the depends, explicitly link to jpeg lib
to workaround build failure with autoconf 2.7
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
configure.ac | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/configure.ac b/configure.ac
index 1ce81f91..8bbb50de 100644
--- a/configure.ac
+++ b/configure.ac
@@ -191,24 +191,12 @@ AC_SUBST(SSL_CFLAGS)
AC_SUBST(SSL_LIBS)
AS_VAR_APPEND([SPICE_REQUIRES], [" openssl"])
-AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
- AC_MSG_CHECKING([for jpeglib.h])
- AC_TRY_CPP(
-[#include <stdio.h>
-#undef PACKAGE
-#undef VERSION
-#undef HAVE_STDLIB_H
-#include <jpeglib.h>],
- JPEG_LIBS='-ljpeg'
- AC_MSG_RESULT($jpeg_ok),
- AC_MSG_ERROR([jpeglib.h not found])),
- AC_MSG_ERROR([libjpeg not found]))
+JPEG_LIBS='-ljpeg'
AC_SUBST(JPEG_LIBS)
AC_CHECK_LIB(z, deflate, Z_LIBS='-lz', AC_MSG_ERROR([zlib not found]))
AC_SUBST(Z_LIBS)
-
AC_ARG_ENABLE([manual],
AS_HELP_STRING([--enable-manual=@<:@auto/yes/no@:>@],
[Build SPICE manual]),
--
2.29.2
@@ -13,49 +13,32 @@ architectures."
LICENSE = "LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
PV = "0.14.2+git${SRCPV}"
PV = "0.15.2"
SRCREV_spice = "7cbd70b931db76c69c89c2d9d5d704f67381a81b"
SRCREV_spice-common = "4fc4c2db36c7f07b906e9a326a9d3dc0ae6a2671"
SRCREV = "0c2c1413a8b387ea597a95b6c867470a7c56c8ab"
SRCREV_FORMAT = "spice_spice-common"
SRC_URI = " \
git://anongit.freedesktop.org/spice/spice;name=spice;branch=master \
git://anongit.freedesktop.org/spice/spice-common;destsuffix=git/subprojects/spice-common;name=spice-common;branch=master \
file://0001-Convert-pthread_t-to-be-numeric.patch \
file://0001-Fix-compile-errors-on-Linux-32bit-system.patch \
file://0001-configure.ac-explicitly-link-to-jpeg-lib.patch \
"
SRC_URI = "gitsm://gitlab.freedesktop.org/spice/spice;branch=master;protocol=https"
S = "${WORKDIR}/git"
CVE_STATUS[CVE-2018-10893] = "fixed-version: patched already, caused by inaccurate CPE in the NVD database."
inherit autotools gettext python3native python3-dir pkgconfig
inherit meson gettext python3native python3-dir pkgconfig
DEPENDS += "spice-protocol jpeg pixman alsa-lib glib-2.0 python3-pyparsing-native python3-six-native glib-2.0-native"
DEPENDS = "spice-protocol jpeg pixman alsa-lib glib-2.0 gdk-pixbuf lz4 python3-pyparsing-native python3-six-native glib-2.0-native zlib"
DEPENDS:append:class-nativesdk = " nativesdk-openssl"
export PYTHON="${STAGING_BINDIR_NATIVE}/python3-native/python3"
CFLAGS:append = " -Wno-error"
PACKAGECONFIG:class-native = ""
PACKAGECONFIG:class-nativesdk = ""
PACKAGECONFIG ?= "sasl"
PACKAGECONFIG ?= "sasl opus smartcard gstreamer"
PACKAGECONFIG[celt051] = "--enable-celt051,--disable-celt051,celt051"
PACKAGECONFIG[smartcard] = "--enable-smartcard,--disable-smartcard,libcacard,"
PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,"
PACKAGECONFIG[client] = "--enable-client,--disable-client,,"
PACKAGECONFIG[gui] = "--enable-gui,--disable-gui,,"
PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus,"
PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,,"
PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama,"
PACKAGECONFIG[gstreamer] = "-Dgstreamer=1.0,-Dgstreamer=no,gstreamer1.0 gstreamer1.0-plugins-base"
PACKAGECONFIG[smartcard] = "-Dsmartcard=enabled,-Dsmartcard=disabled,libcacard,libcacard"
PACKAGECONFIG[sasl] = "-Dsasl=true,-Dsasl=false,cyrus-sasl,"
PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus,"
COMPATIBLE_HOST = '(x86_64|i.86|aarch64).*-linux'
BBCLASSEXTEND = "native nativesdk"
EXTRA_OECONF:append:toolchain-clang = " --disable-werror"