<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>