<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/50a84301c7960de12d34f80610fe0441ea36f99b">https://github.com/macports/macports-ports/commit/50a84301c7960de12d34f80610fe0441ea36f99b</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 50a84301c7960de12d34f80610fe0441ea36f99b
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Tue Jan 31 01:34:52 2023 +0800

<span style='display:block; white-space:pre;color:#404040;'>    folly: update to 2023.01.30.00, consolidate patches
</span>---
 devel/folly/Portfile                               |  27 +-
 ...cmake-do-not-require-c-abi-with-GCC-on-Ap.patch |  25 --
 devel/folly/files/0002-Fixes-for-older-macOS.patch | 245 ---------------
 devel/folly/files/0003-Fixes-for-macOS-PPC.patch   | 115 -------
 devel/folly/files/patch-older-systems.diff         | 334 +++++++++++++++++++++
 5 files changed, 339 insertions(+), 407 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/Portfile b/devel/folly/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 3a332c05542..8e8b72ccd9e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/folly/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/folly/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -18,11 +18,11 @@ if {[string match *clang* ${configure.compiler}]} {
</span> # NB: Facebook does not do API stabiilty, apparently, so please don't
 # upgrade without also upgrading its dependents, as listed by:
 # port list rdepends:folly
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        facebook folly 2023.01.02.00 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        facebook folly 2023.01.30.00 v
</span> revision            0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  6c22c55fdd417ebee9ec3c2b32397b3d99017ff2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  1c1ae46f5b1af7ec88db31094dacfd1380d6b1aa0f6bd71ed78298ffcbaaa030 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    3759073
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  b5170cc7a49851456dfae482c058bb6a1be5137f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  2f4b6da55d1009807ad3072655d680b31beb3c25b987a6e1dc32c30f6aac648a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    3789531
</span> 
 categories          devel
 license             Apache-2
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -67,21 +67,7 @@ depends_lib-append  port:bzip2 \
</span> 
 cmake.generator     Ninja
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patch.pre_args      -p1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    0001-folly-deps.cmake-do-not-require-c-abi-with-GCC-on-Ap.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    0002-Fixes-for-older-macOS.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${build_arch} in [list ppc ppc64]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    0003-Fixes-for-macOS-PPC.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-older-systems.diff
</span> 
 configure.args-append   -DBUILD_SHARED_LIBS=ON \
                         -DFOLLY_USE_JEMALLOC=0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -120,9 +106,6 @@ platform darwin {
</span>         # ThreadName.cpp: error: invalid conversion from 'std::array<char, 16>::size_type' {aka 'long unsigned int'} to 'size_t*' {aka 'long unsigned int*'}
         configure.cxxflags-append \
                                 -fpermissive
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # ___atomic_fetch_sub_8, ___atomic_load_8, ___atomic_exchange_8, ___atomic_store_8, ___atomic_compare_exchange_8, ___atomic_fetch_add_8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                -latomic
</span>         # https://github.com/macports/macports-ports/pull/15689#issuecomment-1212969969
         configure.ldflags-append \
                                 -L${prefix}/lib -lgflags
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/files/0001-folly-deps.cmake-do-not-require-c-abi-with-GCC-on-Ap.patch b/devel/folly/files/0001-folly-deps.cmake-do-not-require-c-abi-with-GCC-on-Ap.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3da1a13739c..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/folly/files/0001-folly-deps.cmake-do-not-require-c-abi-with-GCC-on-Ap.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,25 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 0e59b7ecf2b0ba056b520053f9ad3802033ede52 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 3 Jan 2023 04:23:03 +0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 1/3] folly-deps.cmake: do not require c++abi with GCC on Apple
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CMake/folly-deps.cmake | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/CMake/folly-deps.cmake b/CMake/folly-deps.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 989259a87..c04634b1f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/CMake/folly-deps.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/CMake/folly-deps.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -247,7 +247,7 @@ check_cxx_source_compiles("
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   FOLLY_STDLIB_LIBCPP
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--if (APPLE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if (APPLE AND NOT(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   list (APPEND CMAKE_REQUIRED_LIBRARIES c++abi)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   list (APPEND FOLLY_LINK_LIBRARIES c++abi)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- endif ()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.39.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/files/0002-Fixes-for-older-macOS.patch b/devel/folly/files/0002-Fixes-for-older-macOS.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index de546856f8b..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/folly/files/0002-Fixes-for-older-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,245 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ecf08bc56151923b1539b508f4984baf19db8b4e Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 3 Jan 2023 04:07:54 +0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 2/3] Fixes for older macOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/File.cpp                       |  4 +++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/SocketAddress.cpp              |  4 ++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/io/async/AsyncServerSocket.cpp | 12 ++++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/io/async/AsyncUDPSocket.cpp    | 10 ++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/net/TcpInfoTypes.h             |  2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/portability/Time.cpp           | 24 +++++++++++++++++++++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/system/ThreadId.cpp            | 14 +++++++++++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 7 files changed, 62 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/File.cpp b/folly/File.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 401eb7a01..d34a67f30 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/File.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/File.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -120,8 +120,10 @@ File File::dupCloseOnExec() const {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     int fd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef _WIN32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     fd = ::dup(fd_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elseif defined(F_DUPFD_CLOEXEC)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     fd = ::fcntl(fd_, F_DUPFD_CLOEXEC, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    fd = ::dup(fd_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     checkUnixError(fd, "dup() failed");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/SocketAddress.cpp b/folly/SocketAddress.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2fb1fac9e..fe6231183 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/SocketAddress.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/SocketAddress.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -125,6 +125,10 @@ struct GetAddrInfoError {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace folly {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef AI_NUMERICSERV            
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define AI_NUMERICSERV 0          
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool SocketAddress::isPrivateAddress() const {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   auto family = getFamily();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (family == AF_INET || family == AF_INET6) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/io/async/AsyncServerSocket.cpp b/folly/io/async/AsyncServerSocket.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 127c88e75..796d77380 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/io/async/AsyncServerSocket.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/io/async/AsyncServerSocket.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -47,6 +47,18 @@ namespace folly {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define TCP_SAVED_SYN 28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef AI_NUMERICSERV            
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define AI_NUMERICSERV 0          
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef IPV6_TCLASS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__GNU__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define IPV6_TCLASS 61
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define IPV6_TCLASS 36
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static constexpr bool msgErrQueueSupported =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef FOLLY_HAVE_MSG_ERRQUEUE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/io/async/AsyncUDPSocket.cpp b/folly/io/async/AsyncUDPSocket.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 24477baad..7ed5d9d08 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/io/async/AsyncUDPSocket.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/io/async/AsyncUDPSocket.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -36,6 +36,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define SO_REUSEPORT 15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef IPV6_TCLASS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__GNU__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define IPV6_TCLASS 61
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define IPV6_TCLASS 36
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if FOLLY_HAVE_VLA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FOLLY_HAVE_VLA_01 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -257,6 +265,7 @@ void AsyncUDPSocket::init(sa_family_t family, BindOptions bindOptions) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             "failed to set IPV6_RECVTCLASS on the socket",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             errno);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #ifdef IP_RECVTOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else if (family == AF_INET) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (netops::setsockopt(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               socket, IPPROTO_IP, IP_RECVTOS, &flag, sizeof(flag)) != 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -265,6 +274,7 @@ void AsyncUDPSocket::init(sa_family_t family, BindOptions bindOptions) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             "failed to set IP_RECVTOS on the socket",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             errno);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/net/TcpInfoTypes.h b/folly/net/TcpInfoTypes.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 09a8a9907..d3a6caac4 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/net/TcpInfoTypes.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/net/TcpInfoTypes.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -179,7 +179,7 @@ struct tcp_info_legacy {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   __u32 tcpi_total_retrans;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED > 101003
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FOLLY_HAVE_TCP_INFO 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- using tcp_info = ::tcp_connection_info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const int tcp_info_sock_opt = TCP_CONNECTION_INFO;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/portability/Time.cpp b/folly/portability/Time.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 88f00150f..3f882b473 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/portability/Time.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/portability/Time.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -37,11 +37,13 @@ static void duration_to_ts(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if !FOLLY_HAVE_CLOCK_GETTIME || FOLLY_FORCE_CLOCK_GETTIME_DEFINITION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if __MACH__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <errno.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/mach_init.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/mach_port.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/mach_time.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/mach_types.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/task.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <mach/task_info.h> // for MacOS <= Lion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/thread_act.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/vm_map.h> // @manual
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -64,6 +66,7 @@ static int clock_process_cputime(struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // Get CPU usage for terminated threads.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef MACH_TASK_BASIC_INFO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   mach_task_basic_info task_basic_info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   mach_msg_type_number_t task_basic_info_count = MACH_TASK_BASIC_INFO_COUNT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   kern_result = task_info(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -74,6 +77,18 @@ static int clock_process_cputime(struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (UNLIKELY(kern_result != KERN_SUCCESS)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  task_basic_info task_basic_info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  mach_msg_type_number_t task_basic_info_count = TASK_BASIC_INFO_COUNT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  kern_result = task_info(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      mach_task_self(),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      TASK_BASIC_INFO,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (thread_info_t)&task_basic_info,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      &task_basic_info_count);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (UNLIKELY(kern_result != KERN_SUCCESS)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   auto cputime = time_value_to_ns(thread_times_info.user_time) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       time_value_to_ns(thread_times_info.system_time) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -99,6 +114,7 @@ static int clock_thread_cputime(struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- FOLLY_ATTR_WEAK int clock_gettime(clockid_t clk_id, struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   switch (folly::to_underlying(clk_id)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case CLOCK_REALTIME: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -120,6 +136,7 @@ FOLLY_ATTR_WEAK int clock_gettime(clockid_t clk_id, struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int clock_getres(clockid_t clk_id, struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (clk_id != CLOCK_MONOTONIC) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -190,6 +207,7 @@ extern "C" int clock_getres(clockid_t clock_id, struct timespec* res) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       res->tv_nsec = time_t(perSec * kNsPerSec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case CLOCK_PROCESS_CPUTIME_ID:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case CLOCK_THREAD_CPUTIME_ID: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       DWORD adj, timeIncrement;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -198,12 +216,11 @@ extern "C" int clock_getres(clockid_t clock_id, struct timespec* res) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       res->tv_sec = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       res->tv_nsec = long(timeIncrement * 100);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -236,6 +253,7 @@ extern "C" int clock_gettime(clockid_t clock_id, struct timespec* tp) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       duration_to_ts(now, tp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case CLOCK_PROCESS_CPUTIME_ID: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (!GetProcessTimes(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               GetCurrentProcess(),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -268,7 +286,7 @@ extern "C" int clock_gettime(clockid_t clock_id, struct timespec* tp) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           filetimeToUnsignedNanos(kernalTime) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               filetimeToUnsignedNanos(userTime));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/system/ThreadId.cpp b/folly/system/ThreadId.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e426b39e1..b297d671f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/system/ThreadId.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/system/ThreadId.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -40,9 +40,17 @@ namespace detail {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint64_t getOSThreadIDSlow() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint64_t tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  pthread_threadid_np(nullptr, &tid);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  return tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #if MAC_OS_X_VERSION_MAX_ALLOWED < 1070
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    tid = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    tid = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    pthread_threadid_np(nullptr, &tid);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(_WIN32)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return uint64_t(GetCurrentThreadId());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(__FreeBSD__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.39.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/files/0003-Fixes-for-macOS-PPC.patch b/devel/folly/files/0003-Fixes-for-macOS-PPC.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 59e19b132bc..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/folly/files/0003-Fixes-for-macOS-PPC.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,115 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 4e933097037f8f47178ee27ee8161ad7ea0085b8 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 3 Jan 2023 04:13:06 +0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 3/3] Fixes for macOS PPC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CMakeLists.txt                           | 10 ++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/Portability.h                      | 12 +++++++++++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/detail/base64_detail/Base64Api.cpp |  6 ++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly/portability/Asm.h                  |  4 +++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4 files changed, 30 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/CMakeLists.txt b/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index fab26959c..aca96e4a8 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -242,6 +242,16 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- endif()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # base64 SIMD files compilation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  message(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    STATUS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "PowerPC Big Endian has a limited support, "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "skipping building Base64SWAR of base64"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  list(REMOVE_ITEM files ${FOLLY_DIR}/detail/base64_detail/Base64SWAR.cpp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+endif()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (NOT(${IS_X86_64_ARCH}))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   message(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     STATUS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/Portability.h b/folly/Portability.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 83d68d26e..4d94c4a8a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/Portability.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/Portability.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -103,12 +103,18 @@ constexpr bool kHasUnalignedAccess = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FOLLY_AARCH64 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#if defined(__powerpc64__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__powerpc64__) || defined(__ppc64__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FOLLY_PPC64 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FOLLY_PPC64 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define FOLLY_PPC 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define FOLLY_PPC 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(__s390x__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FOLLY_S390X 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -120,6 +126,7 @@ constexpr bool kIsArchArm = FOLLY_ARM == 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr bool kIsArchAmd64 = FOLLY_X64 == 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr bool kIsArchAArch64 = FOLLY_AARCH64 == 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr bool kIsArchPPC64 = FOLLY_PPC64 == 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+constexpr bool kIsArchPPC = FOLLY_PPC == 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr bool kIsArchS390X = FOLLY_S390X == 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } // namespace folly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -318,6 +325,9 @@ constexpr auto kIsLittleEndian = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr auto kIsLittleEndian = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif defined(__APPLE__) && defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Darwin ppc/ppc64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+constexpr auto kIsLittleEndian = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr auto kIsLittleEndian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/detail/base64_detail/Base64Api.cpp b/folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 9c8493c06..1d4666ac5 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -31,10 +31,16 @@ Base64RuntimeImpl base64EncodeSelectImplementation() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         base64URLDecodeSWAR};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__POWERPC__) // PowerPC BE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      base64EncodeScalar,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      base64URLEncode};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else // Everything but PowerPC BE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64EncodeScalar,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64URLEncodeScalar,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64DecodeSWAR,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64URLDecodeSWAR};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } // namespace folly::detail::base64_detail
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/folly/portability/Asm.h b/folly/portability/Asm.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index aa1317296..93ef58d38 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/folly/portability/Asm.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/folly/portability/Asm.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -41,8 +41,10 @@ inline void asm_volatile_pause() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   asm volatile("pause");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif FOLLY_AARCH64 || (defined(__arm__) && !(__ARM_ARCH < 7))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   asm volatile("yield");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#elif FOLLY_PPC64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif FOLLY_PPC64 && !(defined(__APPLE__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   asm volatile("or 27,27,27");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif (FOLLY_PPC || FOLLY_PPC64) && defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  __asm__ volatile ("or r27,r27,r27" ::: "memory");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } // namespace folly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.39.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/files/patch-older-systems.diff b/devel/folly/files/patch-older-systems.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..57a2605e7f2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/folly/files/patch-older-systems.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,334 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CMake/folly-deps.cmake CMake/folly-deps.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 989259a87..7fa4cb4e5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMake/folly-deps.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMake/folly-deps.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -181,14 +181,17 @@ message(STATUS "Setting FOLLY_USE_SYMBOLIZER: ${FOLLY_USE_SYMBOLIZER}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ message(STATUS "Setting FOLLY_HAVE_ELF: ${FOLLY_HAVE_ELF}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ message(STATUS "Setting FOLLY_HAVE_DWARF: ${FOLLY_HAVE_DWARF}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# Using clang with libstdc++ requires explicitly linking against libatomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-check_cxx_source_compiles("
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  #include <atomic>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  int main(int argc, char** argv) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    struct Test { int val; };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    std::atomic<Test> s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return static_cast<int>(s.is_lock_free());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# Using clang with libstdc++ requires explicitly linking against libatomic.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# The same applies to GCC on some platforms.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++check_cxx_source_compiles(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++"#include <atomic>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int main() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::atomic<uint8_t> w1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::atomic<uint16_t> w2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::atomic<uint32_t> w4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::atomic<uint64_t> w8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return ++w1 + ++w2 + ++w4 + ++w8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   FOLLY_CPP_ATOMIC_BUILTIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(NOT FOLLY_CPP_ATOMIC_BUILTIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -247,7 +250,7 @@ check_cxx_source_compiles("
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   FOLLY_STDLIB_LIBCPP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if (APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (APPLE AND NOT(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   list (APPEND CMAKE_REQUIRED_LIBRARIES c++abi)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   list (APPEND FOLLY_LINK_LIBRARIES c++abi)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CMakeLists.txt CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dfd4c3820..d02121df0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -261,6 +261,16 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # base64 SIMD files compilation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  message(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    STATUS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "PowerPC Big Endian has a limited support, "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "skipping building Base64SWAR of base64"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  list(REMOVE_ITEM files ${FOLLY_DIR}/detail/base64_detail/Base64SWAR.cpp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (NOT(${IS_X86_64_ARCH}))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   message(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     STATUS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/File.cpp folly/File.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 401eb7a01..c50a6d7e5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/File.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/File.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -120,8 +120,10 @@ File File::dupCloseOnExec() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int fd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef _WIN32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fd = ::dup(fd_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(F_DUPFD_CLOEXEC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fd = ::fcntl(fd_, F_DUPFD_CLOEXEC, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fd = ::dup(fd_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     checkUnixError(fd, "dup() failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/Portability.h folly/Portability.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 24ba108bb..933d240e7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/Portability.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/Portability.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,12 +103,18 @@ constexpr bool kHasUnalignedAccess = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_AARCH64 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__powerpc64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__powerpc64__) || defined(__ppc64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_PPC64 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_PPC64 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FOLLY_PPC 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FOLLY_PPC 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__s390x__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_S390X 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -120,6 +126,7 @@ constexpr bool kIsArchArm = FOLLY_ARM == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr bool kIsArchAmd64 = FOLLY_X64 == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr bool kIsArchAArch64 = FOLLY_AARCH64 == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr bool kIsArchPPC64 = FOLLY_PPC64 == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++constexpr bool kIsArchPPC = FOLLY_PPC == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr bool kIsArchS390X = FOLLY_S390X == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace folly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -272,6 +279,9 @@ constexpr auto kIsLittleEndian = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr auto kIsLittleEndian = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__) && defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Darwin ppc/ppc64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++constexpr auto kIsLittleEndian = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr auto kIsLittleEndian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/detail/base64_detail/Base64Api.cpp folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9c8493c06..4ada55281 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -31,10 +31,16 @@ Base64RuntimeImpl base64EncodeSelectImplementation() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         base64URLDecodeSWAR};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__POWERPC__) || (defined(__powerpc__) && defined(WORDS_BIGENDIAN)) // PowerPC BE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      base64EncodeScalar,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      base64URLEncode};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else // Everything but PowerPC BE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       base64EncodeScalar,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       base64URLEncodeScalar,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       base64DecodeSWAR,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       base64URLDecodeSWAR};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace folly::detail::base64_detail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/io/async/AsyncUDPSocket.cpp folly/io/async/AsyncUDPSocket.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ce0e33e96..6748c9aab 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/io/async/AsyncUDPSocket.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/io/async/AsyncUDPSocket.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -262,6 +262,7 @@ void AsyncUDPSocket::init(sa_family_t family, BindOptions bindOptions) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             "failed to set IPV6_RECVTCLASS on the socket",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             errno);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #ifdef IP_RECVTOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (family == AF_INET) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (netops::setsockopt(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               socket, IPPROTO_IP, IP_RECVTOS, &flag, sizeof(flag)) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -270,6 +271,7 @@ void AsyncUDPSocket::init(sa_family_t family, BindOptions bindOptions) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             "failed to set IP_RECVTOS on the socket",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             errno);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/net/NetOps.h folly/net/NetOps.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 674a216a2..c5881a7d9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/net/NetOps.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/net/NetOps.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -261,6 +261,16 @@ struct mmsghdr {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define F_COPY_CMSG_INT_DATA(cm, val, len) memcpy(CMSG_DATA(cm), val, len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* _WIN32 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef IPV6_TCLASS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define IPV6_TCLASS 36
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef AI_NUMERICSERV            
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define AI_NUMERICSERV 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace folly {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace netops {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Poll descriptor is intended to be byte-for-byte identical to pollfd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/net/TcpInfoTypes.h folly/net/TcpInfoTypes.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 09a8a9907..d3a6caac4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/net/TcpInfoTypes.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/net/TcpInfoTypes.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -179,7 +179,7 @@ struct tcp_info_legacy {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   __u32 tcpi_total_retrans;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED > 101003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_HAVE_TCP_INFO 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using tcp_info = ::tcp_connection_info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int tcp_info_sock_opt = TCP_CONNECTION_INFO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/portability/Asm.h folly/portability/Asm.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e71da91c7..e1924c0e4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/portability/Asm.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/portability/Asm.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -43,8 +43,10 @@ inline void asm_volatile_pause() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   asm volatile("isb");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif (defined(__arm__) && !(__ARM_ARCH < 7))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   asm volatile("yield");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif FOLLY_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif FOLLY_PPC64 && !(defined(__APPLE__))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   asm volatile("or 27,27,27");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif (FOLLY_PPC || FOLLY_PPC64) && defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  __asm__ volatile ("or r27,r27,r27" ::: "memory");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace folly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/portability/Time.cpp folly/portability/Time.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 88f00150f..3f882b473 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/portability/Time.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/portability/Time.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -37,11 +37,13 @@ static void duration_to_ts(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !FOLLY_HAVE_CLOCK_GETTIME || FOLLY_FORCE_CLOCK_GETTIME_DEFINITION
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if __MACH__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach_init.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach_port.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach_time.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach_types.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/task.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/task_info.h> // for MacOS <= Lion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/thread_act.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/vm_map.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -64,6 +66,7 @@ static int clock_process_cputime(struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Get CPU usage for terminated threads.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef MACH_TASK_BASIC_INFO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   mach_task_basic_info task_basic_info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   mach_msg_type_number_t task_basic_info_count = MACH_TASK_BASIC_INFO_COUNT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   kern_result = task_info(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,6 +77,18 @@ static int clock_process_cputime(struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (UNLIKELY(kern_result != KERN_SUCCESS)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  task_basic_info task_basic_info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  mach_msg_type_number_t task_basic_info_count = TASK_BASIC_INFO_COUNT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  kern_result = task_info(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      mach_task_self(),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TASK_BASIC_INFO,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      (thread_info_t)&task_basic_info,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      &task_basic_info_count);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (UNLIKELY(kern_result != KERN_SUCCESS)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   auto cputime = time_value_to_ns(thread_times_info.user_time) +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       time_value_to_ns(thread_times_info.system_time) +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -99,6 +114,7 @@ static int clock_thread_cputime(struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FOLLY_ATTR_WEAK int clock_gettime(clockid_t clk_id, struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   switch (folly::to_underlying(clk_id)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case CLOCK_REALTIME: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -120,6 +136,7 @@ FOLLY_ATTR_WEAK int clock_gettime(clockid_t clk_id, struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int clock_getres(clockid_t clk_id, struct timespec* ts) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (clk_id != CLOCK_MONOTONIC) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -190,6 +207,7 @@ extern "C" int clock_getres(clockid_t clock_id, struct timespec* res) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       res->tv_nsec = time_t(perSec * kNsPerSec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case CLOCK_PROCESS_CPUTIME_ID:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case CLOCK_THREAD_CPUTIME_ID: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       DWORD adj, timeIncrement;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -198,12 +216,11 @@ extern "C" int clock_getres(clockid_t clock_id, struct timespec* res) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       res->tv_sec = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       res->tv_nsec = long(timeIncrement * 100);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -236,6 +253,7 @@ extern "C" int clock_gettime(clockid_t clock_id, struct timespec* tp) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       duration_to_ts(now, tp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case CLOCK_PROCESS_CPUTIME_ID: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (!GetProcessTimes(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               GetCurrentProcess(),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -268,7 +286,7 @@ extern "C" int clock_gettime(clockid_t clock_id, struct timespec* tp) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           filetimeToUnsignedNanos(kernalTime) +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               filetimeToUnsignedNanos(userTime));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/system/ThreadId.cpp folly/system/ThreadId.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e426b39e1..b297d671f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/system/ThreadId.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/system/ThreadId.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -40,9 +40,17 @@ namespace detail {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint64_t getOSThreadIDSlow() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  uint64_t tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  pthread_threadid_np(nullptr, &tid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #if MAC_OS_X_VERSION_MAX_ALLOWED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    tid = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    tid = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    pthread_threadid_np(nullptr, &tid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(_WIN32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return uint64_t(GetCurrentThreadId());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__FreeBSD__)
</span></pre><pre style='margin:0'>

</pre>