[libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo

Marek Marczykowski-Górecki posted 9 patches 7 years, 1 month ago
[libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo
Posted by Marek Marczykowski-Górecki 7 years, 1 month ago
Preparation for global nestedhvm configuration - libxlMakeDomBuildInfo
needs access to libxlDriverConfig.
No functional change.

Adjusting tests require slightly more mockup functions, because of
libxlDriverConfigNew() call.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
Changes since v6:
 - tests: add libxl_get_free_memory mock needed on Xen 4.5
Changes since v4:
 - drop now unneeded parameters
Changes since v3:
 - new patch, preparation
---
 src/libxl/libxl_conf.c         | 13 +++++++------
 src/libxl/libxl_conf.h         |  4 +---
 src/libxl/libxl_domain.c       |  2 +-
 tests/libxlxml2domconfigtest.c | 23 ++++++++++++++++-------
 tests/virmocklibxl.c           | 31 +++++++++++++++++++++++++++++++
 5 files changed, 56 insertions(+), 17 deletions(-)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index ae369bc..2565f64 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -271,11 +271,12 @@ libxlMakeChrdevStr(virDomainChrDefPtr def, char **buf)
 
 static int
 libxlMakeDomBuildInfo(virDomainDefPtr def,
-                      libxl_ctx *ctx,
+                      libxlDriverConfigPtr cfg,
                       virCapsPtr caps,
                       libxl_domain_config *d_config)
 {
     virDomainClockDef clock = def->clock;
+    libxl_ctx *ctx = cfg->ctx;
     libxl_domain_build_info *b_info = &d_config->b_info;
     int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM;
     size_t i;
@@ -2346,17 +2347,17 @@ libxlDriverNodeGetInfo(libxlDriverPrivatePtr driver, virNodeInfoPtr info)
 int
 libxlBuildDomainConfig(virPortAllocatorRangePtr graphicsports,
                        virDomainDefPtr def,
-                       const char *channelDir LIBXL_ATTR_UNUSED,
-                       libxl_ctx *ctx,
-                       virCapsPtr caps,
+                       libxlDriverConfigPtr cfg,
                        libxl_domain_config *d_config)
 {
+    virCapsPtr caps = cfg->caps;
+    libxl_ctx *ctx = cfg->ctx;
     libxl_domain_config_init(d_config);
 
     if (libxlMakeDomCreateInfo(ctx, def, &d_config->c_info) < 0)
         return -1;
 
-    if (libxlMakeDomBuildInfo(def, ctx, caps, d_config) < 0)
+    if (libxlMakeDomBuildInfo(def, cfg, caps, d_config) < 0)
         return -1;
 
 #ifdef LIBXL_HAVE_VNUMA
@@ -2388,7 +2389,7 @@ libxlBuildDomainConfig(virPortAllocatorRangePtr graphicsports,
 #endif
 
 #ifdef LIBXL_HAVE_DEVICE_CHANNEL
-    if (libxlMakeChannelList(channelDir, def, d_config) < 0)
+    if (libxlMakeChannelList(cfg->channelDir, def, d_config) < 0)
         return -1;
 #endif
 
diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
index 0e85dff..633ebf5 100644
--- a/src/libxl/libxl_conf.h
+++ b/src/libxl/libxl_conf.h
@@ -215,9 +215,7 @@ libxlCreateXMLConf(void);
 int
 libxlBuildDomainConfig(virPortAllocatorRangePtr graphicsports,
                        virDomainDefPtr def,
-                       const char *channelDir LIBXL_ATTR_UNUSED,
-                       libxl_ctx *ctx,
-                       virCapsPtr caps,
+                       libxlDriverConfigPtr cfg,
                        libxl_domain_config *d_config);
 
 static inline void
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index ef9a902..0614589 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -1261,7 +1261,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
         goto cleanup_dom;
 
     if (libxlBuildDomainConfig(driver->reservedGraphicsPorts, vm->def,
-                               cfg->channelDir, cfg->ctx, cfg->caps, &d_config) < 0)
+                               cfg, &d_config) < 0)
         goto cleanup_dom;
 
     if (cfg->autoballoon && libxlDomainFreeMem(cfg->ctx, &d_config) < 0)
diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c
index 6eec4c7..9d280e9 100644
--- a/tests/libxlxml2domconfigtest.c
+++ b/tests/libxlxml2domconfigtest.c
@@ -56,8 +56,8 @@ testCompareXMLToDomConfig(const char *xmlfile,
     int ret = -1;
     libxl_domain_config actualconfig;
     libxl_domain_config expectconfig;
+    libxlDriverConfigPtr cfg;
     xentoollog_logger *log = NULL;
-    libxl_ctx *ctx = NULL;
     virPortAllocatorRangePtr gports = NULL;
     virDomainXMLOptionPtr xmlopt = NULL;
     virDomainDefPtr vmdef = NULL;
@@ -68,10 +68,18 @@ testCompareXMLToDomConfig(const char *xmlfile,
     libxl_domain_config_init(&actualconfig);
     libxl_domain_config_init(&expectconfig);
 
+    if (!(cfg = libxlDriverConfigNew()))
+        goto cleanup;
+
+    cfg->caps = caps;
+
     if (!(log = (xentoollog_logger *)xtl_createlogger_stdiostream(stderr, XTL_DEBUG, 0)))
         goto cleanup;
 
-    if (libxl_ctx_alloc(&ctx, LIBXL_VERSION, 0, log) < 0)
+    /* replace logger with stderr one */
+    libxl_ctx_free(cfg->ctx);
+
+    if (libxl_ctx_alloc(&cfg->ctx, LIBXL_VERSION, 0, log) < 0)
         goto cleanup;
 
     if (!(gports = virPortAllocatorRangeNew("vnc", 5900, 6000)))
@@ -84,22 +92,22 @@ testCompareXMLToDomConfig(const char *xmlfile,
                                         NULL, VIR_DOMAIN_XML_INACTIVE)))
         goto cleanup;
 
-    if (libxlBuildDomainConfig(gports, vmdef, NULL, ctx, caps, &actualconfig) < 0)
+    if (libxlBuildDomainConfig(gports, vmdef, cfg, &actualconfig) < 0)
         goto cleanup;
 
-    if (!(actualjson = libxl_domain_config_to_json(ctx, &actualconfig))) {
+    if (!(actualjson = libxl_domain_config_to_json(cfg->ctx, &actualconfig))) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        "Failed to retrieve JSON doc for libxl_domain_config");
         goto cleanup;
     }
 
     virTestLoadFile(jsonfile, &tempjson);
-    if (libxl_domain_config_from_json(ctx, &expectconfig, tempjson) != 0) {
+    if (libxl_domain_config_from_json(cfg->ctx, &expectconfig, tempjson) != 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        "Failed to create libxl_domain_config from JSON doc");
         goto cleanup;
     }
-    if (!(expectjson = libxl_domain_config_to_json(ctx, &expectconfig))) {
+    if (!(expectjson = libxl_domain_config_to_json(cfg->ctx, &expectconfig))) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        "Failed to retrieve JSON doc for libxl_domain_config");
         goto cleanup;
@@ -122,10 +130,11 @@ testCompareXMLToDomConfig(const char *xmlfile,
     virDomainDefFree(vmdef);
     virPortAllocatorRangeFree(gports);
     virObjectUnref(xmlopt);
-    libxl_ctx_free(ctx);
     libxl_domain_config_dispose(&actualconfig);
     libxl_domain_config_dispose(&expectconfig);
     xtl_logger_destroy(log);
+    cfg->caps = NULL;
+    virObjectUnref(cfg);
     return ret;
 }
 
diff --git a/tests/virmocklibxl.c b/tests/virmocklibxl.c
index 9735956..50ae258 100644
--- a/tests/virmocklibxl.c
+++ b/tests/virmocklibxl.c
@@ -27,6 +27,7 @@
 # include <sys/stat.h>
 # include <unistd.h>
 # include <libxl.h>
+# include <util/virfile.h>
 # include <xenstore.h>
 # include <xenctrl.h>
 # include <sys/socket.h>
@@ -49,6 +50,25 @@ VIR_MOCK_IMPL_RET_ARGS(xc_interface_open,
 }
 
 
+VIR_MOCK_IMPL_RET_ARGS(libxl_get_version_info,
+                       const libxl_version_info*,
+                       libxl_ctx *, ctx)
+{
+    static libxl_version_info info;
+
+    memset(&info, 0, sizeof(info));
+
+    /* silence gcc warning about unused function */
+    if (0)
+        real_libxl_get_version_info(ctx);
+    return &info;
+}
+
+VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory,
+                       int, 0,
+                       libxl_ctx *, ctx,
+                       uint32_t *, memkb);
+
 VIR_MOCK_STUB_RET_ARGS(xc_interface_close,
                        int, 0,
                        xc_interface *, handle)
@@ -75,6 +95,17 @@ VIR_MOCK_STUB_RET_ARGS(bind,
                        const struct sockaddr *, addr,
                        socklen_t, addrlen)
 
+VIR_MOCK_IMPL_RET_ARGS(virFileMakePath, int,
+                       const char *, path)
+{
+    /* replace log path with a writable directory */
+    if (strstr(path, "/log/")) {
+        snprintf((char*)path, strlen(path), ".");
+        return 0;
+    }
+    return real_virFileMakePath(path);
+}
+
 VIR_MOCK_IMPL_RET_ARGS(__xstat, int,
                        int, ver,
                        const char *, path,
-- 
git-series 0.9.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo
Posted by Jim Fehlig 7 years ago
On 04/11/2018 07:03 PM, Marek Marczykowski-Górecki wrote:
> Preparation for global nestedhvm configuration - libxlMakeDomBuildInfo
> needs access to libxlDriverConfig.
> No functional change.
> 
> Adjusting tests require slightly more mockup functions, because of
> libxlDriverConfigNew() call.
> 
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> Changes since v6:
>   - tests: add libxl_get_free_memory mock needed on Xen 4.5
> Changes since v4:
>   - drop now unneeded parameters
> Changes since v3:
>   - new patch, preparation
> ---
>   src/libxl/libxl_conf.c         | 13 +++++++------
>   src/libxl/libxl_conf.h         |  4 +---
>   src/libxl/libxl_domain.c       |  2 +-
>   tests/libxlxml2domconfigtest.c | 23 ++++++++++++++++-------
>   tests/virmocklibxl.c           | 31 +++++++++++++++++++++++++++++++
>   5 files changed, 56 insertions(+), 17 deletions(-)
> 
> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
> index ae369bc..2565f64 100644
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -271,11 +271,12 @@ libxlMakeChrdevStr(virDomainChrDefPtr def, char **buf)
>   
>   static int
>   libxlMakeDomBuildInfo(virDomainDefPtr def,
> -                      libxl_ctx *ctx,
> +                      libxlDriverConfigPtr cfg,
>                         virCapsPtr caps,
>                         libxl_domain_config *d_config)
>   {
>       virDomainClockDef clock = def->clock;
> +    libxl_ctx *ctx = cfg->ctx;
>       libxl_domain_build_info *b_info = &d_config->b_info;
>       int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM;
>       size_t i;
> @@ -2346,17 +2347,17 @@ libxlDriverNodeGetInfo(libxlDriverPrivatePtr driver, virNodeInfoPtr info)
>   int
>   libxlBuildDomainConfig(virPortAllocatorRangePtr graphicsports,
>                          virDomainDefPtr def,
> -                       const char *channelDir LIBXL_ATTR_UNUSED,
> -                       libxl_ctx *ctx,
> -                       virCapsPtr caps,
> +                       libxlDriverConfigPtr cfg,
>                          libxl_domain_config *d_config)
>   {
> +    virCapsPtr caps = cfg->caps;
> +    libxl_ctx *ctx = cfg->ctx;
>       libxl_domain_config_init(d_config);
>   
>       if (libxlMakeDomCreateInfo(ctx, def, &d_config->c_info) < 0)
>           return -1;
>   
> -    if (libxlMakeDomBuildInfo(def, ctx, caps, d_config) < 0)
> +    if (libxlMakeDomBuildInfo(def, cfg, caps, d_config) < 0)
>           return -1;
>   
>   #ifdef LIBXL_HAVE_VNUMA
> @@ -2388,7 +2389,7 @@ libxlBuildDomainConfig(virPortAllocatorRangePtr graphicsports,
>   #endif
>   
>   #ifdef LIBXL_HAVE_DEVICE_CHANNEL
> -    if (libxlMakeChannelList(channelDir, def, d_config) < 0)
> +    if (libxlMakeChannelList(cfg->channelDir, def, d_config) < 0)
>           return -1;
>   #endif
>   
> diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
> index 0e85dff..633ebf5 100644
> --- a/src/libxl/libxl_conf.h
> +++ b/src/libxl/libxl_conf.h
> @@ -215,9 +215,7 @@ libxlCreateXMLConf(void);
>   int
>   libxlBuildDomainConfig(virPortAllocatorRangePtr graphicsports,
>                          virDomainDefPtr def,
> -                       const char *channelDir LIBXL_ATTR_UNUSED,
> -                       libxl_ctx *ctx,
> -                       virCapsPtr caps,
> +                       libxlDriverConfigPtr cfg,
>                          libxl_domain_config *d_config);
>   
>   static inline void
> diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
> index ef9a902..0614589 100644
> --- a/src/libxl/libxl_domain.c
> +++ b/src/libxl/libxl_domain.c
> @@ -1261,7 +1261,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
>           goto cleanup_dom;
>   
>       if (libxlBuildDomainConfig(driver->reservedGraphicsPorts, vm->def,
> -                               cfg->channelDir, cfg->ctx, cfg->caps, &d_config) < 0)
> +                               cfg, &d_config) < 0)
>           goto cleanup_dom;
>   
>       if (cfg->autoballoon && libxlDomainFreeMem(cfg->ctx, &d_config) < 0)
> diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c
> index 6eec4c7..9d280e9 100644
> --- a/tests/libxlxml2domconfigtest.c
> +++ b/tests/libxlxml2domconfigtest.c
> @@ -56,8 +56,8 @@ testCompareXMLToDomConfig(const char *xmlfile,
>       int ret = -1;
>       libxl_domain_config actualconfig;
>       libxl_domain_config expectconfig;
> +    libxlDriverConfigPtr cfg;
>       xentoollog_logger *log = NULL;
> -    libxl_ctx *ctx = NULL;
>       virPortAllocatorRangePtr gports = NULL;
>       virDomainXMLOptionPtr xmlopt = NULL;
>       virDomainDefPtr vmdef = NULL;
> @@ -68,10 +68,18 @@ testCompareXMLToDomConfig(const char *xmlfile,
>       libxl_domain_config_init(&actualconfig);
>       libxl_domain_config_init(&expectconfig);
>   
> +    if (!(cfg = libxlDriverConfigNew()))
> +        goto cleanup;
> +
> +    cfg->caps = caps;
> +
>       if (!(log = (xentoollog_logger *)xtl_createlogger_stdiostream(stderr, XTL_DEBUG, 0)))
>           goto cleanup;
>   
> -    if (libxl_ctx_alloc(&ctx, LIBXL_VERSION, 0, log) < 0)
> +    /* replace logger with stderr one */
> +    libxl_ctx_free(cfg->ctx);
> +
> +    if (libxl_ctx_alloc(&cfg->ctx, LIBXL_VERSION, 0, log) < 0)
>           goto cleanup;
>   
>       if (!(gports = virPortAllocatorRangeNew("vnc", 5900, 6000)))
> @@ -84,22 +92,22 @@ testCompareXMLToDomConfig(const char *xmlfile,
>                                           NULL, VIR_DOMAIN_XML_INACTIVE)))
>           goto cleanup;
>   
> -    if (libxlBuildDomainConfig(gports, vmdef, NULL, ctx, caps, &actualconfig) < 0)
> +    if (libxlBuildDomainConfig(gports, vmdef, cfg, &actualconfig) < 0)
>           goto cleanup;
>   
> -    if (!(actualjson = libxl_domain_config_to_json(ctx, &actualconfig))) {
> +    if (!(actualjson = libxl_domain_config_to_json(cfg->ctx, &actualconfig))) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                          "Failed to retrieve JSON doc for libxl_domain_config");
>           goto cleanup;
>       }
>   
>       virTestLoadFile(jsonfile, &tempjson);
> -    if (libxl_domain_config_from_json(ctx, &expectconfig, tempjson) != 0) {
> +    if (libxl_domain_config_from_json(cfg->ctx, &expectconfig, tempjson) != 0) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                          "Failed to create libxl_domain_config from JSON doc");
>           goto cleanup;
>       }
> -    if (!(expectjson = libxl_domain_config_to_json(ctx, &expectconfig))) {
> +    if (!(expectjson = libxl_domain_config_to_json(cfg->ctx, &expectconfig))) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                          "Failed to retrieve JSON doc for libxl_domain_config");
>           goto cleanup;
> @@ -122,10 +130,11 @@ testCompareXMLToDomConfig(const char *xmlfile,
>       virDomainDefFree(vmdef);
>       virPortAllocatorRangeFree(gports);
>       virObjectUnref(xmlopt);
> -    libxl_ctx_free(ctx);
>       libxl_domain_config_dispose(&actualconfig);
>       libxl_domain_config_dispose(&expectconfig);
>       xtl_logger_destroy(log);
> +    cfg->caps = NULL;
> +    virObjectUnref(cfg);
>       return ret;
>   }
>   
> diff --git a/tests/virmocklibxl.c b/tests/virmocklibxl.c
> index 9735956..50ae258 100644
> --- a/tests/virmocklibxl.c
> +++ b/tests/virmocklibxl.c
> @@ -27,6 +27,7 @@
>   # include <sys/stat.h>
>   # include <unistd.h>
>   # include <libxl.h>
> +# include <util/virfile.h>
>   # include <xenstore.h>
>   # include <xenctrl.h>
>   # include <sys/socket.h>
> @@ -49,6 +50,25 @@ VIR_MOCK_IMPL_RET_ARGS(xc_interface_open,
>   }
>   
>   
> +VIR_MOCK_IMPL_RET_ARGS(libxl_get_version_info,
> +                       const libxl_version_info*,
> +                       libxl_ctx *, ctx)
> +{
> +    static libxl_version_info info;
> +
> +    memset(&info, 0, sizeof(info));
> +
> +    /* silence gcc warning about unused function */
> +    if (0)
> +        real_libxl_get_version_info(ctx);
> +    return &info;
> +}
> +
> +VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory,
> +                       int, 0,
> +                       libxl_ctx *, ctx,
> +                       uint32_t *, memkb);
> +

This still fails for me on Xen 4.8 through 4.10

virmocklibxl.c:67:24: error: conflicting types for 'libxl_get_free_memory'
  VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory,
                         ^
virmock.h:182:13: note: in definition of macro 'VIR_MOCK_STUB_RET_ARGS'
      rettype name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__)) \
              ^~~~
In file included from virmocklibxl.c:29:0:
/usr/include/libxl.h:1570:5: note: previous declaration of 
'libxl_get_free_memory' was here
  int libxl_get_free_memory(libxl_ctx *ctx, uint64_t *memkb);
      ^~~~~~~~~~~~~~~~~~~~~

Your response in the V6 thread about "conflicting types (with
libxl_get_free_memory_0x040700)" was a good hint. Things work fine for me on Xen 
4.4 through 4.10 with the following squashed in

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2c0d1311c..8c4b6c220 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -528,6 +528,7 @@ libxlxml2domconfigtest_LDADD = $(libxl_LDADDS) $(LIBXML_LIBS)

  virmocklibxl_la_SOURCES = \
         virmocklibxl.c
+virmocklibxl_la_CFLAGS = $(LIBXL_CFLAGS)
  virmocklibxl_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
  virmocklibxl_la_LIBADD = $(MOCKLIBS_LIBS)

But I'm still confused as to how this works for you. Any idea about that? :-)

Regards,
Jim

>   VIR_MOCK_STUB_RET_ARGS(xc_interface_close,
>                          int, 0,
>                          xc_interface *, handle)
> @@ -75,6 +95,17 @@ VIR_MOCK_STUB_RET_ARGS(bind,
>                          const struct sockaddr *, addr,
>                          socklen_t, addrlen)
>   
> +VIR_MOCK_IMPL_RET_ARGS(virFileMakePath, int,
> +                       const char *, path)
> +{
> +    /* replace log path with a writable directory */
> +    if (strstr(path, "/log/")) {
> +        snprintf((char*)path, strlen(path), ".");
> +        return 0;
> +    }
> +    return real_virFileMakePath(path);
> +}
> +
>   VIR_MOCK_IMPL_RET_ARGS(__xstat, int,
>                          int, ver,
>                          const char *, path,
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo
Posted by Marek Marczykowski-Górecki 7 years ago
On Tue, Apr 17, 2018 at 02:00:25PM -0600, Jim Fehlig wrote:
> Your response in the V6 thread about "conflicting types (with
> libxl_get_free_memory_0x040700)" was a good hint. Things work fine for me on
> Xen 4.4 through 4.10 with the following squashed in
> 
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 2c0d1311c..8c4b6c220 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -528,6 +528,7 @@ libxlxml2domconfigtest_LDADD = $(libxl_LDADDS) $(LIBXML_LIBS)
> 
>  virmocklibxl_la_SOURCES = \
>         virmocklibxl.c
> +virmocklibxl_la_CFLAGS = $(LIBXL_CFLAGS)
>  virmocklibxl_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
>  virmocklibxl_la_LIBADD = $(MOCKLIBS_LIBS)
> 
> But I'm still confused as to how this works for you. Any idea about that? :-)

Oh, I see it now. For me, -DLIBXL_API_VERSION=0x040400 landed in CFLAGS,
not only LIBXL_CFLAGS. According to config.log it happened just after
testing for xenlight - first, the test using pkg-config failed (something
wrong with my libxl installation), but then fallback to manual check.
And since then, every gcc call have -DLIBXL_API_VERSION=0x040400.

Looking at m4/virt-driver-libxl.m4, I think it's because saved
old_CFLAGS is overridden by LIBVIRT_CHECK_LIB with actual CFLAGS (now
containing -DLIBXL_API_VERSION=0x040400).

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo
Posted by Jim Fehlig 7 years ago
On 04/17/2018 02:20 PM, Marek Marczykowski-Górecki wrote:
> On Tue, Apr 17, 2018 at 02:00:25PM -0600, Jim Fehlig wrote:
>> Your response in the V6 thread about "conflicting types (with
>> libxl_get_free_memory_0x040700)" was a good hint. Things work fine for me on
>> Xen 4.4 through 4.10 with the following squashed in
>>
>> diff --git a/tests/Makefile.am b/tests/Makefile.am
>> index 2c0d1311c..8c4b6c220 100644
>> --- a/tests/Makefile.am
>> +++ b/tests/Makefile.am
>> @@ -528,6 +528,7 @@ libxlxml2domconfigtest_LDADD = $(libxl_LDADDS) $(LIBXML_LIBS)
>>
>>   virmocklibxl_la_SOURCES = \
>>          virmocklibxl.c
>> +virmocklibxl_la_CFLAGS = $(LIBXL_CFLAGS)
>>   virmocklibxl_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
>>   virmocklibxl_la_LIBADD = $(MOCKLIBS_LIBS)
>>
>> But I'm still confused as to how this works for you. Any idea about that? :-)
> 
> Oh, I see it now. For me, -DLIBXL_API_VERSION=0x040400 landed in CFLAGS,
> not only LIBXL_CFLAGS. According to config.log it happened just after
> testing for xenlight - first, the test using pkg-config failed (something
> wrong with my libxl installation), but then fallback to manual check.
> And since then, every gcc call have -DLIBXL_API_VERSION=0x040400.
> 
> Looking at m4/virt-driver-libxl.m4, I think it's because saved
> old_CFLAGS is overridden by LIBVIRT_CHECK_LIB with actual CFLAGS (now
> containing -DLIBXL_API_VERSION=0x040400).

Ah, looks to be the case. But that is existing and can be fixed in a followup 
IMO. So do you agree with the change to add LIBXL_CFLAGS to virmocklibxl_la_CFLAGS?

Regards,
Jim

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo
Posted by Marek Marczykowski-Górecki 7 years ago
On Tue, Apr 17, 2018 at 04:04:01PM -0600, Jim Fehlig wrote:
> On 04/17/2018 02:20 PM, Marek Marczykowski-Górecki wrote:
> > On Tue, Apr 17, 2018 at 02:00:25PM -0600, Jim Fehlig wrote:
> > > Your response in the V6 thread about "conflicting types (with
> > > libxl_get_free_memory_0x040700)" was a good hint. Things work fine for me on
> > > Xen 4.4 through 4.10 with the following squashed in
> > > 
> > > diff --git a/tests/Makefile.am b/tests/Makefile.am
> > > index 2c0d1311c..8c4b6c220 100644
> > > --- a/tests/Makefile.am
> > > +++ b/tests/Makefile.am
> > > @@ -528,6 +528,7 @@ libxlxml2domconfigtest_LDADD = $(libxl_LDADDS) $(LIBXML_LIBS)
> > > 
> > >   virmocklibxl_la_SOURCES = \
> > >          virmocklibxl.c
> > > +virmocklibxl_la_CFLAGS = $(LIBXL_CFLAGS)
> > >   virmocklibxl_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
> > >   virmocklibxl_la_LIBADD = $(MOCKLIBS_LIBS)
> > > 
> > > But I'm still confused as to how this works for you. Any idea about that? :-)
> > 
> > Oh, I see it now. For me, -DLIBXL_API_VERSION=0x040400 landed in CFLAGS,
> > not only LIBXL_CFLAGS. According to config.log it happened just after
> > testing for xenlight - first, the test using pkg-config failed (something
> > wrong with my libxl installation), but then fallback to manual check.
> > And since then, every gcc call have -DLIBXL_API_VERSION=0x040400.
> > 
> > Looking at m4/virt-driver-libxl.m4, I think it's because saved
> > old_CFLAGS is overridden by LIBVIRT_CHECK_LIB with actual CFLAGS (now
> > containing -DLIBXL_API_VERSION=0x040400).
> 
> Ah, looks to be the case. But that is existing and can be fixed in a
> followup IMO. So do you agree with the change to add LIBXL_CFLAGS to
> virmocklibxl_la_CFLAGS?

Yes, of course. Should I submit yet another version?

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v7 2/9] libxl: pass driver config to libxlMakeDomBuildInfo
Posted by Jim Fehlig 7 years ago
On 04/17/2018 04:22 PM, Marek Marczykowski-Górecki wrote:
> On Tue, Apr 17, 2018 at 04:04:01PM -0600, Jim Fehlig wrote:
>> On 04/17/2018 02:20 PM, Marek Marczykowski-Górecki wrote:
>>> On Tue, Apr 17, 2018 at 02:00:25PM -0600, Jim Fehlig wrote:
>>>> Your response in the V6 thread about "conflicting types (with
>>>> libxl_get_free_memory_0x040700)" was a good hint. Things work fine for me on
>>>> Xen 4.4 through 4.10 with the following squashed in
>>>>
>>>> diff --git a/tests/Makefile.am b/tests/Makefile.am
>>>> index 2c0d1311c..8c4b6c220 100644
>>>> --- a/tests/Makefile.am
>>>> +++ b/tests/Makefile.am
>>>> @@ -528,6 +528,7 @@ libxlxml2domconfigtest_LDADD = $(libxl_LDADDS) $(LIBXML_LIBS)
>>>>
>>>>    virmocklibxl_la_SOURCES = \
>>>>           virmocklibxl.c
>>>> +virmocklibxl_la_CFLAGS = $(LIBXL_CFLAGS)
>>>>    virmocklibxl_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
>>>>    virmocklibxl_la_LIBADD = $(MOCKLIBS_LIBS)
>>>>
>>>> But I'm still confused as to how this works for you. Any idea about that? :-)
>>>
>>> Oh, I see it now. For me, -DLIBXL_API_VERSION=0x040400 landed in CFLAGS,
>>> not only LIBXL_CFLAGS. According to config.log it happened just after
>>> testing for xenlight - first, the test using pkg-config failed (something
>>> wrong with my libxl installation), but then fallback to manual check.
>>> And since then, every gcc call have -DLIBXL_API_VERSION=0x040400.
>>>
>>> Looking at m4/virt-driver-libxl.m4, I think it's because saved
>>> old_CFLAGS is overridden by LIBVIRT_CHECK_LIB with actual CFLAGS (now
>>> containing -DLIBXL_API_VERSION=0x040400).
>>
>> Ah, looks to be the case. But that is existing and can be fixed in a
>> followup IMO. So do you agree with the change to add LIBXL_CFLAGS to
>> virmocklibxl_la_CFLAGS?
> 
> Yes, of course. Should I submit yet another version?

No, that's fine. I'll take care of it when pushing the series.

Regards,
Jim

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list