From bcce6dd026e90336e80616a8c1004a79a2f8640c Mon Sep 17 00:00:00 2001 From: philwo Date: Thu, 20 May 2021 08:13:09 -0700 Subject: [PATCH] Add the TEMP_FAILURE_RETRY macro to linux-sandbox-pid1.cc. This allows us to build Bazel on Linux systems which use a C standard library that does not include this macro, like Alpine Linux (which uses musl). Fixes #12460. PiperOrigin-RevId: 374873483 --- src/main/tools/linux-sandbox-pid1.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/tools/linux-sandbox-pid1.cc b/src/main/tools/linux-sandbox-pid1.cc index 5c9c53cb9cd2aa..5e7c64a7ac7b34 100644 --- a/src/main/tools/linux-sandbox-pid1.cc +++ b/src/main/tools/linux-sandbox-pid1.cc @@ -49,6 +49,19 @@ #include #endif +#ifndef TEMP_FAILURE_RETRY +// Some C standard libraries like musl do not define this macro, so we'll +// include our own version for compatibility. +#define TEMP_FAILURE_RETRY(exp) \ + ({ \ + decltype(exp) _rc; \ + do { \ + _rc = (exp); \ + } while (_rc == -1 && errno == EINTR); \ + _rc; \ + }) +#endif // TEMP_FAILURE_RETRY + #include "src/main/tools/linux-sandbox-options.h" #include "src/main/tools/linux-sandbox.h" #include "src/main/tools/logging.h"