All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juro Bystricky <juro.bystricky@intel.com>
To: openembedded-core@lists.openembedded.org
Cc: jurobystricky@hotmail.com, alistair.francis@xilinx.com
Subject: [PATCH] qemu_2.11.1.bb: support mingw build
Date: Fri, 13 Apr 2018 11:11:03 -0700	[thread overview]
Message-ID: <1523643063-39747-1-git-send-email-juro.bystricky@intel.com> (raw)

The patch chardev-connect-socket-to-a-spawned-command.patch calls
"socketpair". This function is missing in mingw, so the patch
needs to be modified accordingly (by conditional compilation using
_WIN32 macro where appropriate), otherwise we end up with a broken
mingw build.

While it is possible to simply remove the whole patch for mingw build
(via a .bbappend file in meta-mingw), it makes more sense to modify
the patch itself.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
 ...ardev-connect-socket-to-a-spawned-command.patch | 46 +++++++++++++++-------
 1 file changed, 31 insertions(+), 15 deletions(-)

diff --git a/meta/recipes-devtools/qemu/qemu/chardev-connect-socket-to-a-spawned-command.patch b/meta/recipes-devtools/qemu/qemu/chardev-connect-socket-to-a-spawned-command.patch
index 32809d3..6e6bf95 100644
--- a/meta/recipes-devtools/qemu/qemu/chardev-connect-socket-to-a-spawned-command.patch
+++ b/meta/recipes-devtools/qemu/qemu/chardev-connect-socket-to-a-spawned-command.patch
@@ -54,10 +54,11 @@ diff --git a/chardev/char-socket.c b/chardev/char-socket.c
 index 53eda8ef00..f566107c35 100644
 --- a/chardev/char-socket.c
 +++ b/chardev/char-socket.c
-@@ -852,6 +852,66 @@ static gboolean socket_reconnect_timeout(gpointer opaque)
+@@ -852,6 +852,68 @@ static gboolean socket_reconnect_timeout(gpointer opaque)
      return false;
  }
  
++#ifndef _WIN32
 +static void chardev_open_socket_cmd(Chardev *chr,
 +                                    const char *cmd,
 +                                    Error **errp)
@@ -117,42 +118,49 @@ index 53eda8ef00..f566107c35 100644
 +        object_unref(OBJECT(sioc));
 +    }
 +}
++#endif
 +
  static void qmp_chardev_open_socket(Chardev *chr,
                                      ChardevBackend *backend,
                                      bool *be_opened,
-@@ -859,6 +919,7 @@ static void qmp_chardev_open_socket(Chardev *chr,
+@@ -859,6 +921,9 @@
  {
      SocketChardev *s = SOCKET_CHARDEV(chr);
      ChardevSocket *sock = backend->u.socket.data;
++#ifndef _WIN32
 +    const char *cmd     = sock->cmd;
++#endif
      bool do_nodelay     = sock->has_nodelay ? sock->nodelay : false;
      bool is_listen      = sock->has_server  ? sock->server  : true;
      bool is_telnet      = sock->has_telnet  ? sock->telnet  : false;
-@@ -926,7 +987,12 @@ static void qmp_chardev_open_socket(Chardev *chr,
+@@ -925,7 +990,14 @@
+     } else if (reconnect > 0) {
          s->reconnect_time = reconnect;
      }
- 
--    if (s->reconnect_time) {
+-
++#ifndef _WIN32
 +    if (cmd) {
 +        chardev_open_socket_cmd(chr, cmd, errp);
 +
 +        /* everything ready (or failed permanently) before we return */
 +        *be_opened = true;
-+    } else if (s->reconnect_time) {
++    } else
++#endif
+     if (s->reconnect_time) {
          sioc = qio_channel_socket_new();
          tcp_chr_set_client_ioc_name(chr, sioc);
-         qio_channel_socket_connect_async(sioc, s->addr,
-@@ -985,11 +1051,22 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
+@@ -985,10 +1057,26 @@
      const char *host = qemu_opt_get(opts, "host");
      const char *port = qemu_opt_get(opts, "port");
      const char *tls_creds = qemu_opt_get(opts, "tls-creds");
++#ifndef _WIN32
 +    const char *cmd = qemu_opt_get(opts, "cmd");
++#endif
      SocketAddressLegacy *addr;
      ChardevSocket *sock;
  
      backend->type = CHARDEV_BACKEND_KIND_SOCKET;
--    if (!path) {
++#ifndef _WIN32
 +    if (cmd) {
 +        /*
 +         * Here we have to ensure that no options are set which are incompatible with
@@ -163,24 +171,33 @@ index 53eda8ef00..f566107c35 100644
 +            error_setg(errp, "chardev: socket: cmd does not support any additional options");
 +            return;
 +        }
-+    } else if (!path) {
++    } else
++#endif
+     if (!path) {
          if (!host) {
              error_setg(errp, "chardev: socket: no host given");
-             return;
-@@ -1021,13 +1098,14 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
+@@ -1021,13 +1109,24 @@
      sock->has_reconnect = true;
      sock->reconnect = reconnect;
      sock->tls_creds = g_strdup(tls_creds);
++#ifndef _WIN32
 +    sock->cmd = g_strdup(cmd);
++#endif
  
      addr = g_new0(SocketAddressLegacy, 1);
--    if (path) {
++#ifndef _WIN32
 +    if (path || cmd) {
++#else
+     if (path) {
++#endif
          UnixSocketAddress *q_unix;
          addr->type = SOCKET_ADDRESS_LEGACY_KIND_UNIX;
          q_unix = addr->u.q_unix.data = g_new0(UnixSocketAddress, 1);
--        q_unix->path = g_strdup(path);
++#ifndef _WIN32
 +        q_unix->path = cmd ? g_strdup_printf("cmd:%s", cmd) : g_strdup(path);
++#else
+         q_unix->path = g_strdup(path);
++#endif
      } else {
          addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET;
          addr->u.inet.data = g_new(InetSocketAddress, 1);
@@ -223,4 +240,3 @@ index ae19dcd1ed..6de0f29bcd 100644
                                       '*wait'      : 'bool',
 -- 
 2.14.1
-
-- 
2.7.4



             reply	other threads:[~2018-04-13 18:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-13 18:11 Juro Bystricky [this message]
2018-04-13 20:43 ` [PATCH] qemu_2.11.1.bb: support mingw build Alistair Francis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1523643063-39747-1-git-send-email-juro.bystricky@intel.com \
    --to=juro.bystricky@intel.com \
    --cc=alistair.francis@xilinx.com \
    --cc=jurobystricky@hotmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.