uclibc: add O_CLOEXEC support needed for newer pulseaudio
authorHenning Heinold <heinold@inf.fu-berlin.de>
Thu, 26 Nov 2009 13:15:54 +0000 (14:15 +0100)
committerHenning Heinold <heinold@inf.fu-berlin.de>
Mon, 30 Nov 2009 01:00:13 +0000 (02:00 +0100)
* only for version 0.9.30.1
* bump PR

recipes/uclibc/uclibc-0.9.30.1/o_cloexec.patch [new file with mode: 0644]
recipes/uclibc/uclibc_0.9.30.1.bb

diff --git a/recipes/uclibc/uclibc-0.9.30.1/o_cloexec.patch b/recipes/uclibc/uclibc-0.9.30.1/o_cloexec.patch
new file mode 100644 (file)
index 0000000..021ca95
--- /dev/null
@@ -0,0 +1,272 @@
+From b8f1f91cc6d7b579fdb2370ab046565f9930aa09 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Thu, 08 Oct 2009 02:51:55 +0000
+Subject: clean up O_CLOEXEC handling
+
+Drop the "#ifndef O_CLOEXEC" cruft, enable O_CLOEXEC in most fcntl.h
+headers, and import __ASSUME_O_CLOEXEC from glibc.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+Index: uClibc-0.9.30.1/libc/pwd_grp/lckpwdf.c
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/pwd_grp/lckpwdf.c        2008-05-20 00:57:34.000000000 +0200
++++ uClibc-0.9.30.1/libc/pwd_grp/lckpwdf.c     2009-11-26 13:44:11.935757716 +0100
+@@ -75,7 +75,7 @@
+   /* Prevent problems caused by multiple threads.  */
+   __UCLIBC_MUTEX_LOCK(mylock);
+-  lock_fd = open (_PATH_PASSWD, O_WRONLY);
++  lock_fd = open (_PATH_PASSWD, O_WRONLY | O_CLOEXEC);
+   if (lock_fd == -1) {
+     /* Cannot create lock file.  */
+       goto DONE;
+@@ -97,6 +97,12 @@
+       goto DONE;
+   }
++#ifndef __ASSUME_O_CLOEXEC
++    /* Make sure file gets correctly closed when process finished.  */
++   fcntl (lock_fd, F_SETFD, FD_CLOEXEC);
++#endif
++
++
+   /* Now we have to get exclusive write access.  Since multiple
+      process could try this we won't stop when it first fails.
+      Instead we set a timeout for the system call.  Once the timer
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/alpha/bits/fcntl.h 2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/fcntl.h      2009-11-26 13:35:06.744980002 +0100
+@@ -50,9 +50,7 @@
+ # define O_NOFOLLOW   0200000 /* Do not follow links.  */
+ # define O_DIRECT     02000000 /* Direct disk access.  */
+ # define O_NOATIME    04000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC      010000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/arm/bits/fcntl.h   2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/fcntl.h        2009-11-26 13:35:06.744980002 +0100
+@@ -50,9 +50,7 @@
+ # define O_NOFOLLOW   0100000 /* Do not follow links.  */
+ # define O_DIRECT     0200000 /* Direct disk access.  */
+ # define O_NOATIME     01000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/avr32/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/avr32/bits/fcntl.h 2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/avr32/bits/fcntl.h      2009-11-26 13:35:06.748316654 +0100
+@@ -30,6 +30,7 @@
+ # define O_DIRECTORY  00200000        /* direct disk access */
+ # define O_NOFOLLOW   00400000        /* don't follow links */
+ # define O_NOATIME    01000000        /* don't set atime */
++# define O_CLOEXEC    02000000        /* set close_on_exec */
+ #endif
+ #ifdef __USE_LARGEFILE64
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/bfin/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/bfin/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/bfin/bits/fcntl.h       2009-11-26 13:37:03.357878847 +0100
+@@ -49,6 +49,8 @@
+ # define O_NOFOLLOW   0100000 /* Do not follow links.  */
+ # define O_DIRECT     0200000 /* Direct disk access.  */
+ # define O_STREAMING  04000000/* streaming access */
++# define O_NOATIME    01000000/* don't set atime */
++# define O_CLOEXEC    02000000/* set close_on_exec *
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/cris/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/cris/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/cris/bits/fcntl.h       2009-11-26 13:35:06.748316654 +0100
+@@ -50,6 +50,7 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_NOATIME    01000000 /* Do not set atime.  */
++# define O_CLOEXEC    02000000 /* set close_on_exec */
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/frv/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/frv/bits/fcntl.h   2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/frv/bits/fcntl.h        2009-11-26 13:38:32.785785660 +0100
+@@ -46,6 +46,8 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_STREAMING  04000000/* streaming access */
++# define O_NOATIME    01000000/* don't set atime */
++# define O_CLOEXEC    02000000/* set close_on_exec */
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/hppa/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/hppa/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/hppa/bits/fcntl.h       2009-11-26 13:35:06.748316654 +0100
+@@ -50,6 +50,7 @@
+ # define O_DIRECTORY  00010000 /* Must be a directory. */
+ # define O_NOFOLLOW   00000200 /* Do not follow links. */
+ # define O_NOATIME    04000000 /* Do not set atime. */
++# define O_CLOEXEC    010000000 /* set close_on_exec */
+ #endif
+ #ifdef __USE_LARGEFILE64
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/i386/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/fcntl.h       2009-11-26 13:35:06.748316654 +0100
+@@ -50,9 +50,7 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_NOATIME     01000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/ia64/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/fcntl.h       2009-11-26 13:35:06.748316654 +0100
+@@ -49,9 +49,7 @@
+ # define O_DIRECTORY  0200000 /* must be a directory */
+ # define O_NOFOLLOW   0400000 /* don't follow links */
+ # define O_NOATIME    01000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC    02000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/m68k/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/fcntl.h       2009-11-26 13:35:06.748316654 +0100
+@@ -49,6 +49,7 @@
+ # define O_NOFOLLOW   0100000 /* Do not follow links.  */
+ # define O_DIRECT     0200000 /* Direct disk access.  */
+ # define O_NOATIME    01000000 /* Do not set atime.  */
++# define O_CLOEXEC    02000000 /* set close_on_exec */
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/microblaze/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/microblaze/bits/fcntl.h    2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/microblaze/bits/fcntl.h 2009-11-26 13:39:20.148703335 +0100
+@@ -46,6 +46,8 @@
+ # define O_NOFOLLOW   0100000 /* Do not follow links.  */
+ # define O_DIRECT     0200000 /* Direct disk access.  */
+ # define O_STREAMING  04000000/* streaming access */
++# define O_NOATIME    01000000/* Do not set atime.  */
++# define O_CLOEXEC    02000000/* set close_on_exec */
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/mips/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/fcntl.h       2009-11-26 13:35:06.748316654 +0100
+@@ -51,6 +51,7 @@
+ # define O_DIRECT     0x8000  /* Direct disk access hint.  */
+ # define O_DIRECTORY  0x10000 /* Must be a directory.  */
+ # define O_NOATIME    0x40000 /* Do not set atime.  */
++# define O_CLOEXEC    02000000 /* set close_on_exec */
+ #endif
+ /* For now Linux has no synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/powerpc/bits/fcntl.h       2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/fcntl.h    2009-11-26 13:35:06.748316654 +0100
+@@ -50,9 +50,7 @@
+ # define O_DIRECTORY   040000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0100000 /* Do not follow links.  */
+ # define O_NOATIME    01000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC    02000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sh/bits/fcntl.h    2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/fcntl.h 2009-11-26 13:35:06.748316654 +0100
+@@ -50,9 +50,7 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_NOATIME     01000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/sh64/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sh64/bits/fcntl.h  2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/sh64/bits/fcntl.h       2009-11-26 13:37:47.554540700 +0100
+@@ -46,6 +46,8 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_STREAMING  04000000/* streaming access */
++# define O_NOATIME    01000000/* Do not set atime.  */
++# define O_CLOEXEC    02000000/* set close_on_exec */
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/fcntl.h 2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/fcntl.h      2009-11-26 13:35:06.751656343 +0100
+@@ -49,9 +49,7 @@
+ # define O_NOFOLLOW   0x20000 /* don't follow links */
+ # define O_DIRECT     0x100000 /* direct disk access hint */
+ # define O_NOATIME    0x200000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC    0x400000 /* Set close_on_exit.  */
+-# endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/x86_64/bits/fcntl.h        2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/fcntl.h     2009-11-26 13:35:06.751656343 +0100
+@@ -50,9 +50,7 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_NOATIME     01000000 /* Do not set atime.  */
+-# if 0
+ # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
+-# endif
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
+Index: uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/xtensa/bits/fcntl.h        2008-11-15 16:55:31.000000000 +0100
++++ uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/fcntl.h     2009-11-26 13:35:06.751656343 +0100
+@@ -50,6 +50,7 @@
+ # define O_DIRECTORY  0200000 /* Must be a directory.  */
+ # define O_NOFOLLOW   0400000 /* Do not follow links.  */
+ # define O_NOATIME     01000000 /* Do not set atime.  */
++# define O_CLOEXEC     02000000 /* set close_on_exec */
+ #endif
+ /* For now Linux has synchronisity options for data and read operations.
index c32b2f1..47b44cd 100644 (file)
@@ -9,7 +9,7 @@
 UCLIBC_BASE ?= "0.9.30.1"
 
 require uclibc.inc
-PR = "${INC_PR}.3"
+PR = "${INC_PR}.4"
 
 PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc"
 
@@ -23,6 +23,7 @@ SRC_URI += "file://uClibc.machine file://uClibc.distro \
            file://uclibc-c99-ldbl-math.patch;patch=1 \
            file://Use-__always_inline-instead-of-__inline__.patch;patch=1 \
             file://installfix.patch;patch=1 \
+            file://o_cloexec.patch;patch=1 \
           "
 #recent versions uclibc require real kernel headers
 PACKAGE_ARCH = "${MACHINE_ARCH}"