Here is an update to QEMU 7.2.0.

https://wiki.qemu.org/ChangeLog/7.2


Index: Makefile
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.227
diff -u -p -u -p -r1.227 Makefile
--- Makefile    7 Nov 2022 17:14:39 -0000       1.227
+++ Makefile    14 Dec 2022 06:28:15 -0000
@@ -4,10 +4,8 @@ DPB_PROPERTIES=        parallel
 COMMENT-main=  multi system emulator
 COMMENT-ga=    QEMU guest agent
 
-VERSION=       7.1.0
+VERSION=       7.2.0
 DISTNAME=      qemu-${VERSION}
-REVISION-main= 0
-REVISION-ga=   0
 CATEGORIES=    emulators
 MASTER_SITES=  https://download.qemu.org/
 EXTRACT_SUFX=  .tar.xz
Index: distinfo
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/distinfo,v
retrieving revision 1.67
diff -u -p -u -p -r1.67 distinfo
--- distinfo    13 Sep 2022 20:11:35 -0000      1.67
+++ distinfo    14 Dec 2022 22:39:00 -0000
@@ -1,2 +1,2 @@
-SHA256 (qemu-7.1.0.tar.xz) = oGNOU2ve1XzzjsinUa2xJLicd2/ghG8hq2xnKPHLu+Y=
-SIZE (qemu-7.1.0.tar.xz) = 121833004
+SHA256 (qemu-7.2.0.tar.xz) = W0nOJod0Ta1JSukKiYxSIEo0BuhNBySCoeG+hU7rIVc=
+SIZE (qemu-7.2.0.tar.xz) = 122408576
Index: patches/patch-audio_audio_c
===================================================================
RCS file: patches/patch-audio_audio_c
diff -N patches/patch-audio_audio_c
--- patches/patch-audio_audio_c 24 Apr 2022 10:20:14 -0000      1.13
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-sndio module
-
-Index: audio/audio.c
---- audio/audio.c.orig
-+++ audio/audio.c
-@@ -2025,6 +2025,7 @@ void audio_create_pdos(Audiodev *dev)
-         CASE(OSS, oss, Oss);
-         CASE(PA, pa, Pa);
-         CASE(SDL, sdl, Sdl);
-+        CASE(SNDIO, sndio, );
-         CASE(SPICE, spice, );
-         CASE(WAV, wav, );
- 
Index: patches/patch-audio_audio_template_h
===================================================================
RCS file: patches/patch-audio_audio_template_h
diff -N patches/patch-audio_audio_template_h
--- patches/patch-audio_audio_template_h        24 Apr 2022 10:20:14 -0000      
1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-sndio module
-
-Index: audio/audio_template.h
---- audio/audio_template.h.orig
-+++ audio/audio_template.h
-@@ -336,6 +336,8 @@ AudiodevPerDirectionOptions *glue(audio_get_pdo_, TYPE
-         return qapi_AudiodevPaPerDirectionOptions_base(dev->u.pa.TYPE);
-     case AUDIODEV_DRIVER_SDL:
-         return qapi_AudiodevSdlPerDirectionOptions_base(dev->u.sdl.TYPE);
-+    case AUDIODEV_DRIVER_SNDIO:
-+        return dev->u.sndio.TYPE;
-     case AUDIODEV_DRIVER_SPICE:
-         return dev->u.spice.TYPE;
-     case AUDIODEV_DRIVER_WAV:
Index: patches/patch-audio_meson_build
===================================================================
RCS file: patches/patch-audio_meson_build
diff -N patches/patch-audio_meson_build
--- patches/patch-audio_meson_build     11 Mar 2022 18:59:40 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-sndio module
-
-Index: audio/meson.build
---- audio/meson.build.orig
-+++ audio/meson.build
-@@ -17,6 +17,7 @@ foreach m : [
-   ['pa', pulse, files('paaudio.c')],
-   ['sdl', sdl, files('sdlaudio.c')],
-   ['jack', jack, files('jackaudio.c')],
-+  ['sndio', sndio, files('sndioaudio.c')],
-   ['spice', spice, files('spiceaudio.c')]
- ]
-   if m[1].found()
Index: patches/patch-audio_sndioaudio_c
===================================================================
RCS file: patches/patch-audio_sndioaudio_c
diff -N patches/patch-audio_sndioaudio_c
--- patches/patch-audio_sndioaudio_c    13 Sep 2022 20:11:35 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,572 +0,0 @@
-sndio module
-
-Index: audio/sndioaudio.c
---- audio/sndioaudio.c.orig
-+++ audio/sndioaudio.c
-@@ -0,0 +1,566 @@
-+/*
-+ * SPDX-License-Identifier: ISC
-+ *
-+ * Copyright (c) 2019 Alexandre Ratchov <[email protected]>
-+ */
-+
-+/*
-+ * TODO :
-+ *
-+ * Use a single device and open it in full-duplex rather than
-+ * opening it twice (once for playback once for recording).
-+ *
-+ * This is the only way to ensure that playback doesn't drift with respect
-+ * to recording, which is what guest systems expect.
-+ */
-+
-+#include <poll.h>
-+#include <sndio.h>
-+#include "qemu/osdep.h"
-+#include "qemu/help-texts.h"
-+#include "qemu/main-loop.h"
-+#include "audio.h"
-+#include "trace.h"
-+
-+#define AUDIO_CAP "sndio"
-+#include "audio_int.h"
-+
-+/* default latency in microseconds if no option is set */
-+#define SNDIO_LATENCY_US   50000
-+
-+typedef struct SndioVoice {
-+    union {
-+        HWVoiceOut out;
-+        HWVoiceIn in;
-+    } hw;
-+    struct sio_par par;
-+    struct sio_hdl *hdl;
-+    struct pollfd *pfds;
-+    struct pollindex {
-+        struct SndioVoice *self;
-+        int index;
-+    } *pindexes;
-+    unsigned char *buf;
-+    size_t buf_size;
-+    size_t sndio_pos;
-+    size_t qemu_pos;
-+    unsigned int mode;
-+    unsigned int nfds;
-+    bool enabled;
-+} SndioVoice;
-+
-+typedef struct SndioConf {
-+    const char *devname;
-+    unsigned int latency;
-+} SndioConf;
-+
-+/* needed for forward reference */
-+static void sndio_poll_in(void *arg);
-+static void sndio_poll_out(void *arg);
-+
-+/*
-+ * stop polling descriptors
-+ */
-+static void sndio_poll_clear(SndioVoice *self)
-+{
-+    struct pollfd *pfd;
-+    int i;
-+
-+    for (i = 0; i < self->nfds; i++) {
-+        pfd = &self->pfds[i];
-+        qemu_set_fd_handler(pfd->fd, NULL, NULL, NULL);
-+    }
-+
-+    self->nfds = 0;
-+}
-+
-+/*
-+ * write data to the device until it blocks or
-+ * all of our buffered data is written
-+ */
-+static void sndio_write(SndioVoice *self)
-+{
-+    size_t todo, n;
-+
-+    todo = self->qemu_pos - self->sndio_pos;
-+
-+    /*
-+     * transfer data to device, until it blocks
-+     */
-+    while (todo > 0) {
-+        n = sio_write(self->hdl, self->buf + self->sndio_pos, todo);
-+        if (n == 0) {
-+            break;
-+        }
-+        self->sndio_pos += n;
-+        todo -= n;
-+    }
-+
-+    if (self->sndio_pos == self->buf_size) {
-+        /*
-+         * we complete the block
-+         */
-+        self->sndio_pos = 0;
-+        self->qemu_pos = 0;
-+    }
-+}
-+
-+/*
-+ * read data from the device until it blocks or
-+ * there no room any longer
-+ */
-+static void sndio_read(SndioVoice *self)
-+{
-+    size_t todo, n;
-+
-+    todo = self->buf_size - self->sndio_pos;
-+
-+    /*
-+     * transfer data from the device, until it blocks
-+     */
-+    while (todo > 0) {
-+        n = sio_read(self->hdl, self->buf + self->sndio_pos, todo);
-+        if (n == 0) {
-+            break;
-+        }
-+        self->sndio_pos += n;
-+        todo -= n;
-+    }
-+}
-+
-+/*
-+ * Set handlers for all descriptors libsndio needs to
-+ * poll
-+ */
-+static void sndio_poll_wait(SndioVoice *self)
-+{
-+    struct pollfd *pfd;
-+    int events, i;
-+
-+    events = 0;
-+    if (self->mode == SIO_PLAY) {
-+        if (self->sndio_pos < self->qemu_pos) {
-+            events |= POLLOUT;
-+        }
-+    } else {
-+        if (self->sndio_pos < self->buf_size) {
-+            events |= POLLIN;
-+        }
-+    }
-+
-+    /*
-+     * fill the given array of descriptors with the events sndio
-+     * wants, they are different from our 'event' variable because
-+     * sndio may use descriptors internally.
-+     */
-+    self->nfds = sio_pollfd(self->hdl, self->pfds, events);
-+
-+    for (i = 0; i < self->nfds; i++) {
-+        pfd = &self->pfds[i];
-+        if (pfd->fd < 0) {
-+            continue;
-+        }
-+        qemu_set_fd_handler(pfd->fd,
-+            (pfd->events & POLLIN) ? sndio_poll_in : NULL,
-+            (pfd->events & POLLOUT) ? sndio_poll_out : NULL,
-+            &self->pindexes[i]);
-+        pfd->revents = 0;
-+    }
-+}
-+
-+/*
-+ * call-back called when one of the descriptors
-+ * became readable or writable
-+ */
-+static void sndio_poll_event(SndioVoice *self, int index, int event)
-+{
-+    int revents;
-+
-+    /*
-+     * ensure we're not called twice this cycle
-+     */
-+    sndio_poll_clear(self);
-+
-+    /*
-+     * make self->pfds[] look as we're returning from poll syscal,
-+     * this is how sio_revents expects events to be.
-+     */
-+    self->pfds[index].revents = event;
-+
-+    /*
-+     * tell sndio to handle events and return whether we can read or
-+     * write without blocking.
-+     */
-+    revents = sio_revents(self->hdl, self->pfds);
-+    if (self->mode == SIO_PLAY) {
-+        if (revents & POLLOUT) {
-+            sndio_write(self);
-+        }
-+
-+        if (self->qemu_pos < self->buf_size) {
-+            audio_run(self->hw.out.s, "sndio_out");
-+        }
-+    } else {
-+        if (revents & POLLIN) {
-+            sndio_read(self);
-+        }
-+
-+        if (self->qemu_pos < self->sndio_pos) {
-+            audio_run(self->hw.in.s, "sndio_in");
-+        }
-+    }
-+
-+    /*
-+     * audio_run() may have changed state
-+     */
-+    if (self->enabled) {
-+        sndio_poll_wait(self);
-+    }
-+}
-+
-+/*
-+ * return the upper limit of the amount of free play buffer space
-+ */
-+static size_t sndio_buffer_get_free(HWVoiceOut *hw)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    return self->buf_size - self->qemu_pos;
-+}
-+
-+/*
-+ * return a buffer where data to play can be stored,
-+ * its size is stored in the location pointed by the size argument.
-+ */
-+static void *sndio_get_buffer_out(HWVoiceOut *hw, size_t *size)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    *size = self->buf_size - self->qemu_pos;
-+    return self->buf + self->qemu_pos;
-+}
-+
-+/*
-+ * return a buffer where data to play can be stored
-+ */
-+static size_t sndio_put_buffer_out(HWVoiceOut *hw, void *buf, size_t size)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    self->qemu_pos += size;
-+    sndio_poll_wait(self);
-+    return size;
-+}
-+
-+/*
-+ * return a buffer from where recorded data is available,
-+ * its size is stored in the location pointed by the size argument.
-+ * it may not exceed the initial value of "*size".
-+ */
-+static void *sndio_get_buffer_in(HWVoiceIn *hw, size_t *size)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+    size_t todo, max_todo;
-+
-+    /*
-+     * unlike the get_buffer_out() method, get_buffer_in()
-+     * must return a buffer of at most the given size, see audio.c
-+     */
-+    max_todo = *size;
-+
-+    todo = self->sndio_pos - self->qemu_pos;
-+    if (todo > max_todo) {
-+        todo = max_todo;
-+    }
-+
-+    *size = todo;
-+    return self->buf + self->qemu_pos;
-+}
-+
-+/*
-+ * discard the given amount of recorded data
-+ */
-+static void sndio_put_buffer_in(HWVoiceIn *hw, void *buf, size_t size)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    self->qemu_pos += size;
-+    if (self->qemu_pos == self->buf_size) {
-+        self->qemu_pos = 0;
-+        self->sndio_pos = 0;
-+    }
-+    sndio_poll_wait(self);
-+}
-+
-+/*
-+ * call-back called when one of our descriptors becomes writable
-+ */
-+static void sndio_poll_out(void *arg)
-+{
-+    struct pollindex *pindex = (struct pollindex *) arg;
-+
-+    sndio_poll_event(pindex->self, pindex->index, POLLOUT);
-+}
-+
-+/*
-+ * call-back called when one of our descriptors becomes readable
-+ */
-+static void sndio_poll_in(void *arg)
-+{
-+    struct pollindex *pindex = (struct pollindex *) arg;
-+
-+    sndio_poll_event(pindex->self, pindex->index, POLLIN);
-+}
-+
-+static void sndio_fini(SndioVoice *self)
-+{
-+    if (self->hdl) {
-+        sio_close(self->hdl);
-+        self->hdl = NULL;
-+    }
-+
-+    g_free(self->pfds);
-+    g_free(self->pindexes);
-+    g_free(self->buf);
-+}
-+
-+static int sndio_init(SndioVoice *self,
-+                      struct audsettings *as, int mode, Audiodev *dev)
-+{
-+    AudiodevSndioOptions *opts = &dev->u.sndio;
-+    unsigned long long latency;
-+    const char *dev_name;
-+    struct sio_par req;
-+    unsigned int nch;
-+    int i, nfds;
-+
-+    dev_name = opts->has_dev ? opts->dev : SIO_DEVANY;
-+    latency = opts->has_latency ? opts->latency : SNDIO_LATENCY_US;
-+
-+    /* open the device in non-blocking mode */
-+    self->hdl = sio_open(dev_name, mode, 1);
-+    if (self->hdl == NULL) {
-+        dolog("failed to open device\n");
-+        return -1;
-+    }
-+
-+    self->mode = mode;
-+
-+    sio_initpar(&req);
-+
-+    switch (as->fmt) {
-+    case AUDIO_FORMAT_S8:
-+        req.bits = 8;
-+        req.sig = 1;
-+        break;
-+    case AUDIO_FORMAT_U8:
-+        req.bits = 8;
-+        req.sig = 0;
-+        break;
-+    case AUDIO_FORMAT_S16:
-+        req.bits = 16;
-+        req.sig = 1;
-+        break;
-+    case AUDIO_FORMAT_U16:
-+        req.bits = 16;
-+        req.sig = 0;
-+        break;
-+    case AUDIO_FORMAT_S32:
-+        req.bits = 32;
-+        req.sig = 1;
-+        break;
-+    case AUDIO_FORMAT_U32:
-+        req.bits = 32;
-+        req.sig = 0;
-+        break;
-+    default:
-+        dolog("unknown audio sample format\n");
-+        return -1;
-+    }
-+
-+    if (req.bits > 8) {
-+        req.le = as->endianness ? 0 : 1;
-+    }
-+
-+    req.rate = as->freq;
-+    if (mode == SIO_PLAY) {
-+        req.pchan = as->nchannels;
-+    } else {
-+        req.rchan = as->nchannels;
-+    }
-+
-+    /* set on-device buffer size */
-+    req.appbufsz = req.rate * latency / 1000000;
-+
-+    if (!sio_setpar(self->hdl, &req)) {
-+        dolog("failed set audio params\n");
-+        goto fail;
-+    }
-+
-+    if (!sio_getpar(self->hdl, &self->par)) {
-+        dolog("failed get audio params\n");
-+        goto fail;
-+    }
-+
-+    nch = (mode == SIO_PLAY) ? self->par.pchan : self->par.rchan;
-+
-+    /*
-+     * With the default setup, sndio supports any combination of parameters
-+     * so these checks are mostly to catch configuration errors.
-+     */
-+    if (self->par.bits != req.bits || self->par.bps != req.bits / 8 ||
-+        self->par.sig != req.sig || (req.bits > 8 && self->par.le != req.le) 
||
-+        self->par.rate != as->freq || nch != as->nchannels) {
-+        dolog("unsupported audio params\n");
-+        goto fail;
-+    }
-+
-+    /*
-+     * we use one block as buffer size; this is how
-+     * transfers get well aligned
-+     */
-+    self->buf_size = self->par.round * self->par.bps * nch;
-+
-+    self->buf = g_malloc(self->buf_size);
-+    if (self->buf == NULL) {
-+        dolog("failed to allocate audio buffer\n");
-+        goto fail;
-+    }
-+
-+    nfds = sio_nfds(self->hdl);
-+
-+    self->pfds = g_malloc_n(nfds, sizeof(struct pollfd));
-+    if (self->pfds == NULL) {
-+        dolog("failed to allocate pollfd structures\n");
-+        goto fail;
-+    }
-+
-+    self->pindexes = g_malloc_n(nfds, sizeof(struct pollindex));
-+    if (self->pindexes == NULL) {
-+        dolog("failed to allocate pollindex structures\n");
-+        goto fail;
-+    }
-+
-+    for (i = 0; i < nfds; i++) {
-+        self->pindexes[i].self = self;
-+        self->pindexes[i].index = i;
-+    }
-+
-+    return 0;
-+fail:
-+    sndio_fini(self);
-+    return -1;
-+}
-+
-+static void sndio_enable(SndioVoice *self, bool enable)
-+{
-+    if (enable) {
-+        sio_start(self->hdl);
-+        self->enabled = true;
-+        sndio_poll_wait(self);
-+    } else {
-+        self->enabled = false;
-+        sndio_poll_clear(self);
-+        sio_stop(self->hdl);
-+    }
-+}
-+
-+static void sndio_enable_out(HWVoiceOut *hw, bool enable)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    sndio_enable(self, enable);
-+}
-+
-+static void sndio_enable_in(HWVoiceIn *hw, bool enable)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    sndio_enable(self, enable);
-+}
-+
-+static int sndio_init_out(HWVoiceOut *hw, struct audsettings *as, void 
*opaque)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    if (sndio_init(self, as, SIO_PLAY, opaque) == -1) {
-+        return -1;
-+    }
-+
-+    audio_pcm_init_info(&hw->info, as);
-+    hw->samples = self->par.round;
-+    return 0;
-+}
-+
-+static int sndio_init_in(HWVoiceIn *hw, struct audsettings *as, void *opaque)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    if (sndio_init(self, as, SIO_REC, opaque) == -1) {
-+        return -1;
-+    }
-+
-+    audio_pcm_init_info(&hw->info, as);
-+    hw->samples = self->par.round;
-+    return 0;
-+}
-+
-+static void sndio_fini_out(HWVoiceOut *hw)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    sndio_fini(self);
-+}
-+
-+static void sndio_fini_in(HWVoiceIn *hw)
-+{
-+    SndioVoice *self = (SndioVoice *) hw;
-+
-+    sndio_fini(self);
-+}
-+
-+static void *sndio_audio_init(Audiodev *dev)
-+{
-+    assert(dev->driver == AUDIODEV_DRIVER_SNDIO);
-+    return dev;
-+}
-+
-+static void sndio_audio_fini(void *opaque)
-+{
-+}
-+
-+static struct audio_pcm_ops sndio_pcm_ops = {
-+    .init_out       = sndio_init_out,
-+    .fini_out       = sndio_fini_out,
-+    .enable_out     = sndio_enable_out,
-+    .write          = audio_generic_write,
-+    .buffer_get_free = sndio_buffer_get_free,
-+    .get_buffer_out = sndio_get_buffer_out,
-+    .put_buffer_out = sndio_put_buffer_out,
-+    .init_in        = sndio_init_in,
-+    .fini_in        = sndio_fini_in,
-+    .read           = audio_generic_read,
-+    .enable_in      = sndio_enable_in,
-+    .get_buffer_in  = sndio_get_buffer_in,
-+    .put_buffer_in  = sndio_put_buffer_in,
-+};
-+
-+static struct audio_driver sndio_audio_driver = {
-+    .name           = "sndio",
-+    .descr          = "sndio https://sndio.org";,
-+    .init           = sndio_audio_init,
-+    .fini           = sndio_audio_fini,
-+    .pcm_ops        = &sndio_pcm_ops,
-+    .can_be_default = 1,
-+    .max_voices_out = INT_MAX,
-+    .max_voices_in  = INT_MAX,
-+    .voice_size_out = sizeof(SndioVoice),
-+    .voice_size_in  = sizeof(SndioVoice)
-+};
-+
-+static void register_audio_sndio(void)
-+{
-+    audio_driver_register(&sndio_audio_driver);
-+}
-+
-+type_init(register_audio_sndio);
Index: patches/patch-configure
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/patches/patch-configure,v
retrieving revision 1.74
diff -u -p -u -p -r1.74 patch-configure
--- patches/patch-configure     13 Sep 2022 20:11:35 -0000      1.74
+++ patches/patch-configure     10 Nov 2022 05:28:23 -0000
@@ -6,15 +6,15 @@ Revert..
 Index: configure
 --- configure.orig
 +++ configure
-@@ -79,6 +79,7 @@ TMPO="${TMPDIR1}/${TMPB}.o"
- TMPCXX="${TMPDIR1}/${TMPB}.cxx"
+@@ -77,6 +77,7 @@ TMPC="${TMPDIR1}/${TMPB}.c"
+ TMPO="${TMPDIR1}/${TMPB}.o"
  TMPM="${TMPDIR1}/${TMPB}.m"
  TMPE="${TMPDIR1}/${TMPB}.exe"
 +TMPTXT="${TMPDIR1}/${TMPB}.txt"
  
  rm -f config.log
  
-@@ -1354,7 +1355,6 @@ if test "$static" = "yes" ; then
+@@ -1314,7 +1315,6 @@ if test "$static" = "yes" ; then
      plugins="no"
    fi
  fi
@@ -22,7 +22,7 @@ Index: configure
  
  cat > $TMPC << EOF
  
-@@ -1511,6 +1511,56 @@ if ! has "$pkg_config_exe"; then
+@@ -1459,6 +1459,56 @@ if ! has "$pkg_config_exe"; then
  fi
  
  ##########################################
@@ -79,7 +79,7 @@ Index: configure
  # glib support probe
  
  # When bumping glib_req_ver, please check also whether we should increase
-@@ -2481,6 +2531,15 @@ fi
+@@ -2390,6 +2440,15 @@ fi
  
  if test "$plugins" = "yes" ; then
      echo "CONFIG_PLUGIN=y" >> $config_host_mak
Index: patches/patch-meson_build
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/patches/patch-meson_build,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 patch-meson_build
--- patches/patch-meson_build   13 Sep 2022 20:11:35 -0000      1.7
+++ patches/patch-meson_build   4 Dec 2022 01:09:10 -0000
@@ -1,4 +1,3 @@
-- sndio module
 - localstatedir does not belong under prefix
 - Remove hardcoding of optimization
 
@@ -9,41 +8,12 @@ Index: meson.build
    .allowed()
  have_ga = get_option('guest_agent') \
    .disable_auto_if(not have_system and not have_tools) \
--  .require(targetos in ['sunos', 'linux', 'windows'],
-+  .require(targetos in ['sunos', 'linux', 'openbsd', 'windows'],
+-  .require(targetos in ['sunos', 'linux', 'windows', 'freebsd'],
++  .require(targetos in ['sunos', 'linux', 'windows', 'freebsd', 'openbsd'],
             error_message: 'unsupported OS for QEMU guest agent') \
    .allowed()
  have_block = have_system or have_tools
-@@ -681,6 +681,11 @@ if not get_option('jack').auto() or have_system
-   jack = dependency('jack', required: get_option('jack'),
-                     method: 'pkg-config', kwargs: static_kwargs)
- endif
-+sndio = not_found
-+if not get_option('sndio').auto() or have_system
-+  sndio = dependency('sndio', required: get_option('sndio'),
-+                    method: 'pkg-config', kwargs: static_kwargs)
-+endif
- 
- spice_protocol = not_found
- if not get_option('spice_protocol').auto() or have_system
-@@ -1597,6 +1602,7 @@ if have_system
-     'oss': oss.found(),
-     'pa': pulse.found(),
-     'sdl': sdl.found(),
-+    'sndio': sndio.found(),
-   }
-   foreach k, v: audio_drivers_available
-     config_host_data.set('CONFIG_AUDIO_' + k.to_upper(), v)
-@@ -1604,7 +1610,7 @@ if have_system
- 
-   # Default to native drivers first, OSS second, SDL third
-   audio_drivers_priority = \
--    [ 'pa', 'coreaudio', 'dsound', 'oss' ] + \
-+    [ 'pa', 'coreaudio', 'dsound', 'sndio', 'oss' ] + \
-     (targetos == 'linux' ? [] : [ 'sdl' ])
-   audio_drivers_default = []
-   foreach k: audio_drivers_priority
-@@ -1729,7 +1735,7 @@ config_host_data.set('CONFIG_QEMU_FIRMWAREPATH', qemu_
+@@ -1790,7 +1790,7 @@ config_host_data.set('CONFIG_QEMU_FIRMWAREPATH', qemu_
  config_host_data.set_quoted('CONFIG_QEMU_HELPERDIR', get_option('prefix') / 
get_option('libexecdir'))
  config_host_data.set_quoted('CONFIG_QEMU_ICONDIR', get_option('prefix') / 
qemu_icondir)
  config_host_data.set_quoted('CONFIG_QEMU_LOCALEDIR', get_option('prefix') / 
get_option('localedir'))
@@ -52,7 +22,7 @@ Index: meson.build
  config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / 
qemu_moddir)
  config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / 
get_option('sysconfdir'))
  
-@@ -3767,11 +3773,9 @@ if targetos == 'darwin'
+@@ -3756,11 +3756,9 @@ if targetos == 'darwin'
    summary_info += {'Objective-C compiler': ' 
'.join(meson.get_compiler('objc').cmd_array())}
  endif
  summary_info += {'CFLAGS':            ' '.join(get_option('c_args')
@@ -64,11 +34,3 @@ Index: meson.build
                                                 + (get_option('debug') ? 
['-g'] : []))}
  endif
  if targetos == 'darwin'
-@@ -3927,6 +3931,7 @@ if vnc.found()
- endif
- if targetos not in ['darwin', 'haiku', 'windows']
-   summary_info += {'OSS support':     oss}
-+  summary_info += {'sndio support':   sndio}
- elif targetos == 'darwin'
-   summary_info += {'CoreAudio support': coreaudio}
- elif targetos == 'windows'
Index: patches/patch-meson_mesonbuild_compilers_cpp_py
===================================================================
RCS file: 
/home/cvs/ports/emulators/qemu/patches/patch-meson_mesonbuild_compilers_cpp_py,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-meson_mesonbuild_compilers_cpp_py
--- patches/patch-meson_mesonbuild_compilers_cpp_py     11 Mar 2022 18:59:40 
-0000      1.3
+++ patches/patch-meson_mesonbuild_compilers_cpp_py     10 Nov 2022 05:27:50 
-0000
@@ -1,19 +1,19 @@
 Index: meson/mesonbuild/compilers/cpp.py
 --- meson/mesonbuild/compilers/cpp.py.orig
 +++ meson/mesonbuild/compilers/cpp.py
-@@ -247,7 +247,7 @@ class ClangCPPCompiler(ClangCompiler, CPPCompiler):
-         return []
- 
-     def language_stdlib_only_link_flags(self) -> T.List[str]:
--        return ['-lstdc++']
-+        return ['-lc++']
+@@ -254,7 +254,7 @@ class ClangCPPCompiler(ClangCompiler, CPPCompiler):
+         search_dirs: T.List[str] = []
+         for d in self.get_compiler_dirs(env, 'libraries'):
+             search_dirs.append(f'-L{d}')
+-        return search_dirs + ['-lstdc++']
++        return search_dirs + ['-lc++']
  
  
  class AppleClangCPPCompiler(ClangCPPCompiler):
-@@ -397,7 +397,7 @@ class GnuCPPCompiler(GnuCompiler, CPPCompiler):
-         return ['-fpch-preprocess', '-include', os.path.basename(header)]
- 
-     def language_stdlib_only_link_flags(self) -> T.List[str]:
+@@ -418,7 +418,7 @@ class GnuCPPCompiler(GnuCompiler, CPPCompiler):
+         search_dirs: T.List[str] = []
+         for d in self.get_compiler_dirs(env, 'libraries'):
+             search_dirs.append(f'-L{d}')
 -        return ['-lstdc++']
 +        return ['-lestdc++']
  
Index: patches/patch-meson_options_txt
===================================================================
RCS file: patches/patch-meson_options_txt
diff -N patches/patch-meson_options_txt
--- patches/patch-meson_options_txt     13 Sep 2022 20:11:35 -0000      1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-sndio module
-
-Index: meson_options.txt
---- meson_options.txt.orig
-+++ meson_options.txt
-@@ -21,7 +21,7 @@ option('tls_priority', type : 'string', value : 'NORMA
- option('default_devices', type : 'boolean', value : true,
-        description: 'Include a default selection of devices in emulators')
- option('audio_drv_list', type: 'array', value: ['default'],
--       choices: ['alsa', 'coreaudio', 'default', 'dsound', 'jack', 'oss', 
'pa', 'sdl'],
-+       choices: ['alsa', 'coreaudio', 'default', 'dsound', 'jack', 'oss', 
'pa', 'sdl', 'sndio'],
-        description: 'Set audio driver list')
- option('block_drv_rw_whitelist', type : 'string', value : '',
-        description: 'set block driver read-write whitelist (by default 
affects only QEMU, not tools like qemu-img)')
-@@ -240,6 +240,8 @@ option('oss', type: 'feature', value: 'auto',
-        description: 'OSS sound support')
- option('pa', type: 'feature', value: 'auto',
-        description: 'PulseAudio sound support')
-+option('sndio', type: 'feature', value: 'auto',
-+       description: 'sndio sound support')
- 
- option('vhost_kernel', type: 'feature', value: 'auto',
-        description: 'vhost kernel backend support')
Index: patches/patch-plugins_meson_build
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/patches/patch-plugins_meson_build,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-plugins_meson_build
--- patches/patch-plugins_meson_build   2 Sep 2022 11:35:53 -0000       1.2
+++ patches/patch-plugins_meson_build   10 Nov 2022 05:27:50 -0000
@@ -11,7 +11,7 @@ Index: plugins/meson.build
  # Modules need more symbols than just those in plugins/qemu-plugins.symbols
  if not enable_modules
 -  if targetos == 'darwin'
--    qemu_plugins_symbols_list = configure_file(
+-    configure_file(
 -      input: files('qemu-plugins.symbols'),
 -      output: 'qemu-plugins-ld64.symbols',
 -      capture: true,
Index: patches/patch-qapi_audio_json
===================================================================
RCS file: patches/patch-qapi_audio_json
diff -N patches/patch-qapi_audio_json
--- patches/patch-qapi_audio_json       13 Sep 2022 20:11:35 -0000      1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
-sndio module
-
-Index: qapi/audio.json
---- qapi/audio.json.orig
-+++ qapi/audio.json
-@@ -107,6 +107,28 @@
-     '*threshold': 'uint32' } }
- 
- ##
-+# @AudiodevSndioOptions:
-+#
-+# Options of the sndio audio backend.
-+#
-+# @in: options of the capture stream
-+#
-+# @out: options of the playback stream
-+#
-+# @dev: the name of the sndio device to use (default 'default')
-+#
-+# @latency: play buffer size (in microseconds)
-+#
-+# Since: 7.2
-+##
-+{ 'struct': 'AudiodevSndioOptions',
-+  'data': {
-+    '*in':        'AudiodevPerDirectionOptions',
-+    '*out':       'AudiodevPerDirectionOptions',
-+    '*dev':       'str',
-+    '*latency':   'uint32'} }
-+
-+##
- # @AudiodevCoreaudioPerDirectionOptions:
- #
- # Options of the Core Audio backend that are used for both playback and
-@@ -387,7 +409,7 @@
- ##
- { 'enum': 'AudiodevDriver',
-   'data': [ 'none', 'alsa', 'coreaudio', 'dbus', 'dsound', 'jack', 'oss', 
'pa',
--            'sdl', 'spice', 'wav' ] }
-+            'sdl', 'sndio', 'spice', 'wav' ] }
- 
- ##
- # @Audiodev:
-@@ -418,5 +440,6 @@
-     'oss':       'AudiodevOssOptions',
-     'pa':        'AudiodevPaOptions',
-     'sdl':       'AudiodevSdlOptions',
-+    'sndio':     'AudiodevSndioOptions',
-     'spice':     'AudiodevGenericOptions',
-     'wav':       'AudiodevWavOptions' } }
Index: patches/patch-qemu-options_hx
===================================================================
RCS file: patches/patch-qemu-options_hx
diff -N patches/patch-qemu-options_hx
--- patches/patch-qemu-options_hx       13 Sep 2022 20:11:35 -0000      1.13
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
-sndio module
-
-Index: qemu-options.hx
---- qemu-options.hx.orig
-+++ qemu-options.hx
-@@ -767,6 +767,9 @@ DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
-     "-audiodev sdl,id=id[,prop[=value][,...]]\n"
-     "                in|out.buffer-count= number of buffers\n"
- #endif
-+#ifdef CONFIG_AUDIO_SNDIO
-+    "-audiodev sndio,id=id[,prop[=value][,...]]\n"
-+#endif
- #ifdef CONFIG_SPICE
-     "-audiodev spice,id=id[,prop[=value][,...]]\n"
- #endif
-@@ -932,6 +935,19 @@ SRST
- 
-     ``in|out.buffer-count=count``
-         Sets the count of the buffers.
-+
-+``-audiodev sndio,id=id[,prop[=value][,...]]``
-+    Creates a backend using SNDIO. This backend is available on
-+    OpenBSD and most other Unix-like systems.
-+
-+    Sndio specific options are:
-+
-+    ``in|out.dev=device``
-+        Specify the sndio device to use for input and/or output. Default
-+        is ``default``.
-+
-+    ``in|out.latency=usecs``
-+        Sets the desired period length in microseconds.
- 
- ``-audiodev spice,id=id[,prop[=value][,...]]``
-     Creates a backend that sends audio through SPICE. This backend
Index: patches/patch-qga_commands-bsd_c
===================================================================
RCS file: patches/patch-qga_commands-bsd_c
diff -N patches/patch-qga_commands-bsd_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-qga_commands-bsd_c    10 Nov 2022 05:27:50 -0000
@@ -0,0 +1,16 @@
+Index: qga/commands-bsd.c
+--- qga/commands-bsd.c.orig
++++ qga/commands-bsd.c
+@@ -21,7 +21,12 @@
+ #include <sys/ucred.h>
+ #include <sys/mount.h>
+ #include <net/if_dl.h>
++#ifdef __OpenBSD__
++#include <net/if_arp.h>
++#include <netinet/if_ether.h>
++#else
+ #include <net/ethernet.h>
++#endif
+ #include <paths.h>
+ 
+ #if defined(CONFIG_FSFREEZE) || defined(CONFIG_FSTRIM)
Index: patches/patch-qga_commands-posix_c
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/patches/patch-qga_commands-posix_c,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 patch-qga_commands-posix_c
--- patches/patch-qga_commands-posix_c  14 Sep 2022 20:52:16 -0000      1.6
+++ patches/patch-qga_commands-posix_c  4 Dec 2022 06:39:40 -0000
@@ -11,21 +11,23 @@ Setting user password is not supported o
 Index: qga/commands-posix.c
 --- qga/commands-posix.c.orig
 +++ qga/commands-posix.c
-@@ -57,11 +57,20 @@
+@@ -45,13 +45,23 @@
+ #include <arpa/inet.h>
+ #include <sys/socket.h>
  #include <net/if.h>
- #include <sys/types.h>
- #include <ifaddrs.h>
--#ifdef CONFIG_SOLARIS
-+#if defined(__OpenBSD__)
-+#include <net/if_dl.h>
-+#include <net/if_types.h>
++#ifdef __OpenBSD__
++#include <net/if_arp.h>
 +#include <netinet/if_ether.h>
-+#elif defined CONFIG_SOLARIS
++#else
+ #include <net/ethernet.h>
++#endif
+ #include <sys/types.h>
+ #ifdef CONFIG_SOLARIS
  #include <sys/sockio.h>
  #endif
  #endif
  
-+#ifdef CONFIG_BSD
++#ifdef __OpenBSD__
 +#include <sys/sysctl.h>
 +#include <sys/statvfs.h>
 +#endif
@@ -33,120 +35,17 @@ Index: qga/commands-posix.c
  static void ga_wait_child(pid_t pid, int *status, Error **errp)
  {
      pid_t rpid;
-@@ -88,7 +97,11 @@ void qmp_guest_shutdown(bool has_mode, const char *mod
-     pid_t pid;
-     int status;
- 
--#ifdef CONFIG_SOLARIS
-+#ifdef CONFIG_BSD
-+    const char *powerdown_flag = "-p";
-+    const char *halt_flag = "-h";
-+    const char *reboot_flag = "-r";
-+#elif defined (CONFIG_SOLARIS)
-     const char *powerdown_flag = "-i5";
-     const char *halt_flag = "-i0";
-     const char *reboot_flag = "-i6";
-@@ -154,9 +167,11 @@ void qmp_guest_shutdown(bool has_mode, const char *mod
- void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
- {
-     int ret;
-+#ifndef CONFIG_BSD
-     int status;
-     pid_t pid;
-     Error *local_err = NULL;
-+#endif
-     struct timeval tv;
-     static const char hwclock_path[] = "/sbin/hwclock";
-     static int hwclock_available = -1;
-@@ -195,6 +210,7 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns
-         }
-     }
- 
-+#ifndef CONFIG_BSD
-     /* Now, if user has passed a time to set and the system time is set, we
-      * just need to synchronize the hardware clock. However, if no time was
-      * passed, user is requesting the opposite: set the system time from the
-@@ -230,6 +246,7 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns
-         error_setg(errp, "hwclock failed to set hardware clock to system 
time");
-         return;
+@@ -2232,12 +2242,118 @@ out:
+         close(datafd[1]);
      }
-+#endif
  }
- 
- typedef enum {
-@@ -2985,7 +3002,7 @@ GuestCpuStatsList *qmp_guest_get_cpustats(Error **errp
-     return head;
- }
- 
--#else /* defined(__linux__) */
-+#elif defined(CONFIG_BSD)
- 
- void qmp_guest_suspend_disk(Error **errp)
- {
-@@ -3004,10 +3021,209 @@ void qmp_guest_suspend_hybrid(Error **errp)
- 
- GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp)
+-#else /* __linux__ || __FreeBSD__ */
++#elif defined(__OpenBSD__) /* __linux__ || __FreeBSD__ */
+ void qmp_guest_set_user_password(const char *username,
+                                  const char *password,
+                                  bool crypted,
+                                  Error **errp)
  {
-+    int64_t current;
-+    GuestLogicalProcessorList *head, **link;
-+    long sc_max;
-+    Error *local_err = NULL;
-+    int Query[2];
-+    int NumCpu = 0;
-+    size_t Length = sizeof(NumCpu);
-+
-+    Query[0] = CTL_HW;
-+#ifdef HW_NCPUONLINE
-+    Query[1] = HW_NCPUONLINE;
-+#else
-+    Query[1] = HW_NCPU;
-+#endif
-+
-+    current = 0;
-+    head = NULL;
-+    link = &head;
-+    if (sysctl(Query, 2, &NumCpu, &Length, NULL, 0) == -1) {
-+        error_setg(errp, "sysctl get CTL_HW.HW_NCPU failed");
-+    }
-+    sc_max = NumCpu;
-+
-+    while (local_err == NULL && current < sc_max) {
-+        GuestLogicalProcessor *vcpu;
-+        GuestLogicalProcessorList *entry;
-+        int64_t id = current++;
-+        vcpu = g_malloc0(sizeof *vcpu);
-+        vcpu->logical_id = id;
-+        vcpu->has_can_offline = false; /* lolspeak ftw */
-+        vcpu->online = true;
-+        vcpu->can_offline = false;
-+        entry = g_malloc0(sizeof *entry);
-+        entry->value = vcpu;
-+        *link = entry;
-+        link = &entry->next;
-+    }
-+
-+    if (local_err == NULL) {
-+        /* there's no guest with zero VCPUs */
-+        g_assert(head != NULL);
-+        return head;
-+    }
-+
-+    qapi_free_GuestLogicalProcessorList(head);
-+    error_propagate(errp, local_err);
-+    return NULL;
-+}
-+
-+int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp)
-+{
-     error_setg(errp, QERR_UNSUPPORTED);
-+    return -1;
-+}
-+
-+void qmp_guest_set_user_password(const char *username,
-+                                 const char *password,
-+                                 bool crypted,
-+                                 Error **errp)
-+{
 +    Error *local_err = NULL;
 +    char *pw_path = NULL;
 +    pid_t pid;
@@ -247,6 +146,82 @@ Index: qga/commands-posix.c
 +        close(datafd[1]);
 +    }
 +}
++#else /* __OpenBSD__ */
++void qmp_guest_set_user_password(const char *username,
++                                 const char *password,
++                                 bool crypted,
++                                 Error **errp)
++{
+     error_setg(errp, QERR_UNSUPPORTED);
+ }
+ #endif /* __linux__ || __FreeBSD__ */
+@@ -2750,7 +2866,7 @@ GuestCpuStatsList *qmp_guest_get_cpustats(Error **errp
+     return head;
+ }
+ 
+-#else /* defined(__linux__) */
++#elif defined(CONFIG_BSD)
+ 
+ void qmp_guest_suspend_disk(Error **errp)
+ {
+@@ -2769,10 +2885,103 @@ void qmp_guest_suspend_hybrid(Error **errp)
+ 
+ GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp)
+ {
++    int64_t current;
++    GuestLogicalProcessorList *head, **link;
++    long sc_max;
++    Error *local_err = NULL;
++    int Query[2];
++    int NumCpu = 0;
++    size_t Length = sizeof(NumCpu);
++
++    Query[0] = CTL_HW;
++#ifdef HW_NCPUONLINE
++    Query[1] = HW_NCPUONLINE;
++#else
++    Query[1] = HW_NCPU;
++#endif
++
++    current = 0;
++    head = NULL;
++    link = &head;
++    if (sysctl(Query, 2, &NumCpu, &Length, NULL, 0) == -1) {
++        error_setg(errp, "sysctl get CTL_HW.HW_NCPU failed");
++    }
++    sc_max = NumCpu;
++
++    while (local_err == NULL && current < sc_max) {
++        GuestLogicalProcessor *vcpu;
++        GuestLogicalProcessorList *entry;
++        int64_t id = current++;
++        vcpu = g_malloc0(sizeof *vcpu);
++        vcpu->logical_id = id;
++        vcpu->has_can_offline = false; /* lolspeak ftw */
++        vcpu->online = true;
++        vcpu->can_offline = false;
++        entry = g_malloc0(sizeof *entry);
++        entry->value = vcpu;
++        *link = entry;
++        link = &entry->next;
++    }
++
++    if (local_err == NULL) {
++        /* there's no guest with zero VCPUs */
++        g_assert(head != NULL);
++        return head;
++    }
++
++    qapi_free_GuestLogicalProcessorList(head);
++    error_propagate(errp, local_err);
++    return NULL;
++}
++
++int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp)
++{
+     error_setg(errp, QERR_UNSUPPORTED);
++    return -1;
++}
 +
 +GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error **errp)
 +{
@@ -293,51 +268,25 @@ Index: qga/commands-posix.c
  int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp)
  {
      error_setg(errp, QERR_UNSUPPORTED);
-@@ -3144,9 +3360,11 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inter
-         GuestNetworkInterfaceStat *interface_stat = NULL;
-         char addr4[INET_ADDRSTRLEN];
-         char addr6[INET6_ADDRSTRLEN];
-+#ifndef __OpenBSD__
-         int sock;
-         struct ifreq ifr;
-         unsigned char *mac_addr;
-+#endif
-         void *p;
- 
-         g_debug("Processing %s interface", ifa->ifa_name);
-@@ -3162,6 +3380,23 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inter
+@@ -2881,7 +3090,7 @@ static int guest_get_network_stats(const char *name,
+     return -1;
+ }
  
-         if (!info->has_hardware_address) {
-             /* we haven't obtained HW address yet */
-+#ifdef __OpenBSD__
-+            if (ifa->ifa_addr != NULL &&
-+                ifa->ifa_addr->sa_family == AF_LINK) {
-+                struct sockaddr_dl *sdl =
-+                                (struct sockaddr_dl *)ifa->ifa_addr;
-+
-+                if (sdl->sdl_alen == ETHER_ADDR_LEN &&
-+                    (sdl->sdl_type == IFT_ETHER ||
-+                    sdl->sdl_type == IFT_CARP)) {
-+                        info->hardware_address =
-+                            g_strdup_printf("%s",
-+                                            ether_ntoa((struct ether_addr 
*)LLADDR(sdl)));
-+
-+                        info->has_hardware_address = true;
-+                }
-+            }
-+#else
-             sock = socket(PF_INET, SOCK_STREAM, 0);
-             if (sock == -1) {
-                 error_setg_errno(errp, errno, "failed to create socket");
-@@ -3200,6 +3435,7 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inter
-                 info->has_hardware_address = true;
-             }
-             close(sock);
-+#endif
-         }
+-#ifndef __FreeBSD__
++#ifndef CONFIG_BSD
+ /*
+  * Fill "buf" with MAC address by ifaddrs. Pointer buf must point to a
+  * buffer with ETHER_ADDR_LEN length at least.
+@@ -2930,7 +3139,7 @@ bool guest_get_hw_addr(struct ifaddrs *ifa, unsigned c
+     close(sock);
+     return true;
+ }
+-#endif /* __FreeBSD__ */
++#endif /* CONFIG_BSD */
  
-         if (ifa->ifa_addr &&
-@@ -3291,11 +3527,245 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inter
+ /*
+  * Build information about guest interfaces
+@@ -3070,11 +3279,245 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inter
  
  #if !defined(CONFIG_FSFREEZE)
  
@@ -583,7 +532,7 @@ Index: qga/commands-posix.c
  
  GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp)
  {
-@@ -3361,12 +3831,21 @@ GList *ga_command_blacklist_init(GList *blacklist)
+@@ -3140,12 +3583,21 @@ GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
  {
  #if !defined(__linux__)
      {
@@ -605,7 +554,7 @@ Index: qga/commands-posix.c
          char **p = (char **)list;
  
          while (*p) {
-@@ -3382,11 +3861,19 @@ GList *ga_command_blacklist_init(GList *blacklist)
+@@ -3161,11 +3613,19 @@ GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
  
  #if !defined(CONFIG_FSFREEZE)
      {
Index: patches/patch-qga_main_c
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/patches/patch-qga_main_c,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 patch-qga_main_c
--- patches/patch-qga_main_c    13 Sep 2022 20:11:35 -0000      1.5
+++ patches/patch-qga_main_c    10 Nov 2022 05:27:50 -0000
@@ -3,23 +3,27 @@ Adapted from https://github.com/aborche/
 Index: qga/main.c
 --- qga/main.c.orig
 +++ qga/main.c
-@@ -45,9 +45,15 @@
- #endif
+@@ -40,12 +40,16 @@
+ #include "commands-common.h"
  
  #ifndef _WIN32
+-#ifdef __FreeBSD__
 +#ifdef CONFIG_BSD
-+#define QGA_VIRTIO_PATH_DEFAULT "/dev/vtcon/org.qemu.guest_agent.0"
-+#define QGA_STATE_RELATIVE_DIR  "run"
+ #define QGA_VIRTIO_PATH_DEFAULT "/dev/vtcon/org.qemu.guest_agent.0"
+-#else /* __FreeBSD__ */
++#else /* CONFIG_BSD */
+ #define QGA_VIRTIO_PATH_DEFAULT "/dev/virtio-ports/org.qemu.guest_agent.0"
+-#endif /* __FreeBSD__ */
++#endif /* CONFIG_BSD */
++#ifdef __OpenBSD__
 +#define QGA_SERIAL_PATH_DEFAULT "/dev/cua01"
 +#else
- #define QGA_VIRTIO_PATH_DEFAULT "/dev/virtio-ports/org.qemu.guest_agent.0"
- #define QGA_STATE_RELATIVE_DIR  "run"
  #define QGA_SERIAL_PATH_DEFAULT "/dev/ttyS0"
 +#endif
+ #define QGA_STATE_RELATIVE_DIR  "run"
  #else
  #define QGA_VIRTIO_PATH_DEFAULT "\\\\.\\Global\\org.qemu.guest_agent.0"
- #define QGA_STATE_RELATIVE_DIR  "qemu-ga"
-@@ -1475,7 +1481,11 @@ int main(int argc, char **argv)
+@@ -1483,7 +1487,11 @@ int main(int argc, char **argv)
      }
  
      if (config->method == NULL) {
Index: pkg/PLIST-main
===================================================================
RCS file: /home/cvs/ports/emulators/qemu/pkg/PLIST-main,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 PLIST-main
--- pkg/PLIST-main      13 Sep 2022 20:11:35 -0000      1.11
+++ pkg/PLIST-main      8 Dec 2022 06:38:23 -0000
@@ -90,6 +90,7 @@ share/doc/qemu/_static/pygments.css
 share/doc/qemu/_static/qemu_128x128.png
 share/doc/qemu/_static/qemu_32x32.png
 share/doc/qemu/_static/searchtools.js
+share/doc/qemu/_static/sphinx_highlight.js
 share/doc/qemu/_static/theme_overrides.css
 share/doc/qemu/_static/underscore-1.13.1.js
 share/doc/qemu/_static/underscore.js
@@ -101,6 +102,7 @@ share/doc/qemu/about/license.html
 share/doc/qemu/about/removed-features.html
 share/doc/qemu/dbus-dbusindex.html
 share/doc/qemu/devel/
+share/doc/qemu/devel/acpi-bits.html
 share/doc/qemu/devel/atomics.html
 share/doc/qemu/devel/bitops.html
 share/doc/qemu/devel/block-coroutine-wrapper.html
@@ -121,6 +123,7 @@ share/doc/qemu/devel/index-tcg.html
 share/doc/qemu/devel/index.html
 share/doc/qemu/devel/kconfig.html
 share/doc/qemu/devel/loads-stores.html
+share/doc/qemu/devel/maintainers.html
 share/doc/qemu/devel/memory.html
 share/doc/qemu/devel/migration.html
 share/doc/qemu/devel/modules.html
@@ -260,6 +263,11 @@ share/doc/qemu/system/managed-startup.ht
 share/doc/qemu/system/monitor.html
 share/doc/qemu/system/multi-process.html
 share/doc/qemu/system/mux-chardev.html
+share/doc/qemu/system/openrisc/
+share/doc/qemu/system/openrisc/cpu-features.html
+share/doc/qemu/system/openrisc/emulation.html
+share/doc/qemu/system/openrisc/or1k-sim.html
+share/doc/qemu/system/openrisc/virt.html
 share/doc/qemu/system/ppc/
 share/doc/qemu/system/ppc/embedded.html
 share/doc/qemu/system/ppc/powermac.html
@@ -292,6 +300,7 @@ share/doc/qemu/system/target-avr.html
 share/doc/qemu/system/target-i386.html
 share/doc/qemu/system/target-m68k.html
 share/doc/qemu/system/target-mips.html
+share/doc/qemu/system/target-openrisc.html
 share/doc/qemu/system/target-ppc.html
 share/doc/qemu/system/target-riscv.html
 share/doc/qemu/system/target-rx.html


Reply via email to