[packages] libv4l: update to v0.6.1, don't ship dev shared lib sysmlinks
[packages] libv4l: update to v0.6.1, don't ship dev shared lib sysmlinks


git-svn-id: svn://svn.openwrt.org/openwrt/packages@17921 3c298f89-4303-0410-b956-a3cf2f4a3e73

--- a/libs/libv4l/Makefile
+++ b/libs/libv4l/Makefile
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libv4l
-PKG_VERSION:=0.6.0
+PKG_VERSION:=0.6.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://people.atrpms.net/~hdegoede/
-PKG_MD5SUM:=db389fdf02cabd57f289f0faa37f4060
+PKG_MD5SUM:=0d0d96d77c98871d2e5466c10cb30a0a
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -66,7 +66,7 @@
 
 define Package/libv4l/install
 	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l{1,2,convert}.so* $(1)/usr/lib/
+	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l{1,2,convert}.so.* $(1)/usr/lib/
 	$(INSTALL_DIR) $(1)/usr/lib/libv4l
 	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l/v4l{1compat,2convert}.so $(1)/usr/lib/libv4l
 endef

--- a/libs/libv4l/patches/001-no-shm_open-fix.patch
+++ b/libs/libv4l/patches/001-no-shm_open-fix.patch
@@ -1,25 +1,31 @@
-diff -ruN libv4l-0.6.0.orig/libv4lconvert/control/libv4lcontrol.c libv4l-0.6.0/libv4lconvert/control/libv4lcontrol.c
---- libv4l-0.6.0.orig/libv4lconvert/control/libv4lcontrol.c	2009-07-09 04:59:01.000000000 -0400
-+++ libv4l-0.6.0/libv4lconvert/control/libv4lcontrol.c	2009-08-29 03:23:06.000000000 -0400
-@@ -265,7 +265,7 @@
+--- a/libv4lconvert/control/libv4lcontrol.c
++++ b/libv4lconvert/control/libv4lcontrol.c
+@@ -338,7 +338,7 @@ static void v4lcontrol_init_flags(struct
  
  struct v4lcontrol_data *v4lcontrol_create(int fd, int always_needs_conversion)
  {
 -  int shm_fd;
 +  int shm_fd, fdflags;
    int i, rc, init = 0;
-   char *s, shm_name[256];
+   char *s, shm_name[256], pwd_buf[1024];
    struct v4l2_capability cap;
-@@ -311,19 +311,26 @@
-     return data; /* No need to create a shared memory segment */
+@@ -392,25 +392,31 @@ struct v4lcontrol_data *v4lcontrol_creat
+   }
  
-   SYS_IOCTL(fd, VIDIOC_QUERYCAP, &cap);
--  snprintf(shm_name, 256, "/%s:%s", cap.bus_info, cap.card);
-+  snprintf(shm_name, 256, "/dev/shm/%s:%s", cap.bus_info, cap.card);
+   if (getpwuid_r(geteuid(), &pwd, pwd_buf, sizeof(pwd_buf), &pwd_p) == 0) {
+-    snprintf(shm_name, 256, "/libv4l-%s:%s:%s", pwd.pw_name,
++    snprintf(shm_name, 256, "/dev/shm/libv4l-%s:%s:%s", pwd.pw_name,
+ 	     cap.bus_info, cap.card);
+   } else {
+     perror("libv4lcontrol: error getting username using uid instead");
+-    snprintf(shm_name, 256, "/libv4l-%lu:%s:%s", (unsigned long)geteuid(),
++    snprintf(shm_name, 256, "/dev/shm/libv4l-%lu:%s:%s", (unsigned long)geteuid(),
+ 	     cap.bus_info, cap.card);
+   }
  
    /* / is not allowed inside shm names */
 -  for (i = 1; shm_name[i]; i++)
-+  for (i = 9; shm_name[i]; i++) //start after "/dev/shm", i = 9
++  for (i = 9; shm_name[i]; i++) /* start after "/dev/shm", i = 9 */
      if (shm_name[i] == '/')
        shm_name[i] = '-';
  
@@ -28,17 +34,16 @@
 +  if ((shm_fd = open(shm_name, (O_CREAT | O_EXCL | O_RDWR),
  			 (S_IREAD | S_IWRITE))) >= 0)
      init = 1;
--  else if ((shm_fd = shm_open(shm_name, O_RDWR, (S_IREAD | S_IWRITE))) < 0)
-+  else if ((shm_fd = open(shm_name, O_RDWR, (S_IREAD | S_IWRITE))) < 0)
-     goto error;
-+  
+   else
+-    shm_fd = shm_open(shm_name, O_RDWR, (S_IREAD | S_IWRITE));
++    shm_fd = open(shm_name, O_RDWR, (S_IREAD | S_IWRITE));
++
 +  /* This is all uClibc > 0.9.30 seems to do for shm_open() in librt/shm.c */
 +  fdflags = fcntl(shm_fd, F_GETFD, 0);
 +  
-+  if (fdflags >= 0) {
++  if (fdflags >= 0)
 +    fdflags = fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
-+  }
  
-   /* Set the shared memory size */
-   ftruncate(shm_fd, V4LCONTROL_SHM_SIZE);
+   if (shm_fd >= 0) {
+     /* Set the shared memory size */
 

comments