File coreutils-gnulib-tests-fix-nap-race.patch of Package coreutils

From: Bernhard Voelker <mail@bernhard-voelker.de>
Date: Mon, 20 May 2013 00:03:20 +0200
Subject: [PATCH] gnulib-tests: utimensat-tests, etc.: try to fix some races

Some nap()-related tests often fail in OBS.
Cherry-pick the following attempt to avoid some races from
upstream gnulib:
http://git.sv.gnu.org/cgit/gnulib.git/commit/?id=5191133e
To be removed with coreutils-8.22.

---
 ChangeLog                     |    5 +
 Makefile.in                   |    7 +-
 aclocal.m4                    |    1 
 configure                     |   99 ---------------------------------
 gnulib-tests/Makefile.in      |  126 ++++++++++++++++++------------------------
 gnulib-tests/gnulib.mk        |   33 +++--------
 gnulib-tests/nap.h            |  113 ++++++++++++++++++++++++-------------
 gnulib-tests/test-stat-time.c |   45 +--------------
 gnulib-tests/test-usleep.c    |   40 -------------
 gnulib-tests/usleep.c         |   58 -------------------
 lib/config.hin                |    9 ---
 m4/gnulib-comp.m4             |   10 ---
 m4/usleep.m4                  |   45 ---------------
 13 files changed, 151 insertions(+), 440 deletions(-)
 delete mode 100644 gnulib-tests/test-usleep.c
 delete mode 100644 gnulib-tests/usleep.c
 delete mode 100644 m4/usleep.m4

Index: ChangeLog
===================================================================
--- ChangeLog.orig
+++ ChangeLog
@@ -1,3 +1,8 @@
+2013-05-17  Bernhard Voelker  <mail@bernhard-voelker.de>
+
+	gnulib: cherry-pick gnulib commit 5191133e
+	utimensat-tests, etc.: try to fix some races
+
 2013-02-14  Pádraig Brady  <P@draigBrady.com>
 
 	version 8.21
Index: Makefile.in
===================================================================
--- Makefile.in.orig
+++ Makefile.in
@@ -346,10 +346,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/0
 	$(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkat.m4 \
 	$(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
 	$(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
-	$(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/utimbuf.m4 \
-	$(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
-	$(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
-	$(top_srcdir)/m4/vasnprintf.m4 \
+	$(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimecmp.m4 \
+	$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimensat.m4 \
+	$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
 	$(top_srcdir)/m4/vasprintf-posix.m4 \
 	$(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
 	$(top_srcdir)/m4/vfprintf-posix.m4 \
Index: aclocal.m4
===================================================================
--- aclocal.m4.orig
+++ aclocal.m4
@@ -1425,7 +1425,6 @@ m4_include([m4/unlinkdir.m4])
 m4_include([m4/unlocked-io.m4])
 m4_include([m4/uptime.m4])
 m4_include([m4/userspec.m4])
-m4_include([m4/usleep.m4])
 m4_include([m4/utimbuf.m4])
 m4_include([m4/utimecmp.m4])
 m4_include([m4/utimens.m4])
Index: configure
===================================================================
--- configure.orig
+++ configure
@@ -3876,7 +3876,6 @@ as_fn_append ac_func_list " sleep"
 as_fn_append ac_func_list " catgets"
 as_fn_append ac_func_list " symlinkat"
 as_fn_append ac_func_list " shutdown"
-as_fn_append ac_func_list " usleep"
 as_fn_append ac_func_list " wctob"
 as_fn_append ac_header_list " hurd.h"
 as_fn_append ac_header_list " paths.h"
@@ -7942,8 +7941,6 @@ $as_echo "$as_me: autobuild timestamp...
   # Code from module useless-if-before-free:
   # Code from module userspec:
   # Code from module userspec-tests:
-  # Code from module usleep:
-  # Code from module usleep-tests:
   # Code from module utimecmp:
   # Code from module utimens:
   # Code from module utimens-tests:
@@ -58743,102 +58740,6 @@ $as_echo "#define UNLINK_CANNOT_UNLINK_D
   abs_aux_dir=`cd "$ac_aux_dir"; pwd`
 
 
-
-
-
-  ac_fn_c_check_type "$LINENO" "useconds_t" "ac_cv_type_useconds_t" "$ac_includes_default"
-if test "x$ac_cv_type_useconds_t" = xyes; then :
-
-else
-
-$as_echo "#define useconds_t unsigned int" >>confdefs.h
-
-fi
-
-  if test $ac_cv_func_usleep = no; then
-    HAVE_USLEEP=0
-  else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether usleep allows large arguments" >&5
-$as_echo_n "checking whether usleep allows large arguments... " >&6; }
-if ${gl_cv_func_usleep_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  case "$host_os" in
-                   # Guess yes on glibc systems.
-           *-gnu*) gl_cv_func_usleep_works="guessing yes" ;;
-                   # If we don't know, assume the worst.
-           *)      gl_cv_func_usleep_works="guessing no" ;;
-         esac
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <unistd.h>
-
-int
-main ()
-{
-return !!usleep (1000000);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gl_cv_func_usleep_works=yes
-else
-  gl_cv_func_usleep_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_usleep_works" >&5
-$as_echo "$gl_cv_func_usleep_works" >&6; }
-    case "$gl_cv_func_usleep_works" in
-      *yes) ;;
-      *)
-        REPLACE_USLEEP=1
-        ;;
-    esac
-  fi
-
-  if test $HAVE_USLEEP = 0 || test $REPLACE_USLEEP = 1; then
-
-
-
-
-
-
-
-
-  gltests_LIBOBJS="$gltests_LIBOBJS usleep.$ac_objext"
-
-  fi
-
-
-
-
-
-    if test "$GNULIB_USLEEP" != 1; then
-        if test "$GNULIB_USLEEP" = 0; then
-      GNULIB_USLEEP=$gl_module_indicator_condition
-    else
-      GNULIB_USLEEP="($GNULIB_USLEEP || $gl_module_indicator_condition)"
-    fi
-  fi
-
-
-
-
-
-$as_echo "#define GNULIB_TEST_USLEEP 1" >>confdefs.h
-
-
-
-
   abs_aux_dir=`cd "$ac_aux_dir"; pwd`
 
 
Index: gnulib-tests/Makefile.in
===================================================================
--- gnulib-tests/Makefile.in.orig
+++ gnulib-tests/Makefile.in
@@ -198,19 +198,19 @@ TESTS = test-accept$(EXEEXT) test-file-h
 	test-uc_width$(EXEEXT) uniwidth/test-uc_width2.sh \
 	test-unlink$(EXEEXT) test-unlinkat$(EXEEXT) \
 	test-unsetenv$(EXEEXT) test-update-copyright.sh \
-	test-userspec$(EXEEXT) test-usleep$(EXEEXT) \
-	test-utimens$(EXEEXT) test-utimensat$(EXEEXT) \
-	test-vasnprintf$(EXEEXT) test-vasprintf-posix$(EXEEXT) \
-	test-vasprintf$(EXEEXT) test-vc-list-files-git.sh \
-	test-vc-list-files-cvs.sh test-verify$(EXEEXT) test-verify.sh \
-	test-version-etc.sh test-vfprintf-posix.sh \
-	test-vprintf-posix.sh test-wchar$(EXEEXT) test-wcrtomb.sh \
-	test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh \
-	test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh \
-	test-wcrtomb-w32-5.sh test-wctype-h$(EXEEXT) \
-	test-wcwidth$(EXEEXT) test-write$(EXEEXT) test-xalloc-die.sh \
-	test-xprintf-posix.sh test-xstrtoimax.sh test-xstrtol.sh \
-	test-xstrtoumax.sh test-xvasprintf$(EXEEXT) test-yesno.sh
+	test-userspec$(EXEEXT) test-utimens$(EXEEXT) \
+	test-utimensat$(EXEEXT) test-vasnprintf$(EXEEXT) \
+	test-vasprintf-posix$(EXEEXT) test-vasprintf$(EXEEXT) \
+	test-vc-list-files-git.sh test-vc-list-files-cvs.sh \
+	test-verify$(EXEEXT) test-verify.sh test-version-etc.sh \
+	test-vfprintf-posix.sh test-vprintf-posix.sh \
+	test-wchar$(EXEEXT) test-wcrtomb.sh test-wcrtomb-w32-1.sh \
+	test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh \
+	test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh \
+	test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \
+	test-write$(EXEEXT) test-xalloc-die.sh test-xprintf-posix.sh \
+	test-xstrtoimax.sh test-xstrtol.sh test-xstrtoumax.sh \
+	test-xvasprintf$(EXEEXT) test-yesno.sh
 XFAIL_TESTS =
 noinst_PROGRAMS =
 check_PROGRAMS = test-accept$(EXEEXT) test-file-has-acl$(EXEEXT) \
@@ -335,19 +335,18 @@ check_PROGRAMS = test-accept$(EXEEXT) te
 	test-uc_width$(EXEEXT) test-uc_width2$(EXEEXT) \
 	test-unlink$(EXEEXT) test-unlinkat$(EXEEXT) \
 	test-unsetenv$(EXEEXT) test-userspec$(EXEEXT) \
-	test-usleep$(EXEEXT) test-utimens$(EXEEXT) \
-	test-utimensat$(EXEEXT) test-vasnprintf$(EXEEXT) \
-	test-vasprintf-posix$(EXEEXT) test-vasprintf$(EXEEXT) \
-	test-verify$(EXEEXT) test-version-etc$(EXEEXT) \
-	test-vfprintf-posix$(EXEEXT) test-vprintf-posix$(EXEEXT) \
-	test-wchar$(EXEEXT) test-wcrtomb$(EXEEXT) \
-	test-wcrtomb-w32$(EXEEXT) test-wctype-h$(EXEEXT) \
-	test-wcwidth$(EXEEXT) test-write$(EXEEXT) \
-	test-xalloc-die$(EXEEXT) test-xfprintf-posix$(EXEEXT) \
-	test-xprintf-posix$(EXEEXT) test-xstrtoimax$(EXEEXT) \
-	test-xstrtol$(EXEEXT) test-xstrtoul$(EXEEXT) \
-	test-xstrtoumax$(EXEEXT) test-xvasprintf$(EXEEXT) \
-	test-yesno$(EXEEXT)
+	test-utimens$(EXEEXT) test-utimensat$(EXEEXT) \
+	test-vasnprintf$(EXEEXT) test-vasprintf-posix$(EXEEXT) \
+	test-vasprintf$(EXEEXT) test-verify$(EXEEXT) \
+	test-version-etc$(EXEEXT) test-vfprintf-posix$(EXEEXT) \
+	test-vprintf-posix$(EXEEXT) test-wchar$(EXEEXT) \
+	test-wcrtomb$(EXEEXT) test-wcrtomb-w32$(EXEEXT) \
+	test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \
+	test-write$(EXEEXT) test-xalloc-die$(EXEEXT) \
+	test-xfprintf-posix$(EXEEXT) test-xprintf-posix$(EXEEXT) \
+	test-xstrtoimax$(EXEEXT) test-xstrtol$(EXEEXT) \
+	test-xstrtoul$(EXEEXT) test-xstrtoumax$(EXEEXT) \
+	test-xvasprintf$(EXEEXT) test-yesno$(EXEEXT)
 @POSIX_SPAWN_PORTED_TRUE@am__append_1 = test-posix_spawn1 test-posix_spawn2
 @POSIX_SPAWN_PORTED_TRUE@am__append_2 = test-posix_spawn1 test-posix_spawn2
 @POSIX_SPAWN_PORTED_TRUE@am__append_3 = test-posix_spawn1.sh \
@@ -553,10 +552,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/0
 	$(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkat.m4 \
 	$(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
 	$(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
-	$(top_srcdir)/m4/usleep.m4 $(top_srcdir)/m4/utimbuf.m4 \
-	$(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
-	$(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
-	$(top_srcdir)/m4/vasnprintf.m4 \
+	$(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimecmp.m4 \
+	$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimensat.m4 \
+	$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
 	$(top_srcdir)/m4/vasprintf-posix.m4 \
 	$(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
 	$(top_srcdir)/m4/vfprintf-posix.m4 \
@@ -693,9 +691,7 @@ test_chdir_DEPENDENCIES = libtests.a ../
 	$(am__DEPENDENCIES_1)
 test_chown_SOURCES = test-chown.c
 test_chown_OBJECTS = test-chown.$(OBJEXT)
-test_chown_LDADD = $(LDADD)
-test_chown_DEPENDENCIES = libtests.a ../lib/libcoreutils.a libtests.a \
-	$(am__DEPENDENCIES_1)
+test_chown_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 test_cloexec_SOURCES = test-cloexec.c
 test_cloexec_OBJECTS = test-cloexec.$(OBJEXT)
 test_cloexec_LDADD = $(LDADD)
@@ -784,7 +780,8 @@ test_fchmodat_OBJECTS = test-fchmodat.$(
 test_fchmodat_DEPENDENCIES = $(am__DEPENDENCIES_2)
 test_fchownat_SOURCES = test-fchownat.c
 test_fchownat_OBJECTS = test-fchownat.$(OBJEXT)
-test_fchownat_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_fchownat_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_1)
 test_fclose_SOURCES = test-fclose.c
 test_fclose_OBJECTS = test-fclose.$(OBJEXT)
 test_fclose_LDADD = $(LDADD)
@@ -820,7 +817,7 @@ test_fdopendir_DEPENDENCIES = $(am__DEPE
 test_fdutimensat_SOURCES = test-fdutimensat.c
 test_fdutimensat_OBJECTS = test-fdutimensat.$(OBJEXT)
 test_fdutimensat_DEPENDENCIES = $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 test_fflush_SOURCES = test-fflush.c
 test_fflush_OBJECTS = test-fflush.$(OBJEXT)
 test_fflush_LDADD = $(LDADD)
@@ -1005,7 +1002,7 @@ test_ftruncate_DEPENDENCIES = libtests.a
 test_futimens_SOURCES = test-futimens.c
 test_futimens_OBJECTS = test-futimens.$(OBJEXT)
 test_futimens_DEPENDENCIES = $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 test_fwrite_SOURCES = test-fwrite.c
 test_fwrite_OBJECTS = test-fwrite.$(OBJEXT)
 test_fwrite_LDADD = $(LDADD)
@@ -1156,9 +1153,7 @@ test_langinfo_DEPENDENCIES = libtests.a
 	libtests.a $(am__DEPENDENCIES_1)
 test_lchown_SOURCES = test-lchown.c
 test_lchown_OBJECTS = test-lchown.$(OBJEXT)
-test_lchown_LDADD = $(LDADD)
-test_lchown_DEPENDENCIES = libtests.a ../lib/libcoreutils.a libtests.a \
-	$(am__DEPENDENCIES_1)
+test_lchown_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 test_link_SOURCES = test-link.c
 test_link_OBJECTS = test-link.$(OBJEXT)
 test_link_DEPENDENCIES = $(am__DEPENDENCIES_2)
@@ -1564,9 +1559,8 @@ test_stat_OBJECTS = test-stat.$(OBJEXT)
 test_stat_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 test_stat_time_SOURCES = test-stat-time.c
 test_stat_time_OBJECTS = test-stat-time.$(OBJEXT)
-test_stat_time_LDADD = $(LDADD)
-test_stat_time_DEPENDENCIES = libtests.a ../lib/libcoreutils.a \
-	libtests.a $(am__DEPENDENCIES_1)
+test_stat_time_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_1)
 test_statat_SOURCES = test-statat.c
 test_statat_OBJECTS = test-statat.$(OBJEXT)
 test_statat_DEPENDENCIES = $(am__DEPENDENCIES_2)
@@ -1787,19 +1781,14 @@ test_unsetenv_DEPENDENCIES = libtests.a
 test_userspec_SOURCES = test-userspec.c
 test_userspec_OBJECTS = test-userspec.$(OBJEXT)
 test_userspec_DEPENDENCIES = $(am__DEPENDENCIES_2)
-test_usleep_SOURCES = test-usleep.c
-test_usleep_OBJECTS = test-usleep.$(OBJEXT)
-test_usleep_LDADD = $(LDADD)
-test_usleep_DEPENDENCIES = libtests.a ../lib/libcoreutils.a libtests.a \
-	$(am__DEPENDENCIES_1)
 test_utimens_SOURCES = test-utimens.c
 test_utimens_OBJECTS = test-utimens.$(OBJEXT)
 test_utimens_DEPENDENCIES = $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 test_utimensat_SOURCES = test-utimensat.c
 test_utimensat_OBJECTS = test-utimensat.$(OBJEXT)
 test_utimensat_DEPENDENCIES = $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 test_vasnprintf_SOURCES = test-vasnprintf.c
 test_vasnprintf_OBJECTS = test-vasnprintf.$(OBJEXT)
 test_vasnprintf_LDADD = $(LDADD)
@@ -1990,7 +1979,7 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_
 	$(test_u8_mbtoucr_SOURCES) $(test_u8_uctomb_SOURCES) \
 	$(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \
 	test-uname.c test-unistd.c test-unlink.c test-unlinkat.c \
-	test-unsetenv.c test-userspec.c test-usleep.c test-utimens.c \
+	test-unsetenv.c test-userspec.c test-utimens.c \
 	test-utimensat.c test-vasnprintf.c test-vasprintf.c \
 	test-vasprintf-posix.c test-verify.c test-version-etc.c \
 	test-vfprintf-posix.c test-vprintf-posix.c test-wchar.c \
@@ -2077,7 +2066,7 @@ DIST_SOURCES = $(libtests_a_SOURCES) $(E
 	$(test_u8_mbtoucr_SOURCES) $(test_u8_uctomb_SOURCES) \
 	$(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \
 	test-uname.c test-unistd.c test-unlink.c test-unlinkat.c \
-	test-unsetenv.c test-userspec.c test-usleep.c test-utimens.c \
+	test-unsetenv.c test-userspec.c test-utimens.c \
 	test-utimensat.c test-vasnprintf.c test-vasprintf.c \
 	test-vasprintf-posix.c test-verify.c test-version-etc.c \
 	test-vfprintf-posix.c test-vprintf-posix.c test-wchar.c \
@@ -3725,7 +3714,7 @@ EXTRA_DIST = accept.c w32sock.h test-acc
 	test-spawn-pipe.sh test-spawn-pipe-main.c \
 	test-spawn-pipe-child.c macros.h test-spawn.c test-stat.h \
 	test-stat.c signature.h macros.h test-stat-time.c macros.h \
-	test-statat.c test-stdalign.c macros.h test-stdbool.c \
+	nap.h test-statat.c test-stdalign.c macros.h test-stdbool.c \
 	test-stddef.c test-stdint.c test-stdio.c test-stdlib.c \
 	test-sys_wait.h test-strchrnul.c signature.h macros.h \
 	test-strerror.c signature.h macros.h strerror_r.c \
@@ -3753,10 +3742,9 @@ EXTRA_DIST = accept.c w32sock.h test-acc
 	test-unlink.c signature.h macros.h test-unlinkat.c \
 	test-rmdir.h test-unlink.h signature.h macros.h unlinkdir.h \
 	test-unsetenv.c signature.h macros.h test-update-copyright.sh \
-	test-userspec.c usleep.c test-usleep.c signature.h macros.h \
-	nap.h test-futimens.h test-lutimens.h test-utimens.h \
-	test-utimens-common.h test-utimens.c macros.h nap.h \
-	test-lutimens.h test-utimens.h test-utimens-common.h \
+	test-userspec.c nap.h test-futimens.h test-lutimens.h \
+	test-utimens.h test-utimens-common.h test-utimens.c macros.h \
+	nap.h test-lutimens.h test-utimens.h test-utimens-common.h \
 	test-utimensat.c signature.h macros.h test-vasnprintf.c \
 	macros.h test-vasprintf-posix.c minus-zero.h infinity.h nan.h \
 	macros.h test-vasprintf.c signature.h macros.h \
@@ -3827,8 +3815,8 @@ libtests_a_LIBADD = $(gltests_LIBOBJS)
 libtests_a_DEPENDENCIES = $(gltests_LIBOBJS)
 EXTRA_libtests_a_SOURCES = accept.c bind.c connect.c inet_pton.c \
 	ioctl.c listen.c perror.c pipe.c setlocale.c setsockopt.c \
-	sleep.c socket.c strerror_r.c at-func.c symlinkat.c usleep.c \
-	wctob.c wctomb.c
+	sleep.c socket.c strerror_r.c at-func.c symlinkat.c wctob.c \
+	wctomb.c
 AM_LIBTOOLFLAGS = --preserve-dup-deps
 test_accept_LDADD = $(LDADD) @LIBSOCKET@
 test_file_has_acl_LDADD = $(LDADD) $(LIB_ACL)
@@ -3839,6 +3827,7 @@ test_areadlinkat_LDADD = $(LDADD) @LIBIN
 test_argmatch_LDADD = $(LDADD) @LIBINTL@
 test_bind_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
 test_canonicalize_LDADD = $(LDADD) @LIBINTL@
+test_chown_LDADD = $(LDADD) $(LIB_NANOSLEEP)
 test_closein_LDADD = $(LDADD) @LIBINTL@
 test_connect_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
 # Link with libintl when needed. dirent-safer uses fdopendir if it is present,
@@ -3849,15 +3838,17 @@ test_exclude_LDADD = $(LDADD) @LIBINTL@
 test_faccessat_LDADD = $(LDADD) $(LIB_EACCESS) @LIBINTL@
 test_fchdir_LDADD = $(LDADD) $(LIBINTL)
 test_fchmodat_LDADD = $(LDADD) @LIBINTL@
-test_fchownat_LDADD = $(LDADD) @LIBINTL@
+test_fchownat_LDADD = $(LDADD) $(LIB_NANOSLEEP) @LIBINTL@
 test_fdatasync_LDADD = $(LDADD) $(LIB_FDATASYNC)
 test_fdopendir_LDADD = $(LDADD) @LIBINTL@
-test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) \
+  $(LIB_NANOSLEEP) @LIBINTL@
+
 test_filenamecat_LDADD = $(LDADD) @LIBINTL@
 test_frexp_nolibm_SOURCES = test-frexp.c randomd.c
 test_frexpl_nolibm_SOURCES = test-frexpl.c randoml.c
 test_fstatat_LDADD = $(LDADD) @LIBINTL@
-test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@
 test_getaddrinfo_LDADD = $(LDADD) @GETADDRINFO_LIB@ @LIBINTL@
 test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL)
 test_getcwd_LDADD = $(LDADD) @LIBINTL@
@@ -3867,6 +3858,7 @@ test_getopt_LDADD = $(LDADD) $(LIBINTL)
 test_iconv_LDADD = $(LDADD) @LIBICONV@
 test_inet_ntop_LDADD = $(LDADD) @INET_NTOP_LIB@
 test_inet_pton_LDADD = $(LDADD) @INET_PTON_LIB@
+test_lchown_LDADD = $(LDADD) $(LIB_NANOSLEEP)
 test_link_LDADD = $(LDADD) @LIBINTL@
 test_linkat_LDADD = $(LDADD) @LIBINTL@
 test_listen_LDADD = $(LDADD) @LIBSOCKET@
@@ -3902,6 +3894,7 @@ test_spawn_pipe_main_LDADD = $(LDADD) @L
 # Therefore don't link it against any libraries other than -lc.
 test_spawn_pipe_child_LDADD = 
 test_stat_LDADD = $(LDADD) $(LIBINTL)
+test_stat_time_LDADD = $(LDADD) $(LIB_NANOSLEEP)
 test_statat_LDADD = $(LDADD) @LIBINTL@
 test_striconv_LDADD = $(LDADD) @LIBICONV@
 test_strsignal_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD)
@@ -3920,8 +3913,8 @@ test_uc_width2_SOURCES = uniwidth/test-u
 test_uc_width2_LDADD = $(LDADD) $(LIBUNISTRING)
 test_unlinkat_LDADD = $(LDADD) @LIBINTL@
 test_userspec_LDADD = $(LDADD) @LIBINTL@
-test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
-test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@
+test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@
 test_version_etc_LDADD = $(LDADD) @LIBINTL@
 test_xalloc_die_LDADD = $(LDADD) @LIBINTL@
 test_xfprintf_posix_LDADD = $(LDADD) @LIBINTL@
@@ -4893,9 +4886,6 @@ test-unsetenv$(EXEEXT): $(test_unsetenv_
 test-userspec$(EXEEXT): $(test_userspec_OBJECTS) $(test_userspec_DEPENDENCIES) $(EXTRA_test_userspec_DEPENDENCIES) 
 	@rm -f test-userspec$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_userspec_OBJECTS) $(test_userspec_LDADD) $(LIBS)
-test-usleep$(EXEEXT): $(test_usleep_OBJECTS) $(test_usleep_DEPENDENCIES) $(EXTRA_test_usleep_DEPENDENCIES) 
-	@rm -f test-usleep$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(test_usleep_OBJECTS) $(test_usleep_LDADD) $(LIBS)
 test-utimens$(EXEEXT): $(test_utimens_OBJECTS) $(test_utimens_DEPENDENCIES) $(EXTRA_test_utimens_DEPENDENCIES) 
 	@rm -f test-utimens$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(test_utimens_OBJECTS) $(test_utimens_LDADD) $(LIBS)
@@ -5252,7 +5242,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unsetenv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-userspec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-usleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-utimens.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-utimensat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-vasnprintf.Po@am__quote@
@@ -5280,7 +5269,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tls-test-tls.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_xvasprintf-test-xvasprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkdir.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctob.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctomb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/thread.Po@am__quote@
@@ -6223,8 +6211,6 @@ test-update-copyright.sh.log: test-updat
 	@p='test-update-copyright.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 test-userspec.log: test-userspec$(EXEEXT)
 	@p='test-userspec$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
-test-usleep.log: test-usleep$(EXEEXT)
-	@p='test-usleep$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 test-utimens.log: test-utimens$(EXEEXT)
 	@p='test-utimens$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 test-utimensat.log: test-utimensat$(EXEEXT)
Index: gnulib-tests/gnulib.mk
===================================================================
--- gnulib-tests/gnulib.mk.orig
+++ gnulib-tests/gnulib.mk
@@ -261,6 +261,7 @@ EXTRA_DIST += test-chdir.c signature.h m
 
 TESTS += test-chown
 check_PROGRAMS += test-chown
+test_chown_LDADD = $(LDADD) $(LIB_NANOSLEEP)
 EXTRA_DIST += nap.h test-chown.h test-chown.c signature.h macros.h
 
 ## end   gnulib module chown-tests
@@ -459,7 +460,7 @@ EXTRA_DIST += test-fchmodat.c signature.
 
 TESTS += test-fchownat
 check_PROGRAMS += test-fchownat
-test_fchownat_LDADD = $(LDADD) @LIBINTL@
+test_fchownat_LDADD = $(LDADD) $(LIB_NANOSLEEP) @LIBINTL@
 EXTRA_DIST += nap.h test-chown.h test-lchown.h test-fchownat.c signature.h macros.h
 
 ## end   gnulib module fchownat-tests
@@ -526,7 +527,8 @@ EXTRA_DIST += test-fdopendir.c signature
 
 TESTS += test-fdutimensat
 check_PROGRAMS += test-fdutimensat
-test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) \
+  $(LIB_NANOSLEEP) @LIBINTL@
 EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-fdutimensat.c macros.h
 
 ## end   gnulib module fdutimensat-tests
@@ -780,7 +782,7 @@ EXTRA_DIST += test-ftruncate.c test-ftru
 
 TESTS += test-futimens
 check_PROGRAMS += test-futimens
-test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_futimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@
 EXTRA_DIST += nap.h test-futimens.h test-utimens-common.h test-futimens.c signature.h macros.h
 
 ## end   gnulib module futimens-tests
@@ -1104,6 +1106,7 @@ EXTRA_DIST += test-langinfo.c
 
 TESTS += test-lchown
 check_PROGRAMS += test-lchown
+test_lchown_LDADD = $(LDADD) $(LIB_NANOSLEEP)
 EXTRA_DIST += nap.h test-lchown.h test-lchown.c signature.h macros.h
 
 ## end   gnulib module lchown-tests
@@ -1963,7 +1966,8 @@ EXTRA_DIST += test-stat.h test-stat.c si
 
 TESTS += test-stat-time
 check_PROGRAMS += test-stat-time
-EXTRA_DIST += test-stat-time.c macros.h
+test_stat_time_LDADD = $(LDADD) $(LIB_NANOSLEEP)
+EXTRA_DIST += test-stat-time.c macros.h nap.h
 
 ## end   gnulib module stat-time-tests
 
@@ -2419,28 +2423,11 @@ EXTRA_DIST += test-userspec.c
 
 ## end   gnulib module userspec-tests
 
-## begin gnulib module usleep
-
-
-EXTRA_DIST += usleep.c
-
-EXTRA_libtests_a_SOURCES += usleep.c
-
-## end   gnulib module usleep
-
-## begin gnulib module usleep-tests
-
-TESTS += test-usleep
-check_PROGRAMS += test-usleep
-EXTRA_DIST += test-usleep.c signature.h macros.h
-
-## end   gnulib module usleep-tests
-
 ## begin gnulib module utimens-tests
 
 TESTS += test-utimens
 check_PROGRAMS += test-utimens
-test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@
 EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimens.c macros.h
 
 ## end   gnulib module utimens-tests
@@ -2449,7 +2436,7 @@ EXTRA_DIST += nap.h test-futimens.h test
 
 TESTS += test-utimensat
 check_PROGRAMS += test-utimensat
-test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
+test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) @LIBINTL@
 EXTRA_DIST += nap.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimensat.c signature.h macros.h
 
 ## end   gnulib module utimensat-tests
Index: gnulib-tests/nap.h
===================================================================
--- gnulib-tests/nap.h.orig
+++ gnulib-tests/nap.h
@@ -19,19 +19,33 @@
 #ifndef GLTEST_NAP_H
 # define GLTEST_NAP_H
 
+# include <limits.h>
+
+/* Return A - B, in ns.
+   Return 0 if the true result would be negative.
+   Return INT_MAX if the true result would be greater than INT_MAX.  */
 static int
-lt_mtime (struct stat const *a, struct stat const *b)
+diff_timespec (struct timespec a, struct timespec b)
 {
-  time_t as = a->st_mtime;
-  time_t bs = b->st_mtime;
-  int ans = get_stat_mtime_ns (a);
-  int bns = get_stat_mtime_ns (b);
+  time_t as = a.tv_sec;
+  time_t bs = b.tv_sec;
+  int ans = a.tv_nsec;
+  int bns = b.tv_nsec;
 
-  return as < bs || (as == bs && ans < bns);
+  if (! (bs < as || (bs == as && bns < ans)))
+    return 0;
+  if (as - bs <= INT_MAX / 1000000000)
+    {
+      int sdiff = (as - bs) * 1000000000;
+      int usdiff = ans - bns;
+      if (usdiff < INT_MAX - sdiff)
+        return sdiff + usdiff;
+    }
+  return INT_MAX;
 }
 
 static void
-get_mtime (int fd, struct stat *st, int do_write)
+get_stat (int fd, struct stat *st, int do_write)
 {
   if (do_write)
     ASSERT (write (fd, "\n", 1) == 1);
@@ -39,50 +53,61 @@ get_mtime (int fd, struct stat *st, int
 }
 
 /* Given a file whose descriptor is FD, see whether delaying by DELAY
-   microseconds causes a change in a file's time stamp.  If the time
-   stamps differ, repeat the test one more time, in case we crossed a
-   quantization boundary on a file system with lower resolution.  *ST
-   is the file's status, recently gotten.  Update *ST to reflect the
-   latest status gotten.  */
+   nanoseconds causes a change in a file's time stamp.  *ST is the
+   file's status, recently gotten.  Update *ST to reflect the latest
+   status gotten.  If successful, return the needed delay, in
+   nanoseconds as determined by the observed time stamps; this may be
+   greater than DELAY if we crossed a quantization boundary.  If
+   unsuccessful, return 0.  */
 static int
 nap_works (int fd, int delay, struct stat *st)
 {
-  struct stat old_st;
-  old_st = *st;
-  usleep (delay);
-  get_mtime (fd, st, 1);
-  if (! lt_mtime (&old_st, st))
-    return 0;
-  old_st = *st;
-  usleep (delay);
-  get_mtime (fd, st, 1);
-  return lt_mtime (&old_st, st);
+  struct stat old_st = *st;
+  struct timespec delay_spec;
+  int cdiff, mdiff;
+  delay_spec.tv_sec = delay / 1000000000;
+  delay_spec.tv_nsec = delay % 1000000000;
+  ASSERT (nanosleep (&delay_spec, 0) == 0);
+  get_stat (fd, st, 1);
+
+  /* Return the greater of the ctime and the mtime differences, or
+     zero if it cannot be determined, or INT_MAX if either overflows.  */
+  cdiff = diff_timespec (get_stat_ctime (st), get_stat_ctime (&old_st));
+  if (cdiff != 0)
+    {
+      mdiff = diff_timespec (get_stat_mtime (st), get_stat_mtime (&old_st));
+      if (mdiff != 0)
+        return cdiff < mdiff ? mdiff : cdiff;
+    }
+  return 0;
 }
 
 static int
 guess_delay (void)
 {
-  /* Try a 1-microsecond sleep first, for speed.  If that doesn't
-     work, try a 1 ms sleep; that should work with ext.  If it doesn't
-     work, try a 20 ms sleep.  xfs has a quantization of about 10
+  /* Try a 1-ns sleep first, for speed.  If that doesn't work, try 100
+     ns, 1 microsecond, 1 ms, etc.  xfs has a quantization of about 10
      milliseconds, even though it has a granularity of 1 nanosecond,
      and NTFS has a default quantization of 15.25 milliseconds, even
-     though it has a granularity of 100 nanoseconds, so 20 ms is a
+     though it has a granularity of 100 nanoseconds, so 15.25 ms is a
      good quantization to try.  If that doesn't work, try 1 second.
      The worst case is 2 seconds, needed for FAT.  */
-  static int const delaytab[] = {1, 1000, 20000, 1000000 };
+  static int const delaytab[] = {1, 1000, 1000000, 15250000, 1000000000 };
   int fd = creat (BASE "tmp", 0600);
   int i;
-  int delay = 2000000;
+  int delay = 2000000000;
   struct stat st;
   ASSERT (0 <= fd);
-  get_mtime (fd, &st, 0);
+  get_stat (fd, &st, 0);
   for (i = 0; i < sizeof delaytab / sizeof delaytab[0]; i++)
-    if (nap_works (fd, delaytab[i], &st))
-      {
-        delay = delaytab[i];
-        break;
-      }
+    {
+      int d = nap_works (fd, delaytab[i], &st);
+      if (d != 0)
+        {
+          delay = d;
+          break;
+        }
+    }
   ASSERT (close (fd) == 0);
   ASSERT (unlink (BASE "tmp") == 0);
   return delay;
@@ -90,14 +115,24 @@ guess_delay (void)
 
 /* Sleep long enough to notice a timestamp difference on the file
    system in the current directory.  Assumes that BASE is defined,
-   and requires that the test module depends on usleep.  */
+   and requires that the test module depends on nanosleep.  */
 static void
 nap (void)
 {
-  static int delay;
-  if (!delay)
-    delay = guess_delay ();
-  usleep (delay);
+  static struct timespec delay;
+  if (!delay.tv_sec && !delay.tv_nsec)
+    {
+      int d = guess_delay ();
+
+      /* Multiply by 1.125 (rounding up), to avoid problems if the
+         file system's clock is a bit slower than nanosleep's.
+         Ceiling it at INT_MAX, though.  */
+      int delta = (d >> 3) + ((d & 7) != 0);
+      d = delta < INT_MAX - d ? d + delta : INT_MAX;
+      delay.tv_sec = d / 1000000000;
+      delay.tv_nsec = d % 1000000000;
+    }
+  ASSERT (nanosleep (&delay, 0) == 0);
 }
 
 #endif /* GLTEST_NAP_H */
Index: gnulib-tests/test-stat-time.c
===================================================================
--- gnulib-tests/test-stat-time.c.orig
+++ gnulib-tests/test-stat-time.c
@@ -27,6 +27,9 @@
 
 #include "macros.h"
 
+#define BASE "test-stat-time.t"
+#include "nap.h"
+
 enum { NFILES = 4 };
 
 static int
@@ -79,48 +82,6 @@ do_stat (const char *filename, struct st
   ASSERT (stat (filename, p) == 0);
 }
 
-/* Sleep long enough to notice a timestamp difference on the file
-   system in the current directory.  */
-static void
-nap (void)
-{
-  static long delay;
-  if (!delay)
-    {
-      /* Initialize only once, by sleeping for 20 milliseconds (needed
-         since xfs has a quantization of about 10 milliseconds, even
-         though it has a granularity of 1 nanosecond, and since NTFS
-         has a default quantization of 15.25 milliseconds, even though
-         it has a granularity of 100 nanoseconds).  If the seconds
-         differ, repeat the test one more time (in case we crossed a
-         quantization boundary on a file system with 1 second
-         resolution).  If we can't observe a difference in only the
-         nanoseconds, then fall back to 1 second if the time is odd,
-         and 2 seconds (needed for FAT) if time is even.  */
-      struct stat st1;
-      struct stat st2;
-      ASSERT (stat ("t-stt-stamp1", &st1) == 0);
-      ASSERT (force_unlink ("t-stt-stamp1") == 0);
-      delay = 20000;
-      usleep (delay);
-      create_file ("t-stt-stamp1");
-      ASSERT (stat ("t-stt-stamp1", &st2) == 0);
-      if (st1.st_mtime != st2.st_mtime)
-        {
-          /* Seconds differ, give it one more shot.  */
-          st1 = st2;
-          ASSERT (force_unlink ("t-stt-stamp1") == 0);
-          usleep (delay);
-          create_file ("t-stt-stamp1");
-          ASSERT (stat ("t-stt-stamp1", &st2) == 0);
-        }
-      if (! (st1.st_mtime == st2.st_mtime
-             && get_stat_mtime_ns (&st1) < get_stat_mtime_ns (&st2)))
-        delay = (st1.st_mtime & 1) ? 1000000 : 2000000;
-    }
-  usleep (delay);
-}
-
 static void
 prepare_test (struct stat *statinfo, struct timespec *modtimes)
 {
Index: gnulib-tests/test-usleep.c
===================================================================
--- gnulib-tests/test-usleep.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Test of usleep() function.
-   Copyright (C) 2009-2013 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Written by Eric Blake <ebb9@byu.net>, 2009.  */
-
-#include <config.h>
-
-#include <unistd.h>
-
-#include "signature.h"
-SIGNATURE_CHECK (usleep, int, (useconds_t));
-
-#include <time.h>
-
-#include "macros.h"
-
-int
-main (void)
-{
-  time_t start = time (NULL);
-  ASSERT (usleep (1000000) == 0);
-  ASSERT (start < time (NULL));
-
-  ASSERT (usleep (0) == 0);
-
-  return 0;
-}
Index: gnulib-tests/usleep.c
===================================================================
--- gnulib-tests/usleep.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Pausing execution of the current thread.
-   Copyright (C) 2009-2013 Free Software Foundation, Inc.
-   Written by Eric Blake <ebb9@byu.net>, 2009.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* This file is _intentionally_ light-weight.  Rather than using
-   select or nanosleep, both of which drag in external libraries on
-   some platforms, this merely rounds up to the nearest second if
-   usleep() does not exist.  If sub-second resolution is important,
-   then use a more powerful interface to begin with.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <unistd.h>
-
-#include <errno.h>
-
-#ifndef HAVE_USLEEP
-# define HAVE_USLEEP 0
-#endif
-
-/* Sleep for MICRO microseconds, which can be greater than 1 second.
-   Return -1 and set errno to EINVAL on range error (about 4295
-   seconds), or 0 on success.  Interaction with SIGALARM is
-   unspecified.  */
-
-int
-usleep (useconds_t micro)
-{
-  unsigned int seconds = micro / 1000000;
-  if (sizeof seconds < sizeof micro && micro / 1000000 != seconds)
-    {
-      errno = EINVAL;
-      return -1;
-    }
-  if (!HAVE_USLEEP && micro % 1000000)
-    seconds++;
-  while ((seconds = sleep (seconds)) != 0);
-
-#undef usleep
-#if !HAVE_USLEEP
-# define usleep(x) 0
-#endif
-  return usleep (micro % 1000000);
-}
Index: lib/config.hin
===================================================================
--- lib/config.hin.orig
+++ lib/config.hin
@@ -735,9 +735,6 @@
 /* Define to 1 when the gnulib module unsetenv should be tested. */
 #undef GNULIB_TEST_UNSETENV
 
-/* Define to 1 when the gnulib module usleep should be tested. */
-#undef GNULIB_TEST_USLEEP
-
 /* Define to 1 when the gnulib module utimensat should be tested. */
 #undef GNULIB_TEST_UTIMENSAT
 
@@ -2387,9 +2384,6 @@
 /* Define to 1 if you have the `uselocale' function. */
 #undef HAVE_USELOCALE
 
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
-
 /* Define to 1 if you have the `utimensat' function. */
 #undef HAVE_UTIMENSAT
 
@@ -3348,9 +3342,6 @@
 #endif
 
 
-/* Define to an unsigned 32-bit type if <sys/types.h> lacks this type. */
-#undef useconds_t
-
 /* Define as a macro for copying va_list variables. */
 #undef va_copy
 
Index: m4/gnulib-comp.m4
===================================================================
--- m4/gnulib-comp.m4.orig
+++ m4/gnulib-comp.m4
@@ -741,8 +741,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module useless-if-before-free:
   # Code from module userspec:
   # Code from module userspec-tests:
-  # Code from module usleep:
-  # Code from module usleep-tests:
   # Code from module utimecmp:
   # Code from module utimens:
   # Code from module utimens-tests:
@@ -2255,11 +2253,6 @@ changequote([, ])dnl
   gl_UNLINKDIR
   abs_aux_dir=`cd "$ac_aux_dir"; pwd`
   AC_SUBST([abs_aux_dir])
-  gl_FUNC_USLEEP
-  if test $HAVE_USLEEP = 0 || test $REPLACE_USLEEP = 1; then
-    AC_LIBOBJ([usleep])
-  fi
-  gl_UNISTD_MODULE_INDICATOR([usleep])
   AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
   abs_aux_dir=`cd "$ac_aux_dir"; pwd`
   AC_SUBST([abs_aux_dir])
@@ -3436,7 +3429,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/unlocked-io.m4
   m4/uptime.m4
   m4/userspec.m4
-  m4/usleep.m4
   m4/utimbuf.m4
   m4/utimecmp.m4
   m4/utimens.m4
@@ -3839,7 +3831,6 @@ AC_DEFUN([gl_FILE_LIST], [
   tests/test-unsetenv.c
   tests/test-update-copyright.sh
   tests/test-userspec.c
-  tests/test-usleep.c
   tests/test-utimens-common.h
   tests/test-utimens.c
   tests/test-utimens.h
@@ -3913,7 +3904,6 @@ AC_DEFUN([gl_FILE_LIST], [
   tests=lib/symlinkat.c
   tests=lib/unlinkdir.c
   tests=lib/unlinkdir.h
-  tests=lib/usleep.c
   tests=lib/w32sock.h
   tests=lib/wctob.c
   tests=lib/wctomb-impl.h
Index: m4/usleep.m4
===================================================================
--- m4/usleep.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-# usleep.m4 serial 3
-dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl This macro intentionally does not check for select or nanosleep;
-dnl both of those modules can require external libraries.
-AC_DEFUN([gl_FUNC_USLEEP],
-[
-  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  dnl usleep was required in POSIX 2001, but dropped as obsolete in
-  dnl POSIX 2008; therefore, it is not always exposed in headers.
-  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CHECK_FUNCS_ONCE([usleep])
-  AC_CHECK_TYPE([useconds_t], [],
-    [AC_DEFINE([useconds_t], [unsigned int], [Define to an unsigned 32-bit
-      type if <sys/types.h> lacks this type.])])
-  if test $ac_cv_func_usleep = no; then
-    HAVE_USLEEP=0
-  else
-    dnl POSIX allows implementations to reject arguments larger than
-    dnl 999999, but GNU guarantees it will work.
-    AC_CACHE_CHECK([whether usleep allows large arguments],
-      [gl_cv_func_usleep_works],
-      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-#include <unistd.h>
-]], [[return !!usleep (1000000);]])],
-        [gl_cv_func_usleep_works=yes], [gl_cv_func_usleep_works=no],
-        [case "$host_os" in
-                   # Guess yes on glibc systems.
-           *-gnu*) gl_cv_func_usleep_works="guessing yes" ;;
-                   # If we don't know, assume the worst.
-           *)      gl_cv_func_usleep_works="guessing no" ;;
-         esac
-        ])])
-    case "$gl_cv_func_usleep_works" in
-      *yes) ;;
-      *)
-        REPLACE_USLEEP=1
-        ;;
-    esac
-  fi
-])