]> xenbits.xensource.com Git - libvirt.git/commitdiff
m4: Provide default value fore UDEVADM
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 17 May 2019 09:09:45 +0000 (11:09 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 17 May 2019 13:08:59 +0000 (15:08 +0200)
https://bugzilla.redhat.com/show_bug.cgi?id=1710575

It may happen that the system where libvirt is built at doesn't
have udevadm binary but the one where it runs does have it.
If we change how udevadm is run in virWaitForDevices() then we
can safely pass a default value in m4 macro.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
m4/virt-external-programs.m4
src/util/virutil.c

index 3c915e1a65fbfa4aea9a0e69a6f415e0535423dc..f1ae104b32fe5762dc33c3784793d724b5941e74 100644 (file)
@@ -45,7 +45,7 @@ AC_DEFUN([LIBVIRT_CHECK_EXTERNAL_PROGRAMS], [
   AC_PATH_PROG([DNSMASQ], [dnsmasq], [dnsmasq], [$LIBVIRT_SBIN_PATH])
   AC_PATH_PROG([RADVD], [radvd], [radvd], [$LIBVIRT_SBIN_PATH])
   AC_PATH_PROG([TC], [tc], [tc], [$LIBVIRT_SBIN_PATH])
-  AC_PATH_PROG([UDEVADM], [udevadm], [], [$LIBVIRT_SBIN_PATH])
+  AC_PATH_PROG([UDEVADM], [udevadm], [udevadm], [$LIBVIRT_SBIN_PATH])
   AC_PATH_PROG([MODPROBE], [modprobe], [modprobe], [$LIBVIRT_SBIN_PATH])
   AC_PATH_PROG([RMMOD], [rmmod], [rmmod], [$LIBVIRT_SBIN_PATH])
   AC_PATH_PROG([MMCTL], [mm-ctl], [mm-ctl], [$LIBVIRT_SBIN_PATH])
@@ -65,11 +65,8 @@ AC_DEFUN([LIBVIRT_CHECK_EXTERNAL_PROGRAMS], [
                      [Location or name of the mm-ctl program])
   AC_DEFINE_UNQUOTED([OVSVSCTL], ["$OVSVSCTL"],
                      [Location or name of the ovs-vsctl program])
-
-  if test -n "$UDEVADM"; then
-    AC_DEFINE_UNQUOTED([UDEVADM], ["$UDEVADM"],
-                       [Location or name of the udevadm program])
-  fi
+  AC_DEFINE_UNQUOTED([UDEVADM], ["$UDEVADM"],
+                     [Location or name of the udevadm program])
   if test -n "$MODPROBE"; then
     AC_DEFINE_UNQUOTED([MODPROBE], ["$MODPROBE"],
                        [Location or name of the modprobe program])
index ecef24d2f3da1f2fbf85d511d50a744cebc77767..b85769d9360d1c42e38c16335241855ec60c9e94 100644 (file)
@@ -1479,25 +1479,24 @@ virSetUIDGIDWithCaps(uid_t uid, gid_t gid, gid_t *groups, int ngroups,
 #endif
 
 
-#if defined(UDEVADM)
 void virWaitForDevices(void)
 {
-    const char *const settleprog[] = { UDEVADM, "settle", NULL };
+    VIR_AUTOPTR(virCommand) cmd = NULL;
+    VIR_AUTOFREE(char *) udev = NULL;
     int exitstatus;
 
-    if (access(settleprog[0], X_OK) != 0)
+    if (!(udev = virFindFileInPath(UDEVADM)))
+        return;
+
+    if (!(cmd = virCommandNewArgList(udev, "settle", NULL)))
         return;
 
     /*
      * NOTE: we ignore errors here; this is just to make sure that any device
      * nodes that are being created finish before we try to scan them.
      */
-    ignore_value(virRun(settleprog, &exitstatus));
+    ignore_value(virCommandRun(cmd, &exitstatus));
 }
-#else
-void virWaitForDevices(void)
-{}
-#endif
 
 #if WITH_DEVMAPPER
 bool