--- /dev/null
+From 39042d7f7c4997af55474ebe4513c81f00732837 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sat, 24 Aug 2019 15:01:16 -0700
+Subject: os_sleep: Use nanosleep for POSIX versions 2008 and higher
+
+uClibc-ng optionally disabled deprecated POSIX functions like usleep,
+causing compilation failures. This switches to nanosleep while retaining
+support for older libcs that do not support nanosleep.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ src/utils/os_internal.c | 6 ++++++
+ src/utils/os_unix.c | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+--- a/src/utils/os_internal.c
++++ b/src/utils/os_internal.c
+@@ -25,10 +25,16 @@
+
+ void os_sleep(os_time_t sec, os_time_t usec)
+ {
++#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
++ const struct timespec req = { sec, usec * 1000 };
++
++ nanosleep(&req, NULL);
++#else
+ if (sec)
+ sleep(sec);
+ if (usec)
+ usleep(usec);
++#endif
+ }
+
+
+--- a/src/utils/os_unix.c
++++ b/src/utils/os_unix.c
+@@ -50,10 +50,16 @@ struct os_alloc_trace {
+
+ void os_sleep(os_time_t sec, os_time_t usec)
+ {
++#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
++ const struct timespec req = { sec, usec * 1000 };
++
++ nanosleep(&req, NULL);
++#else
+ if (sec)
+ sleep(sec);
+ if (usec)
+ usleep(usec);
++#endif
+ }
+
+