rpms/libdrm/devel libdrm-wait-udev.patch, NONE, 1.1 libdrm.spec, 1.45, 1.46

Dave Airlie (airlied) fedora-extras-commits at redhat.com
Sun Aug 10 08:47:55 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/libdrm/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22354

Modified Files:
	libdrm.spec 
Added Files:
	libdrm-wait-udev.patch 
Log Message:
* Sun Aug 10 2008 Dave Airlie <airlied at redhat.com> 2.4.0-0.17
- attempt to fix race with udev by just waiting for udev


libdrm-wait-udev.patch:

--- NEW FILE libdrm-wait-udev.patch ---
diff --git a/configure.ac b/configure.ac
index 1cf877d..0cf0974 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,6 +34,9 @@ AC_SYS_LARGEFILE
 
 pkgconfigdir=${libdir}/pkgconfig
 AC_SUBST(pkgconfigdir)
+AC_ARG_ENABLE(udev,	AS_HELP_STRING([--enable-udev],
+				[Enable support for using udev instead of mknod (default: disabled)]),
+				[UDEV=$enableval], [UDEV=no])
 
 
 dnl ===========================================================================
@@ -101,6 +104,10 @@ AC_CACHE_CHECK([for supported warning flags], libdrm_cv_warn_cflags, [
 	AC_MSG_CHECKING([which warning flags were supported])])
 WARN_CFLAGS="$libdrm_cv_warn_cflags"
 
+if test "x$UDEV" = xyes; then
+	AC_DEFINE(UDEV, 1, [Have UDEV support])
+fi
+
 AC_SUBST(WARN_CFLAGS)
 AC_OUTPUT([
 	Makefile
diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 150dd5f..5d8819a 100644
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -297,6 +297,7 @@ static int drmOpenDevice(long dev, int minor)
 	group = (serv_group >= 0) ? serv_group : DRM_DEV_GID;
     }
 
+#if !defined(UDEV)
     if (stat(DRM_DIR_NAME, &st)) {
 	if (!isroot)
 	    return DRM_ERR_NOT_ROOT;
@@ -317,6 +318,30 @@ static int drmOpenDevice(long dev, int minor)
 	chown(buf, user, group);
 	chmod(buf, devmode);
     }
+#else
+    /* if we modprobed then wait for udev */
+    {
+	int udev_count = 0;
+wait_for_udev:
+        if (stat(DRM_DIR_NAME, &st)) {
+		usleep(20);
+		udev_count++;
+
+		if (udev_count == 50)
+			return -1;
+		goto wait_for_udev;
+	}
+
+    	if (stat(buf, &st)) {
+		usleep(20);
+		udev_count++;
+
+		if (udev_count == 50)
+			return -1;
+		goto wait_for_udev;
+    	}
+    }
+#endif
 
     fd = open(buf, O_RDWR, 0);
     drmMsg("drmOpenDevice: open result is %d, (%s)\n",


Index: libdrm.spec
===================================================================
RCS file: /cvs/pkgs/rpms/libdrm/devel/libdrm.spec,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- libdrm.spec	1 Aug 2008 07:03:47 -0000	1.45
+++ libdrm.spec	10 Aug 2008 08:47:25 -0000	1.46
@@ -3,7 +3,7 @@
 Summary: Direct Rendering Manager runtime library
 Name: libdrm
 Version: 2.4.0
-Release: 0.16%{?dist}
+Release: 0.17%{?dist}
 License: MIT
 Group: System Environment/Libraries
 URL: http://dri.sourceforge.net
@@ -23,6 +23,7 @@
 # - funk that just bash it direct for now -
 Patch3: libdrm-make-dri-perms-okay.patch
 Patch4: libdrm-2.4.0-no-bc.patch
+Patch5: libdrm-wait-udev.patch
 
 %description
 Direct Rendering Manager runtime library
@@ -41,10 +42,11 @@
 #patch2 -p1 -b .mknod
 %patch3 -p1 -b .forceperms
 %patch4 -p1 -b .no-bc
+%patch5 -p1 -b .udev-wait
 
 %build
 autoreconf -v --install || exit 1
-%configure
+%configure --enable-udev
 make
 
 %install
@@ -90,6 +92,9 @@
 %{_libdir}/pkgconfig/libdrm.pc
 
 %changelog
+* Sun Aug 10 2008 Dave Airlie <airlied at redhat.com> 2.4.0-0.17
+- attempt to fix race with udev by just waiting for udev
+
 * Fri Aug 01 2008 Dave Airlie <airlied at redhat.com> 2.4.0-0.16
 - new libdrm snapshot with modesetting for radeon interfaces
 




More information about the fedora-extras-commits mailing list