In systemd >= 218, the udev_set_log_fn method has been marked deprecated and turned into a no-op. Nothing in the udev client library will print to stderr by default anymore, so we can just stop installing a logging hook for new enough udev. --- m4/virt-udev.m4 | 7 +++++++ src/node_device/node_device_udev.c | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/m4/virt-udev.m4 b/m4/virt-udev.m4 index 55673bf..0d785c4 100644 --- a/m4/virt-udev.m4 +++ b/m4/virt-udev.m4 @@ -24,6 +24,13 @@ AC_DEFUN([LIBVIRT_CHECK_UDEV],[ if test "$with_udev" = "yes" && test "$with_pciaccess" != "yes" ; then AC_MSG_ERROR([You must install the pciaccess module to build with udev]) fi + + if test "$with_udev" = "yes" ; then + PKG_CHECK_EXISTS(libudev >= 218, [with_udev_logging=no], [with_udev_logging=yes]) + if test "$with_udev_logging" = "yes" ; then + AC_DEFINE_UNQUOTED([HAVE_UDEV_LOGGING], 1, [whether libudev logging can be used]) + fi + fi ]) AC_DEFUN([LIBVIRT_RESULT_UDEV],[ diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 343ef85..1a35c07 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -340,7 +340,7 @@ static int udevGenerateDeviceName(struct udev_device *device, return ret; } - +#if HAVE_UDEV_LOGGING typedef void (*udevLogFunctionPtr)(struct udev *udev, int priority, const char *file, @@ -373,6 +373,7 @@ udevLogFunction(struct udev *udev ATTRIBUTE_UNUSED, VIR_FREE(format); } +#endif static int udevTranslatePCIIds(unsigned int vendor, @@ -1759,8 +1760,10 @@ static int nodeStateInitialize(bool privileged, * its return value. */ udev = udev_new(); +#if HAVE_UDEV_LOGGING /* cast to get rid of missing-format-attribute warning */ udev_set_log_fn(udev, (udevLogFunctionPtr) udevLogFunction); +#endif priv->udev_monitor = udev_monitor_new_from_netlink(udev, "udev"); if (priv->udev_monitor == NULL) { -- 2.1.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list