--- /dev/null
+From 85717b68b03bf85016c5079fbbf0c8aa2b182ba6 Mon Sep 17 00:00:00 2001
+From: Pádraig Brady <P@draigBrady.com>
+Date: Mon, 18 Jan 2016 17:29:28 +0000
+Subject: fts: don't unconditionally use leaf optimization for NFS
+
+NFS st_nlink are not accurate on all implementations,
+leading to aborts() if that assumption is made.
+See <https://bugzilla.redhat.com/1299169>
+* lib/fts.c (leaf_optimization_applies): Remove NFS from
+the white list, and document the issue.
+---
+(limited to 'lib/fts.c')
+
+diff --git a/lib/fts.c b/lib/fts.c
+index 7e9aca6..2c9df2f 100644
+--- a/gl/lib/fts.c
++++ b/gl/lib/fts.c
+@@ -718,22 +718,23 @@ leaf_optimization_applies (int dir_fd)
+
+ switch (fs_buf.f_type)
+ {
+- case S_MAGIC_NFS:
+- /* NFS provides usable dirent.d_type but not necessarily for all entries
+- of large directories. See <https://bugzilla.redhat.com/1252549>. */
+- return true;
+-
+ /* List here the file system types that lack usable dirent.d_type
+ info, yet for which the optimization does apply. */
+ case S_MAGIC_REISERFS:
+ case S_MAGIC_XFS:
+ return true;
+
++ /* Explicitly list here any other file system type for which the
++ optimization is not applicable, but need documentation. */
++ case S_MAGIC_NFS:
++ /* NFS provides usable dirent.d_type but not necessarily for all entries
++ of large directories, so as per <https://bugzilla.redhat.com/1252549>
++ NFS should return true. However st_nlink values are not accurate on
++ all implementations as per <https://bugzilla.redhat.com/1299169>. */
++ /* fall through */
+ case S_MAGIC_PROC:
+- /* Explicitly listing this or any other file system type for which
+- the optimization is not applicable is not necessary, but we leave
+- it here to document the risk. Per http://bugs.debian.org/143111,
+- /proc may have bogus stat.st_nlink values. */
++ /* Per <http://bugs.debian.org/143111> /proc may have
++ bogus stat.st_nlink values. */
+ /* fall through */
+ default:
+ return false;
+--
+cgit v0.9.0.2
--- /dev/null
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+inherit eutils flag-o-matic toolchain-funcs python-any-r1
+
+DESCRIPTION="GNU utilities for finding files"
+HOMEPAGE="https://www.gnu.org/software/findutils/"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="debug nls selinux static test"
+
+RDEPEND="selinux? ( sys-libs/libselinux )
+ nls? ( virtual/libintl )"
+DEPEND="${RDEPEND}
+ test? ( ${PYTHON_DEPS} )
+ nls? ( sys-devel/gettext )"
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ # Don't build or install locate because it conflicts with slocate,
+ # which is a secure version of locate. See bug 18729
+ sed -i '/^SUBDIRS/s/locate//' Makefile.in
+
+ # Newer C libraries omit this include from sys/types.h.
+ # https://lists.gnu.org/archive/html/bug-gnulib/2016-03/msg00018.html
+ sed -i \
+ '/include.*config.h/a#ifdef MAJOR_IN_SYSMACROS\n#include <sys/sysmacros.h>\n#endif\n' \
+ gl/lib/mountlist.c || die
+
+ epatch "${FILESDIR}"/${P}-gnulib-mb.patch #576818
+ epatch "${FILESDIR}"/${P}-gnulib-S_MAGIC_NFS.patch #580032
+}
+
+src_configure() {
+ use static && append-ldflags -static
+
+ program_prefix=$(usex userland_GNU '' g)
+ econf \
+ --with-packager="Gentoo" \
+ --with-packager-version="${PVR}" \
+ --with-packager-bug-reports="https://bugs.gentoo.org/" \
+ --program-prefix=${program_prefix} \
+ $(use_enable debug) \
+ $(use_enable nls) \
+ $(use_with selinux) \
+ --libexecdir='$(libdir)'/find
+}
+
+src_compile() {
+ # We don't build locate, but the docs want a file in there.
+ emake -C locate dblocation.texi
+ default
+}