packages (AC-branch): glibc/glibc.spec, glibc/inotify.h (NEW) - add inotify...

glen glen at pld-linux.org
Wed Oct 12 10:02:48 CEST 2011


Author: glen                         Date: Wed Oct 12 08:02:48 2011 GMT
Module: packages                      Tag: AC-branch
---- Log message:
- add inotify support, syscalls inlined if <sys/inotify.h> included

---- Files affected:
packages/glibc:
   glibc.spec (1.583.2.102 -> 1.583.2.103) , inotify.h (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: packages/glibc/glibc.spec
diff -u packages/glibc/glibc.spec:1.583.2.102 packages/glibc/glibc.spec:1.583.2.103
--- packages/glibc/glibc.spec:1.583.2.102	Fri Nov  6 15:47:42 2009
+++ packages/glibc/glibc.spec	Wed Oct 12 10:02:43 2011
@@ -87,7 +87,7 @@
 Summary(uk.UTF-8):	GNU libc версії 2.3
 Name:		glibc
 Version:	2.3.6
-Release:	18
+Release:	19
 Epoch:		6
 License:	LGPL
 Group:		Libraries
@@ -103,6 +103,7 @@
 # Source5-md5:	f464eadf3cf06761f65639e44a179e6b
 Source6:	%{name}-localedb-gen
 Source7:	%{name}-LD-path.c
+Source8:	inotify.h
 Patch0:		%{name}-info.patch
 Patch1:		%{name}-pl.po-update.patch
 Patch2:		%{name}-pld.patch
@@ -1111,16 +1112,16 @@
 	math/libm_pic.a libm.map
 	resolv/libresolv_pic.a"
 
-install $PICFILES				$RPM_BUILD_ROOT%{_libdir}
-install elf/soinit.os				$RPM_BUILD_ROOT%{_libdir}/soinit.o
-install elf/sofini.os				$RPM_BUILD_ROOT%{_libdir}/sofini.o
+cp -p $PICFILES				$RPM_BUILD_ROOT%{_libdir}
+cp -p elf/soinit.os				$RPM_BUILD_ROOT%{_libdir}/soinit.o
+cp -p elf/sofini.os				$RPM_BUILD_ROOT%{_libdir}/sofini.o
 cd ..
 
 %if %{without cross}
 %ifarch %{x8664} ppc64 s390x sparc64
-install glibc-postinst				$RPM_BUILD_ROOT/sbin/glibc-postinst64
+install -p glibc-postinst				$RPM_BUILD_ROOT/sbin/glibc-postinst64
 %else
-install glibc-postinst				$RPM_BUILD_ROOT/sbin/glibc-postinst
+install -p glibc-postinst				$RPM_BUILD_ROOT/sbin/glibc-postinst
 %endif
 %endif
 
@@ -1136,7 +1137,7 @@
 done
 $RPM_BUILD_ROOT/sbin/ldconfig -n $RPM_BUILD_ROOT/%{_lib}/tls
 
-for f in libc.so libpthread.so ; do
+for f in libc.so libpthread.so; do
 	cat $RPM_BUILD_ROOT/nptl%{_libdir}/$f | sed \
 		-e "s|/libc.so.6|/tls/libc.so.6|g" \
 		-e "s|/libpthread.so.0|/tls/libpthread.so.0|g" \
@@ -1162,7 +1163,7 @@
 mv -f $RPM_BUILD_ROOT/%{_lib}/libpcprofile.so	$RPM_BUILD_ROOT%{_libdir}
 
 %if %{with linuxthreads}
-install linuxthreads/man/*.3thr		$RPM_BUILD_ROOT%{_mandir}/man3
+cp -p linuxthreads/man/*.3thr		$RPM_BUILD_ROOT%{_mandir}/man3
 %endif
 
 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/localtime
@@ -1194,6 +1195,8 @@
 EOF
 %endif
 
+cp -p %{SOURCE8} $RPM_BUILD_ROOT%{_includedir}/sys/inotify.h
+
 ln -sf libbsd-compat.a		$RPM_BUILD_ROOT%{_libdir}/libbsd.a
 
 # make symlinks across top-level directories absolute
@@ -1202,11 +1205,11 @@
 	ln -sf /%{_lib}/`cd $RPM_BUILD_ROOT/%{_lib} ; echo lib${l}.so.*` $RPM_BUILD_ROOT%{_libdir}/lib${l}.so
 done
 
-install %{SOURCE2}		$RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
-install %{SOURCE3}		$RPM_BUILD_ROOT/etc/sysconfig/nscd
-install %{SOURCE4}		$RPM_BUILD_ROOT/etc/logrotate.d/nscd
-install nscd/nscd.conf	$RPM_BUILD_ROOT%{_sysconfdir}
-install nss/nsswitch.conf	$RPM_BUILD_ROOT%{_sysconfdir}
+install -p %{SOURCE2}		$RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
+cp -p %{SOURCE3}		$RPM_BUILD_ROOT/etc/sysconfig/nscd
+cp -p %{SOURCE4}		$RPM_BUILD_ROOT/etc/logrotate.d/nscd
+cp -p nscd/nscd.conf	$RPM_BUILD_ROOT%{_sysconfdir}
+cp -p nss/nsswitch.conf	$RPM_BUILD_ROOT%{_sysconfdir}
 
 bzip2 -dc %{SOURCE5} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
 > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.cache
@@ -1224,17 +1227,17 @@
 
 %if %{with linuxthreads}
 for f in ChangeLog Changes README ; do
-	cp -f linuxthreads/$f documentation/${f}.linuxthreads
+	cp -pf linuxthreads/$f documentation/${f}.linuxthreads
 done
 %endif
 %if %{with nptl}
 for f in ANNOUNCE ChangeLog DESIGN-{barrier,condvar,rwlock,sem}.txt TODO{,-kernel,-testing} ;  do
-	cp -f nptl/$f documentation/${f}.nptl
+	cp -pf nptl/$f documentation/${f}.nptl
 done
 %endif
-cp -f crypt/README.ufc-crypt documentation
+cp -pf crypt/README.ufc-crypt documentation
 
-cp -f ChangeLog* documentation
+cp -pf ChangeLog* documentation
 
 rm -f $RPM_BUILD_ROOT%{_libdir}/libnss_*.so
 
@@ -1297,7 +1300,7 @@
 # localedb-gen infrastructure
 sed -e 's, at localedir@,%{_libdir}/locale,' %{SOURCE6} > $RPM_BUILD_ROOT%{_bindir}/localedb-gen
 chmod +x $RPM_BUILD_ROOT%{_bindir}/localedb-gen
-install localedata/SUPPORTED $RPM_BUILD_ROOT%{_datadir}/i18n
+cp -p localedata/SUPPORTED $RPM_BUILD_ROOT%{_datadir}/i18n
 
 # shutup check-files
 rm -f $RPM_BUILD_ROOT%{_mandir}/README.*
@@ -1771,6 +1774,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.583.2.103  2011/10/12 08:02:43  glen
+- add inotify support, syscalls inlined if <sys/inotify.h> included
+
 Revision 1.583.2.102  2009/11/06 14:47:42  glen
 - SUPPORTED_LOCALES must be set first; rel 18
 

================================================================
Index: packages/glibc/inotify.h
diff -u /dev/null packages/glibc/inotify.h:1.1.2.1
--- /dev/null	Wed Oct 12 10:02:48 2011
+++ packages/glibc/inotify.h	Wed Oct 12 10:02:43 2011
@@ -0,0 +1,167 @@
+/*
+ * This header is used if <sys/inotify.h> cannot be found.
+ *
+ * Inode based directory notification for Linux
+ *
+ * Copyright (C) 2005 John McCutchan
+ */
+
+#ifndef _LINUX_INOTIFY_H
+#define _LINUX_INOTIFY_H
+
+#include <stdint.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+/*
+ * struct inotify_event - structure read from the inotify device for each event
+ *
+ * When you are watching a directory, you will receive the filename for events
+ * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd.
+ */
+struct inotify_event {
+	int		wd;		/* watch descriptor */
+	uint32_t		mask;		/* watch mask */
+	uint32_t		cookie;		/* cookie to synchronize two events */
+	uint32_t		len;		/* length (including nulls) of name */
+	char		name __flexarr;	/* stub for possible name */
+};
+
+/* the following are legal, implemented events that user-space can watch for */
+#define IN_ACCESS		0x00000001	/* File was accessed */
+#define IN_MODIFY		0x00000002	/* File was modified */
+#define IN_ATTRIB		0x00000004	/* Metadata changed */
+#define IN_CLOSE_WRITE		0x00000008	/* Writtable file was closed */
+#define IN_CLOSE_NOWRITE	0x00000010	/* Unwrittable file closed */
+#define IN_OPEN			0x00000020	/* File was opened */
+#define IN_MOVED_FROM		0x00000040	/* File was moved from X */
+#define IN_MOVED_TO		0x00000080	/* File was moved to Y */
+#define IN_CREATE		0x00000100	/* Subfile was created */
+#define IN_DELETE		0x00000200	/* Subfile was deleted */
+#define IN_DELETE_SELF		0x00000400	/* Self was deleted */
+#define IN_MOVE_SELF		0x00000800	/* Self was moved */
+
+/* the following are legal events.  they are sent as needed to any watch */
+#define IN_UNMOUNT		0x00002000	/* Backing fs was unmounted */
+#define IN_Q_OVERFLOW		0x00004000	/* Event queued overflowed */
+#define IN_IGNORED		0x00008000	/* File was ignored */
+
+/* helper events */
+#define IN_CLOSE		(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
+#define IN_MOVE			(IN_MOVED_FROM | IN_MOVED_TO) /* moves */
+
+/* special flags */
+#define IN_ONLYDIR		0x01000000	/* only watch the path if it is a directory */
+#define IN_DONT_FOLLOW		0x02000000	/* don't follow a sym link */
+#define IN_MASK_ADD		0x20000000	/* add to the mask of an already existing watch */
+#define IN_ISDIR		0x40000000	/* event occurred against dir */
+#define IN_ONESHOT		0x80000000	/* only send event once */
+
+/*
+ * All of the events - we build the list by hand so that we can add flags in
+ * the future and not break backward compatibility.  Apps will get only the
+ * events that they originally wanted.  Be sure to add new events here!
+ */
+#define IN_ALL_EVENTS	(IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
+			 IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
+			 IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \
+			 IN_MOVE_SELF)
+
+#if defined (__alpha__)
+# define __NR_inotify_init 444
+# define __NR_inotify_add_watch 445
+# define __NR_inotify_rm_watch 446
+
+#elif defined (__arm__)
+# define __NR_inotify_init (__NR_SYSCALL_BASE+316)
+# define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317)
+# define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318)
+
+#elif defined (__frv__)
+# define __NR_inotify_init 291
+# define __NR_inotify_add_watch 292
+# define __NR_inotify_rm_watch 293
+
+#elif defined(__i386__)
+# define __NR_inotify_init 291
+# define __NR_inotify_add_watch 292
+# define __NR_inotify_rm_watch 293
+
+#elif defined (__ia64__)
+# define __NR_inotify_init 1277
+# define __NR_inotify_add_watch 1278
+# define __NR_inotify_rm_watch 1279
+
+#elif defined (__mips__)
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+#  define __NR_inotify_init (__NR_Linux + 284)
+#  define __NR_inotify_add_watch (__NR_Linux + 285)
+#  define __NR_inotify_rm_watch (__NR_Linux + 286)
+# endif
+# if _MIPS_SIM == _MIPS_SIM_ABI64
+#  define __NR_inotify_init (__NR_Linux + 243)
+#  define __NR_inotify_add_watch (__NR_Linux + 243)
+#  define __NR_inotify_rm_watch (__NR_Linux + 243)
+# endif
+# if _MIPS_SIM == _MIPS_SIM_NABI32
+#  define __NR_inotify_init (__NR_Linux + 247)
+#  define __NR_inotify_add_watch (__NR_Linux + 248)
+#  define __NR_inotify_rm_watch (__NR_Linux + 249)
+# endif
+
+#elif defined(__parisc__)
+# define __NR_inotify_init (__NR_Linux + 269)
+# define __NR_inotify_add_watch (__NR_Linux + 270)
+# define __NR_inotify_rm_watch (__NR_Linux + 271)
+
+#elif defined(__powerpc__) || defined(__powerpc64__)
+# define __NR_inotify_init 275
+# define __NR_inotify_add_watch 276
+# define __NR_inotify_rm_watch 277
+
+#elif defined (__s390__)
+# define __NR_inotify_init 284
+# define __NR_inotify_add_watch 285
+# define __NR_inotify_rm_watch 286
+
+#elif defined (__sh__)
+# define __NR_inotify_init 290
+# define __NR_inotify_add_watch 291
+# define __NR_inotify_rm_watch 292
+
+#elif defined (__sh64__)
+# define __NR_inotify_init 318
+# define __NR_inotify_add_watch 319
+# define __NR_inotify_rm_watch 320
+
+#elif defined (__sparc__) || defined (__sparc64__)
+# define __NR_inotify_init 151
+# define __NR_inotify_add_watch 152
+# define __NR_inotify_rm_watch 156
+
+#elif defined(__x86_64__)
+# define __NR_inotify_init 253
+# define __NR_inotify_add_watch 254
+# define __NR_inotify_rm_watch 255
+
+#else
+# error "Unsupported architecture!"
+#endif
+
+static inline int inotify_init (void)
+{
+	return syscall (__NR_inotify_init);
+}
+
+static inline int inotify_add_watch (int fd, const char *name, uint32_t mask)
+{
+	return syscall (__NR_inotify_add_watch, fd, name, mask);
+}
+
+static inline int inotify_rm_watch (int fd, uint32_t wd)
+{
+	return syscall (__NR_inotify_rm_watch, fd, wd);
+}
+
+
+#endif	/* _LINUX_INOTIFY_H */
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/glibc/glibc.spec?r1=1.583.2.102&r2=1.583.2.103&f=u



More information about the pld-cvs-commit mailing list