[PATCH] udev: make use of udev_enumerate_add_match_tag() only when it is available

Peter Hutterer peter.hutterer at who-t.net
Tue Sep 27 15:29:18 PDT 2011


On Tue, Sep 27, 2011 at 06:04:06PM +0100, Dave Airlie wrote:
> From: Lennart Poettering <lennart at poettering.net>
> 
> udev_enumerate_add_match_tag() and udev_monitor_filter_add_match_tag()
> are mostly optimizations, hence simply skip these calls if they are not
> available in the installed version of libudev.
> 
> This should fix the build on older versions of udev.
> 
> [airlied: fixes tinderbox failures on RHEL6]
> 
> Signed-off-by: Lennart Poettering <lennart at poettering.net>
> Reviewed-by: Dave Airlie <airlied at redhat.com>
> Tested-by: Dave Airlie <airlied at redhat.com>

Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

Keith, please merge this one directly, I won't take it in my tree (which is
currently in tatters).

Cheers,
  Peter

> ---
>  config/udev.c           |    4 ++++
>  configure.ac            |    9 +++++++++
>  include/dix-config.h.in |    6 ++++++
>  3 files changed, 19 insertions(+), 0 deletions(-)
> 
> diff --git a/config/udev.c b/config/udev.c
> index 1ba0d50..e2b3726 100644
> --- a/config/udev.c
> +++ b/config/udev.c
> @@ -285,8 +285,10 @@ config_udev_init(void)
>      udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "input", NULL);
>      udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "tty", NULL); /* For Wacom serial devices */
>  
> +#ifdef HAVE_UDEV_MONITOR_FILTER_ADD_MATCH_TAG
>      if (SeatId && strcmp(SeatId, "seat0"))
>          udev_monitor_filter_add_match_tag(udev_monitor, SeatId);
> +#endif
>  
>      if (udev_monitor_enable_receiving(udev_monitor)) {
>          ErrorF("config/udev: failed to bind the udev monitor\n");
> @@ -300,8 +302,10 @@ config_udev_init(void)
>      udev_enumerate_add_match_subsystem(enumerate, "input");
>      udev_enumerate_add_match_subsystem(enumerate, "tty");
>  
> +#ifdef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG
>      if (SeatId && strcmp(SeatId, "seat0"))
>          udev_enumerate_add_match_tag(enumerate, SeatId);
> +#endif
>  
>      udev_enumerate_scan_devices(enumerate);
>      devices = udev_enumerate_get_list_entry(enumerate);
> diff --git a/configure.ac b/configure.ac
> index b0d2643..30716fb 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -822,6 +822,15 @@ if test "x$CONFIG_UDEV" = xyes; then
>  		AC_MSG_ERROR([udev configuration API requested, but libudev is not installed])
>  	fi
>  	AC_DEFINE(CONFIG_UDEV, 1, [Use libudev for input hotplug])
> +
> +	SAVE_LIBS=$LIBS
> +	SAVE_CFLAGS=$CFLAGS
> +	CFLAGS=$UDEV_CFLAGS
> +	LIBS=$UDEV_LIBS
> +	AC_CHECK_FUNCS([udev_monitor_filter_add_match_tag])
> +	AC_CHECK_FUNCS([udev_enumerate_add_match_tag])
> +	LIBS=$SAVE_LIBS
> +	CFLAGS=$SAVE_CFLAGS
>  fi
>  
>  dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
> diff --git a/include/dix-config.h.in b/include/dix-config.h.in
> index 5facb11..2dcaf6b 100644
> --- a/include/dix-config.h.in
> +++ b/include/dix-config.h.in
> @@ -402,6 +402,12 @@
>  /* Use libudev for input hotplug */
>  #undef CONFIG_UDEV
>  
> +/* Use udev_monitor_filter_add_match_tag() */
> +#undef HAVE_UDEV_MONITOR_FILTER_ADD_MATCH_TAG
> +
> +/* Use udev_enumerate_add_match_tag() */
> +#undef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG
> +
>  /* Use D-Bus for input hotplug */
>  #undef CONFIG_NEED_DBUS
>  
> -- 
> 1.7.6.4
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list