[Qemu-devel] [PATCH for-4.0 v2] configure: bump spice-server required version to 0.12.6

Marc-André Lureau posted 1 patch 5 years, 4 months ago
Test asan passed
Test checkpatch passed
Test docker-quick@centos7 passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20181128142135.15900-1-marcandre.lureau@redhat.com
hw/display/qxl.h        |  2 --
include/ui/qemu-spice.h | 11 -----------
chardev/spice.c         | 12 ------------
hw/display/qxl.c        | 27 ---------------------------
ui/spice-core.c         |  8 --------
ui/spice-display.c      | 10 ----------
configure               |  4 ++--
7 files changed, 2 insertions(+), 72 deletions(-)
[Qemu-devel] [PATCH for-4.0 v2] configure: bump spice-server required version to 0.12.6
Posted by Marc-André Lureau 5 years, 4 months ago
Looking at chardev/spice.c code, I realize compilation was broken for
a while with spice-server < 0.12.3. I propose to bump required version
to 0.12.6, released 3y ago, instead of adding more #ifdef.

(this patch combines changes from an early version and some of
Frediano "[PATCH 2/2] spice: Bump required spice-server version to
0.12.6")

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/display/qxl.h        |  2 --
 include/ui/qemu-spice.h | 11 -----------
 chardev/spice.c         | 12 ------------
 hw/display/qxl.c        | 27 ---------------------------
 ui/spice-core.c         |  8 --------
 ui/spice-display.c      | 10 ----------
 configure               |  4 ++--
 7 files changed, 2 insertions(+), 72 deletions(-)

diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index 6f9d1f21fa..0cba6c1875 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -102,9 +102,7 @@ typedef struct PCIQXLDevice {
     QXLModes           *modes;
     uint32_t           rom_size;
     MemoryRegion       rom_bar;
-#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
     uint16_t           max_outputs;
-#endif
 
     /* vram pci bar */
     uint64_t           vram_size;
diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h
index c6d50eb87a..443220fe64 100644
--- a/include/ui/qemu-spice.h
+++ b/include/ui/qemu-spice.h
@@ -41,18 +41,7 @@ int qemu_spice_set_pw_expire(time_t expires);
 int qemu_spice_migrate_info(const char *hostname, int port, int tls_port,
                             const char *subject);
 
-#if !defined(SPICE_SERVER_VERSION) || (SPICE_SERVER_VERSION < 0xc06)
-#define SPICE_NEEDS_SET_MM_TIME 1
-#else
-#define SPICE_NEEDS_SET_MM_TIME 0
-#endif
-
-#if SPICE_SERVER_VERSION >= 0x000c02
 void qemu_spice_register_ports(void);
-#else
-static inline Chardev *qemu_chr_open_spice_port(const char *name)
-{ return NULL; }
-#endif
 
 #else  /* CONFIG_SPICE */
 
diff --git a/chardev/spice.c b/chardev/spice.c
index e66e3ad568..e0b44474f5 100644
--- a/chardev/spice.c
+++ b/chardev/spice.c
@@ -77,7 +77,6 @@ static int vmc_read(SpiceCharDeviceInstance *sin, uint8_t *buf, int len)
     return bytes;
 }
 
-#if SPICE_SERVER_VERSION >= 0x000c02
 static void vmc_event(SpiceCharDeviceInstance *sin, uint8_t event)
 {
     SpiceChardev *scd = container_of(sin, SpiceChardev, sin);
@@ -95,7 +94,6 @@ static void vmc_event(SpiceCharDeviceInstance *sin, uint8_t event)
     trace_spice_vmc_event(chr_event);
     qemu_chr_be_event(chr, chr_event);
 }
-#endif
 
 static void vmc_state(SpiceCharDeviceInstance *sin, int connected)
 {
@@ -119,12 +117,8 @@ static SpiceCharDeviceInterface vmc_interface = {
     .state              = vmc_state,
     .write              = vmc_write,
     .read               = vmc_read,
-#if SPICE_SERVER_VERSION >= 0x000c02
     .event              = vmc_event,
-#endif
-#if SPICE_SERVER_VERSION >= 0x000c06
     .flags              = SPICE_CHAR_DEVICE_NOTIFY_WRITABLE,
-#endif
 };
 
 
@@ -223,9 +217,7 @@ static void char_spice_finalize(Object *obj)
     }
 
     g_free((char *)s->sin.subtype);
-#if SPICE_SERVER_VERSION >= 0x000c02
     g_free((char *)s->sin.portname);
-#endif
 }
 
 static void spice_vmc_set_fe_open(struct Chardev *chr, int fe_open)
@@ -240,7 +232,6 @@ static void spice_vmc_set_fe_open(struct Chardev *chr, int fe_open)
 
 static void spice_port_set_fe_open(struct Chardev *chr, int fe_open)
 {
-#if SPICE_SERVER_VERSION >= 0x000c02
     SpiceChardev *s = SPICE_CHARDEV(chr);
 
     if (fe_open) {
@@ -248,7 +239,6 @@ static void spice_port_set_fe_open(struct Chardev *chr, int fe_open)
     } else {
         spice_server_port_event(&s->sin, SPICE_PORT_EVENT_CLOSED);
     }
-#endif
 }
 
 static void spice_chr_accept_input(struct Chardev *chr)
@@ -298,7 +288,6 @@ static void qemu_chr_open_spice_vmc(Chardev *chr,
     chr_open(chr, type);
 }
 
-#if SPICE_SERVER_VERSION >= 0x000c02
 static void qemu_chr_open_spice_port(Chardev *chr,
                                      ChardevBackend *backend,
                                      bool *be_opened,
@@ -331,7 +320,6 @@ void qemu_spice_register_ports(void)
         vmc_register_interface(s);
     }
 }
-#endif
 
 static void qemu_chr_parse_spice_vmc(QemuOpts *opts, ChardevBackend *backend,
                                      Error **errp)
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 9087db5dee..9387061ecb 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -276,11 +276,9 @@ static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay)
                     QXL_COOKIE_TYPE_POST_LOAD_MONITORS_CONFIG,
                     0));
     } else {
-#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
         if (qxl->max_outputs) {
             spice_qxl_set_max_monitors(&qxl->ssd.qxl, qxl->max_outputs);
         }
-#endif
         qxl->guest_monitors_config = qxl->ram->monitors_config;
         spice_qxl_monitors_config_async(&qxl->ssd.qxl,
                 qxl->ram->monitors_config,
@@ -544,22 +542,6 @@ static void interface_set_compression_level(QXLInstance *sin, int level)
     qxl_rom_set_dirty(qxl);
 }
 
-#if SPICE_NEEDS_SET_MM_TIME
-static void interface_set_mm_time(QXLInstance *sin, uint32_t mm_time)
-{
-    PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
-
-    if (!qemu_spice_display_is_running(&qxl->ssd)) {
-        return;
-    }
-
-    trace_qxl_interface_set_mm_time(qxl->id, mm_time);
-    qxl->shadow_rom.mm_clock = cpu_to_le32(mm_time);
-    qxl->rom->mm_clock = cpu_to_le32(mm_time);
-    qxl_rom_set_dirty(qxl);
-}
-#endif
-
 static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info)
 {
     PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
@@ -1106,12 +1088,10 @@ static int interface_client_monitors_config(QXLInstance *sin,
         return 1;
     }
 
-#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
     /* limit number of outputs based on setting limit */
     if (qxl->max_outputs && qxl->max_outputs <= max_outputs) {
         max_outputs = qxl->max_outputs;
     }
-#endif
 
     config_changed = qxl_rom_monitors_config_changed(rom,
                                                      monitors_config,
@@ -1160,9 +1140,6 @@ static const QXLInterface qxl_interface = {
 
     .attache_worker          = interface_attach_worker,
     .set_compression_level   = interface_set_compression_level,
-#if SPICE_NEEDS_SET_MM_TIME
-    .set_mm_time             = interface_set_mm_time,
-#endif
     .get_init_info           = interface_get_init_info,
 
     /* the callbacks below are called from spice server thread context */
@@ -1189,9 +1166,7 @@ static void qxl_enter_vga_mode(PCIQXLDevice *d)
         return;
     }
     trace_qxl_enter_vga_mode(d->id);
-#if SPICE_SERVER_VERSION >= 0x000c03 /* release 0.12.3 */
     spice_qxl_driver_unload(&d->ssd.qxl);
-#endif
     graphic_console_set_hwops(d->ssd.dcl.con, d->vga.hw_ops, &d->vga);
     update_displaychangelistener(&d->ssd.dcl, GUI_REFRESH_INTERVAL_DEFAULT);
     qemu_spice_create_host_primary(&d->ssd);
@@ -2443,9 +2418,7 @@ static Property qxl_properties[] = {
         DEFINE_PROP_UINT32("vram64_size_mb", PCIQXLDevice, vram_size_mb, -1),
         DEFINE_PROP_UINT32("vgamem_mb", PCIQXLDevice, vgamem_size_mb, 16),
         DEFINE_PROP_INT32("surfaces", PCIQXLDevice, ssd.num_surfaces, 1024),
-#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
         DEFINE_PROP_UINT16("max_outputs", PCIQXLDevice, max_outputs, 0),
-#endif
         DEFINE_PROP_UINT32("xres", PCIQXLDevice, xres, 0),
         DEFINE_PROP_UINT32("yres", PCIQXLDevice, yres, 0),
         DEFINE_PROP_BOOL("global-vmstate", PCIQXLDevice, vga.global_vmstate, false),
diff --git a/ui/spice-core.c b/ui/spice-core.c
index ebaae24643..fc850b3f50 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -745,13 +745,7 @@ void qemu_spice_init(void)
     }
 
     if (qemu_opt_get_bool(opts, "disable-agent-file-xfer", 0)) {
-#if SPICE_SERVER_VERSION >= 0x000c04
         spice_server_set_agent_file_xfer(spice_server, false);
-#else
-        error_report("this qemu build does not support the "
-                     "\"disable-agent-file-xfer\" option");
-        exit(1);
-#endif
     }
 
     compression = SPICE_IMAGE_COMPRESS_AUTO_GLZ;
@@ -817,9 +811,7 @@ void qemu_spice_init(void)
     g_free(x509_cert_file);
     g_free(x509_cacert_file);
 
-#if SPICE_SERVER_VERSION >= 0x000c02
     qemu_spice_register_ports();
-#endif
 
 #ifdef HAVE_SPICE_GL
     if (qemu_opt_get_bool(opts, "gl", 0)) {
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 52f8cb5ae1..15a3796d58 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -509,13 +509,6 @@ static void interface_set_compression_level(QXLInstance *sin, int level)
     /* nothing to do */
 }
 
-#if SPICE_NEEDS_SET_MM_TIME
-static void interface_set_mm_time(QXLInstance *sin, uint32_t mm_time)
-{
-    /* nothing to do */
-}
-#endif
-
 static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info)
 {
     SimpleSpiceDisplay *ssd = container_of(sin, SimpleSpiceDisplay, qxl);
@@ -711,9 +704,6 @@ static const QXLInterface dpy_interface = {
 
     .attache_worker          = interface_attach_worker,
     .set_compression_level   = interface_set_compression_level,
-#if SPICE_NEEDS_SET_MM_TIME
-    .set_mm_time             = interface_set_mm_time,
-#endif
     .get_init_info           = interface_get_init_info,
 
     /* the callbacks below are called from spice server thread context */
diff --git a/configure b/configure
index 0a3c6a72c3..ebdfece10a 100755
--- a/configure
+++ b/configure
@@ -4563,7 +4563,7 @@ int main(void) { spice_server_new(); return 0; }
 EOF
   spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
   spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
-  if $pkg_config --atleast-version=0.12.0 spice-server && \
+  if $pkg_config --atleast-version=0.12.6 spice-server && \
      $pkg_config --atleast-version=0.12.3 spice-protocol && \
      compile_prog "$spice_cflags" "$spice_libs" ; then
     spice="yes"
@@ -4574,7 +4574,7 @@ EOF
   else
     if test "$spice" = "yes" ; then
       feature_not_found "spice" \
-          "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
+          "Install spice-server(>=0.12.6) and spice-protocol(>=0.12.3) devel"
     fi
     spice="no"
   fi
-- 
2.20.0.rc1


Re: [Qemu-devel] [PATCH for-4.0 v2] configure: bump spice-server required version to 0.12.6
Posted by Daniel P. Berrangé 5 years, 4 months ago
On Wed, Nov 28, 2018 at 06:21:35PM +0400, Marc-André Lureau wrote:
> Looking at chardev/spice.c code, I realize compilation was broken for
> a while with spice-server < 0.12.3. I propose to bump required version
> to 0.12.6, released 3y ago, instead of adding more #ifdef.

As mentioned last time this patch was posted[1], any changes in the
min required versions should follow our supported build platforms
support statement:

  https://qemu.weilnetz.de/doc/qemu-doc.html#Supported-build-platforms

Preferrably the commit message should list the version in each of the
main distros, such as in a0722409bcb980ecdab8330d4c716a73c9fcb489

At a glance it looks like Debian Jessie is likely to be the determining
vote with 0.12.5 as its newest version.

Regards,
Daniel

[1] https://lists.gnu.org/archive/html/qemu-devel/2018-08/msg00905.html
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH for-4.0 v2] configure: bump spice-server required version to 0.12.6
Posted by Marc-André Lureau 5 years, 4 months ago
Hi

On Wed, Nov 28, 2018 at 6:33 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Wed, Nov 28, 2018 at 06:21:35PM +0400, Marc-André Lureau wrote:
> > Looking at chardev/spice.c code, I realize compilation was broken for
> > a while with spice-server < 0.12.3. I propose to bump required version
> > to 0.12.6, released 3y ago, instead of adding more #ifdef.
>
> As mentioned last time this patch was posted[1], any changes in the
> min required versions should follow our supported build platforms
> support statement:

Sorry, I totally forgot that.

>
>   https://qemu.weilnetz.de/doc/qemu-doc.html#Supported-build-platforms
>
> Preferrably the commit message should list the version in each of the
> main distros, such as in a0722409bcb980ecdab8330d4c716a73c9fcb489
>
> At a glance it looks like Debian Jessie is likely to be the determining
> vote with 0.12.5 as its newest version.

https://repology.org/metapackage/spice/versions

Debian Oldstable
oldstable/main spice 0.12.5

https://wiki.debian.org/DebianReleases

~June 6th 2020 (LTS)

But the current stable, Stretch, was released on June 17th 2017.

So we are stuck with spice server 0.12.5 until +2y, June 17th 2019 ?


>
> Regards,
> Daniel
>
> [1] https://lists.gnu.org/archive/html/qemu-devel/2018-08/msg00905.html
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH for-4.0 v2] configure: bump spice-server required version to 0.12.6
Posted by Daniel P. Berrangé 5 years, 4 months ago
On Wed, Nov 28, 2018 at 06:46:37PM +0400, Marc-André Lureau wrote:
> Hi
> 
> On Wed, Nov 28, 2018 at 6:33 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Wed, Nov 28, 2018 at 06:21:35PM +0400, Marc-André Lureau wrote:
> > > Looking at chardev/spice.c code, I realize compilation was broken for
> > > a while with spice-server < 0.12.3. I propose to bump required version
> > > to 0.12.6, released 3y ago, instead of adding more #ifdef.
> >
> > As mentioned last time this patch was posted[1], any changes in the
> > min required versions should follow our supported build platforms
> > support statement:
> 
> Sorry, I totally forgot that.
> 
> >
> >   https://qemu.weilnetz.de/doc/qemu-doc.html#Supported-build-platforms
> >
> > Preferrably the commit message should list the version in each of the
> > main distros, such as in a0722409bcb980ecdab8330d4c716a73c9fcb489
> >
> > At a glance it looks like Debian Jessie is likely to be the determining
> > vote with 0.12.5 as its newest version.
> 
> https://repology.org/metapackage/spice/versions
> 
> Debian Oldstable
> oldstable/main spice 0.12.5
> 
> https://wiki.debian.org/DebianReleases
> 
> ~June 6th 2020 (LTS)
> 
> But the current stable, Stretch, was released on June 17th 2017.
> 
> So we are stuck with spice server 0.12.5 until +2y, June 17th 2019 ?

Yep, but that means one more dev cycle - 4.0

We're free to drop Jessie once QEMU 4.1 opens for development at
end of April / early May.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH for-4.0 v2] configure: bump spice-server required version to 0.12.6
Posted by Hoffmann, Gerd 5 years, 4 months ago
On Wed, Nov 28, 2018 at 02:54:09PM +0000, Daniel P. Berrangé wrote:
> On Wed, Nov 28, 2018 at 06:46:37PM +0400, Marc-André Lureau wrote:
> > Hi
> > 
> > On Wed, Nov 28, 2018 at 6:33 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> > >
> > > On Wed, Nov 28, 2018 at 06:21:35PM +0400, Marc-André Lureau wrote:
> > > > Looking at chardev/spice.c code, I realize compilation was broken for
> > > > a while with spice-server < 0.12.3. I propose to bump required version
> > > > to 0.12.6, released 3y ago, instead of adding more #ifdef.
> > >
> > > As mentioned last time this patch was posted[1], any changes in the
> > > min required versions should follow our supported build platforms
> > > support statement:
> > 
> > Sorry, I totally forgot that.
> > 
> > >
> > >   https://qemu.weilnetz.de/doc/qemu-doc.html#Supported-build-platforms
> > >
> > > Preferrably the commit message should list the version in each of the
> > > main distros, such as in a0722409bcb980ecdab8330d4c716a73c9fcb489
> > >
> > > At a glance it looks like Debian Jessie is likely to be the determining
> > > vote with 0.12.5 as its newest version.
> > 
> > https://repology.org/metapackage/spice/versions
> > 
> > Debian Oldstable
> > oldstable/main spice 0.12.5
> > 
> > https://wiki.debian.org/DebianReleases
> > 
> > ~June 6th 2020 (LTS)
> > 
> > But the current stable, Stretch, was released on June 17th 2017.
> > 
> > So we are stuck with spice server 0.12.5 until +2y, June 17th 2019 ?
> 
> Yep, but that means one more dev cycle - 4.0
> 
> We're free to drop Jessie once QEMU 4.1 opens for development at
> end of April / early May.

Ok, lets just put the patch on hold then.  I don't think it makes that
much sense to jump to 0.12.5 now and 0.12.6 next year.

cheers,
  Gerd