packages (AC-branch): coreutils/coreutils.spec, coreutils/inotify-nosys.pat...

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


Author: glen                         Date: Wed Oct 12 08:06:02 2011 GMT
Module: packages                      Tag: AC-branch
---- Log message:
- enable inotify support in tail

---- Files affected:
packages/coreutils:
   coreutils.spec (1.175.2.2 -> 1.175.2.3) , inotify-nosys.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/coreutils/coreutils.spec
diff -u packages/coreutils/coreutils.spec:1.175.2.2 packages/coreutils/coreutils.spec:1.175.2.3
--- packages/coreutils/coreutils.spec:1.175.2.2	Mon Apr  4 11:13:45 2011
+++ packages/coreutils/coreutils.spec	Wed Oct 12 10:05:57 2011
@@ -8,7 +8,7 @@
 Summary(pl.UTF-8):	GNU Core-utils - podstawowe narzędzia działające z linii poleceń
 Name:		coreutils
 Version:	8.10
-Release:	3
+Release:	4
 License:	GPL v3+
 Group:		Applications/System
 Source0:	http://ftp.gnu.org/gnu/coreutils/%{name}-%{version}.tar.xz
@@ -31,7 +31,7 @@
 Patch5:		%{name}-date-man.patch
 Patch6:		%{name}-mem.patch
 Patch7:		%{name}-7.4-sttytcsadrain.patch
-
+Patch8:		inotify.patch
 Patch9:		%{name}-fmt-wchars.patch
 Patch10:	%{name}-runuser.patch
 Patch11:	%{name}-split-pam.patch
@@ -47,6 +47,7 @@
 BuildRequires:	automake >= 1:1.11.1
 BuildRequires:	gcc >= 5:3.2
 BuildRequires:	gettext-devel >= 0.17
+BuildRequires:	glibc-headers >= 6:2.3.6-17
 BuildRequires:	gmp-devel
 BuildRequires:	help2man
 BuildRequires:	libcap-devel
@@ -121,6 +122,7 @@
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
+%patch8 -p1
 %patch9 -p1
 %patch10 -p1
 %patch11 -p1
@@ -256,6 +258,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.175.2.3  2011/10/12 08:05:57  glen
+- enable inotify support in tail
+
 Revision 1.175.2.2  2011/04/04 09:13:45  glen
 - bugfix
 

================================================================
Index: packages/coreutils/inotify-nosys.patch
diff -u /dev/null packages/coreutils/inotify-nosys.patch:1.1
--- /dev/null	Wed Oct 12 10:06:02 2011
+++ packages/coreutils/inotify-nosys.patch	Wed Oct 12 10:05:57 2011
@@ -0,0 +1,213 @@
+--- coreutils-8.10/m4/jm-macros.m4~	2011-10-11 21:46:32.000000000 +0300
++++ coreutils-8.10/m4/jm-macros.m4	2011-10-11 21:46:35.895126130 +0300
+@@ -67,9 +67,21 @@
+   AC_CHECK_FUNCS_ONCE([nl_langinfo])
+ 
+   # Used by tail.c.
+-  AC_CHECK_FUNCS([inotify_init],
+-    [AC_DEFINE([HAVE_INOTIFY], [1],
+-     [Define to 1 if you have usable inotify support.])])
++  AC_MSG_CHECKING([whether sys/inotify.h actually works])
++  AC_RUN_IFELSE(
++    AC_LANG_PROGRAM([[#include <sys/inotify.h>]],
++                    [[return (-1 == inotify_init());]]
++    ),
++    [
++      AC_MSG_RESULT([yup])
++      AC_DEFINE([SYS_INOTIFY_H_EXISTS_AND_WORKS],[1],[sys/inotify.h exists and works correctly])
++    ],
++    [
++      AC_MSG_RESULT([nope, using own inotify headers])
++    ]
++    AC_DEFINE([HAVE_INOTIFY], [1],
++     [Define to 1 if you have usable inotify support.])
++  )
+ 
+   AC_CHECK_FUNCS_ONCE( \
+     endgrent \
+--- coreutils-8.10/src/tail.c~	2011-01-31 14:40:38.000000000 +0200
++++ coreutils-8.10/src/tail.c	2011-10-11 22:40:08.891065080 +0300
+@@ -48,7 +48,13 @@
+ 
+ #if HAVE_INOTIFY
+ # include "hash.h"
++
++#ifdef SYS_INOTIFY_H_EXISTS_AND_WORKS
+ # include <sys/inotify.h>
++#else
++#include "inotify-nosys.h"
++#endif
++
+ /* `select' is used by tail_forever_inotify.  */
+ # include <sys/select.h>
+ 
+--- /dev/null	2008-11-04 20:33:38.146691408 +0200
++++ coreutils-8.10/lib/inotify-nosys.h	2007-12-30 10:50:22.000000000 +0200
+@@ -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/coreutils/coreutils.spec?r1=1.175.2.2&r2=1.175.2.3&f=u



More information about the pld-cvs-commit mailing list