Date: Sunday, November 21, 2010 @ 14:35:10
  Author: stephane
Revision: 100210

upgpkg: findutils 4.5.9-1
rebuild of old package, tidy up PKGBUILD, fix bug in handling of -execdir

Added:
  findutils/trunk/findutils-4.5.9-execdir.patch
Modified:
  findutils/trunk/PKGBUILD
  findutils/trunk/findutils.install

-------------------------------+
 PKGBUILD                      |   32 ++++++------
 findutils-4.5.9-execdir.patch |  106 ++++++++++++++++++++++++++++++++++++++++
 findutils.install             |    2 
 3 files changed, 125 insertions(+), 15 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2010-11-21 18:53:17 UTC (rev 100209)
+++ PKGBUILD    2010-11-21 19:35:10 UTC (rev 100210)
@@ -1,32 +1,36 @@
 # $Id$
-# Maintainer: 
+# Maintainer:
 
 pkgname=findutils
-pkgver=4.4.2
-pkgrel=2
+pkgver=4.5.9
+pkgrel=1
 pkgdesc="GNU utilities to locate files"
 arch=('i686' 'x86_64')
 license=('GPL3')
 groups=('base')
 depends=('glibc' 'sh')
 url="http://www.gnu.org/software/findutils";
-source=(ftp://ftp.gnu.org/pub/gnu/findutils/findutils-$pkgver.tar.gz)
+source=(ftp://alpha.gnu.org/gnu/findutils/${pkgname}-${pkgver}.tar.gz 
findutils-4.5.9-execdir.patch)
 install=findutils.install
-md5sums=('351cc4adb07d54877fa15f75fb77d39f')
+sha1sums=('7bfaadeb7a93c1bd959a360ecb0971a63ff43677'
+          '0c44872ea89b85c509c780b8096a23f1c2db96fe')
 
 build() {
-  cd $srcdir/$pkgname-$pkgver
+  cd "${srcdir}/${pkgname}-${pkgver}"
+
+  # Fix some bugs in handling of -execdir, including upstream commit 443487e
+  # and the proposed fix for https://savannah.gnu.org/bugs/index.php?29949
+  patch -Np1 -i ../findutils-4.5.9-execdir.patch
+
+  # Don't build or install locate because we use mlocate,
+  # which is a secure version of locate.
+  sed -i '/^SUBDIRS/s/locate//' Makefile.in
+
   ./configure --prefix=/usr
-  make || return 1
+  make
 }
 
 package() {
-  cd $srcdir/$pkgname-$pkgver
+  cd "${srcdir}/${pkgname}-${pkgver}"
   make DESTDIR=$pkgdir install
-  rm -rf $pkgdir/usr/{libexec,var}
-
-  # remove locate utils (we use mlocate instead)
-  rm -f $pkgdir/usr/bin/{locate,updatedb}
-  rm -f $pkgdir/usr/share/man/man1/{updatedb.1,locate.1}
-  rm -f $pkgdir/usr/share/man/man5/locatedb.5
 }

Added: findutils-4.5.9-execdir.patch
===================================================================
--- findutils-4.5.9-execdir.patch                               (rev 0)
+++ findutils-4.5.9-execdir.patch       2010-11-21 19:35:10 UTC (rev 100210)
@@ -0,0 +1,106 @@
+ ChangeLog                                    |   18 ++++++++++++++++++
+ NEWS                                         |    4 ++++
+ find/pred.c                                  |   10 ++++------
+ find/testsuite/find.gnu/execdir-multiple.exp |    1 +
+ lib/dircallback.c                            |    7 ++++++-
+ 5 files changed, 33 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ba12e93..e2451c4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,21 @@
++2010-05-24  Kamil Dudka  <[email protected]>
++
++      Fix Savannah bug #29949, -execdir does not change working directory
++      * find/pred.c (record_exec_dir): Do not throw the execdir when not
++      working in the cumulative mode.
++      * find/testsuite/find.gnu/execdir-multiple.exp: Add a test-case for
++      the bug #29949.
++      * NEWS: Mention this bugfix.
++
++2010-05-07  Kamil Dudka  <[email protected]>
++
++      * lib/dircallback.c (run_in_dir): Make sure that if the callback
++      doesn't get run, the return value is nonzero.  Make sure that if
++      the directory save/restore fails, we don't overwrite errno with a
++      random value (and hence report some unrelated and nonexistent
++      error, instead of the real problem).  Restore the previous current
++      directory.
++
+ 2010-04-29  James Youngman  <[email protected]>
+ 
+       Prepare for the release of findutils version 4.5.9.
+diff --git a/NEWS b/NEWS
+index e27a834..cae1eab 100644
+--- a/NEWS
++++ b/NEWS
+@@ -1,5 +1,9 @@
+ GNU findutils NEWS - User visible changes.      -*- outline -*- (allout)
+ 
++** Bug Fixes
++
++#29949: find -execdir does not change working directory
++
+ * Major changes in release 4.5.9, 2010-04-29
+ 
+ ** Bug Fixes
+diff --git a/find/pred.c b/find/pred.c
+index 6eeaa42..0efb55f 100644
+--- a/find/pred.c
++++ b/find/pred.c
+@@ -528,13 +528,11 @@ initialise_wd_for_exec (struct exec_val *execp, int 
cwd_fd, const char *dir)
+ static bool
+ record_exec_dir (struct exec_val *execp)
+ {
+-  if (!execp->wd_for_exec)
++  /* working directory not already known, so must be a *dir variant,
++     and this must be the first arg we added.   However, this may
++     be -execdir foo {} \; (i.e. not multiple).  */
++  if (!execp->state.todo)
+     {
+-      /* working directory not already known, so must be a *dir variant,
+-       and this must be the first arg we added.   However, this may
+-       be -execdir foo {} \; (i.e. not multiple).  */
+-      assert (!execp->state.todo);
+-
+       /* Record the WD. If we're using -L or fts chooses to do so for
+        any other reason, state.cwd_dir_fd may in fact not be the
+        directory containing the target file.  When this happens,
+diff --git a/find/testsuite/find.gnu/execdir-multiple.exp 
b/find/testsuite/find.gnu/execdir-multiple.exp
+index 6d4bd66..495b93b 100644
+--- a/find/testsuite/find.gnu/execdir-multiple.exp
++++ b/find/testsuite/find.gnu/execdir-multiple.exp
+@@ -49,6 +49,7 @@ if { [ safe_path ] } {
+     }
+ 
+     set SKIP_OLD 1
++    find_start p {tmp -type f -empty -execdir sh ./runme \{\} \; } ""
+     find_start p {tmp -type f -empty -execdir sh ./runme  \{\} + } ""
+     set SKIP_OLD 0
+     exec rm -rf tmp
+diff --git a/lib/dircallback.c b/lib/dircallback.c
+index 8497bee..c1e4088 100644
+--- a/lib/dircallback.c
++++ b/lib/dircallback.c
+@@ -37,7 +37,8 @@ int
+ run_in_dir (const struct saved_cwd *there,
+           int (*callback)(void*), void *usercontext)
+ {
+-  int err, saved_errno;
++  int err = -1;
++  int saved_errno = 0;
+   struct saved_cwd here;
+   if (0 == save_cwd (&here))
+     {
+@@ -50,6 +51,10 @@ run_in_dir (const struct saved_cwd *there,
+       {
+         openat_restore_fail (errno);
+       }
++
++      if (restore_cwd (&here) != 0)
++      openat_restore_fail (errno);
++
+       free_cwd (&here);
+     }
+   else

Modified: findutils.install
===================================================================
--- findutils.install   2010-11-21 18:53:17 UTC (rev 100209)
+++ findutils.install   2010-11-21 19:35:10 UTC (rev 100210)
@@ -1,5 +1,5 @@
 infodir=/usr/share/info
-filelist=(find-maint.info find.info)
+filelist=(find-maint.info find.info find.info-1)
 
 post_install() {
   [ -x usr/bin/install-info ] || return 0

Reply via email to