text: --- a/config.h.in
  +++ b/config.h.in
  @@ -148,3 +148,15 @@
   
   /* Define to 1 if you need to in order for `stat' and other things to work. */
   #undef _POSIX_SOURCE
  +
  +/* taken from glibc unistd.h and fixes musl */
  +#ifndef TEMP_FAILURE_RETRY
  +#define TEMP_FAILURE_RETRY(expression) \
  +  (__extension__                                                              \
  +    ({ long int __result;                                                     \
  +       do __result = (long int) (expression);                                 \
  +       while (__result == -1L && errno == EINTR);                             \
  +       __result; }))
  +#endif
  +
  +
  diff --git a/libglnx/glnx-dirfd.h b/libglnx/glnx-dirfd.h
  index 0046ac8..79b9f6a 100644
  --- a/libglnx/glnx-dirfd.h
  +++ b/libglnx/glnx-dirfd.h
  @@ -28,6 +28,16 @@
   #include <sys/stat.h>
   #include <fcntl.h>
   
  +/* taken from glibc unistd.h and fixes musl */
  +#ifndef TEMP_FAILURE_RETRY
  +#define TEMP_FAILURE_RETRY(expression) \
  +  (__extension__                                                              \
  +    ({ long int __result;                                                     \
  +       do __result = (long int) (expression);                                 \
  +       while (__result == -1L && errno == EINTR);                             \
  +       __result; }))
  +#endif
  +
   G_BEGIN_DECLS
    
   /**
  
  diff --git a/libglnx/glnx-fdio.h b/libglnx/glnx-fdio.h
  index c0a7cc1..8f72920 100644
  --- a/libglnx/glnx-fdio.h
  +++ b/libglnx/glnx-fdio.h
  @@ -35,6 +35,17 @@
   #include <glnx-macros.h>
   #include <glnx-errors.h>
   
  +/* taken from glibc unistd.h and fixes musl */
  +#ifndef TEMP_FAILURE_RETRY
  +#define TEMP_FAILURE_RETRY(expression) \
  +  (__extension__                                                              \
  +    ({ long int __result;                                                     \
  +       do __result = (long int) (expression);                                 \
  +       while (__result == -1L && errno == EINTR);                             \
  +       __result; }))
  +#endif
  +
  +
   G_BEGIN_DECLS
   
   /* Irritatingly, g_basename() which is what we want
  
  diff --git a/libglnx/glnx-xattrs.c b/libglnx/glnx-xattrs.c
  index 79a14cd..ebb96d4 100644
  --- a/libglnx/glnx-xattrs.c
  +++ b/libglnx/glnx-xattrs.c
  @@ -28,6 +28,16 @@
   #include <glnx-errors.h>
   #include <glnx-local-alloc.h>
   
  +/* taken from glibc unistd.h and fixes musl */
  +#ifndef TEMP_FAILURE_RETRY
  +#define TEMP_FAILURE_RETRY(expression) \
  +  (__extension__                                                              \
  +    ({ long int __result;                                                     \
  +       do __result = (long int) (expression);                                 \
  +       while (__result == -1L && errno == EINTR);                             \
  +       __result; }))
  +#endif
  +
   static GVariant *
   variant_new_ay_bytes (GBytes *bytes)
   {
  
  