<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/95601dba52292c5d810510c2862d933ccbf5d6ed">https://github.com/macports/macports-ports/commit/95601dba52292c5d810510c2862d933ccbf5d6ed</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 95601dba52292c5d810510c2862d933ccbf5d6ed
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Thu Jul 13 23:02:27 2023 +0800

<span style='display:block; white-space:pre;color:#404040;'>    capnproto: fix build on older systems and powerpc
</span>---
 devel/capnproto/Portfile                           | 19 ++++++
 .../files/0001-message.h-fix-for-Darwin-ppc.patch  | 22 +++++++
 ...filesystem.c-a-hack-to-fix-overloaded-set.patch | 60 +++++++++++++++++++
 ...async-io-unix.c-fix-for-missing-SOL_LOCAL.patch | 24 ++++++++
 .../0004-capability.c-a-hack-for-capability.patch  | 45 +++++++++++++++
 ...arwin-PPC-disable-negative-broken-asserts.patch | 67 ++++++++++++++++++++++
 ...06-capability-test-fix-for-macOS-with-GCC.patch | 36 ++++++++++++
 .../files/0007-mutex.c-fix-for-Apple.patch         | 49 ++++++++++++++++
 8 files changed, 322 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/Portfile b/devel/capnproto/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 91b704105a3..fdaa432bdbe 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/capnproto/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -47,6 +47,25 @@ configure.cppflags-replace \
</span> if {[string match *clang* ${configure.compiler}]} {
     configure.cxx_stdlib        libc++
     configure.ldflags-append    -stdlib=libc++
<span style='display:block; white-space:pre;background:#e0ffe0;'>+} elseif {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Partly merged: https://github.com/capnproto/capnproto/pull/1711
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Re other hacks, see:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://github.com/capnproto/capnproto/issues/1710
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://github.com/capnproto/capnproto/issues/1712
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # With these, 946 test cases pass, 11 fail.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # FIXME: judging by test results, mutices and filesystem require attention.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append   0001-message.h-fix-for-Darwin-ppc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        0002-filesystem.c-a-hack-to-fix-overloaded-set.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        0003-async-io-unix.c-fix-for-missing-SOL_LOCAL.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        0004-capability.c-a-hack-for-capability.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        0005-Darwin-PPC-disable-negative-broken-asserts.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        0006-capability-test-fix-for-macOS-with-GCC.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        0007-mutex.c-fix-for-Apple.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.cxxflags-append   -std=gnu++17
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # ___atomic_load_8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://github.com/capnproto/capnproto/issues/1713
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.ldflags-append    -latomic
</span> }
 
 default_variants            +openssl
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/files/0001-message.h-fix-for-Darwin-ppc.patch b/devel/capnproto/files/0001-message.h-fix-for-Darwin-ppc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..bc28b162728
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0001-message.h-fix-for-Darwin-ppc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 581df7113bee0e9e8dd7ce23493065a4e93e0ec2 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 10 Jul 2023 20:36:50 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/7] message.h: fix for Darwin ppc
</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;'>+ c++/src/capnp/message.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/capnp/message.h c++/src/capnp/message.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d91c0b13..af87aec8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/capnp/message.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/capnp/message.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -127,7 +127,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ReaderOptions options;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__EMSCRIPTEN__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__EMSCRIPTEN__) || (defined(__APPLE__) && defined(__ppc__))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static constexpr size_t arenaSpacePadding = 19;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static constexpr size_t arenaSpacePadding = 18;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/files/0002-filesystem.c-a-hack-to-fix-overloaded-set.patch b/devel/capnproto/files/0002-filesystem.c-a-hack-to-fix-overloaded-set.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..004ccb63ab0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0002-filesystem.c-a-hack-to-fix-overloaded-set.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,60 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c5808c27940d53e73168de9d30d4fc2aa316bffc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 10 Jul 2023 22:54:06 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/7] filesystem.c++: a hack to fix overloaded set
</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;'>+ c++/src/kj/filesystem.c++ | 14 ++++++++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 10 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/kj/filesystem.c++ c++/src/kj/filesystem.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1dff22ba..62346df4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/kj/filesystem.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/kj/filesystem.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1394,6 +1394,12 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void set(Own<const Directory>&& value) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       node.init<DirectoryNode>(DirectoryNode { kj::mv(value) });
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void set_file(Own<const File>&& value) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      node.init<FileNode>(FileNode { kj::mv(value) });
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void set_dir(Own<const Directory>&& value) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      node.init<DirectoryNode>(DirectoryNode { kj::mv(value) });
</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;'>+   template <typename T>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1510,14 +1516,14 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (mode == TransferMode::COPY) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               auto copy = newInMemoryFile(clock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               copy->copy(0, **file, 0, size.orDefault(kj::maxValue));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              entry.set(kj::mv(copy));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              entry.set_file(kj::mv(copy));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               if (mode == TransferMode::MOVE) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 KJ_ASSERT(fromDirectory.tryRemove(fromPath), "couldn't move node", fromPath) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   return false;
</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;'>+-              entry.set(kj::mv(*file));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              entry.set_file(kj::mv(*file));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1542,14 +1548,14 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   cpim.entries.insert(std::make_pair(nameRef, kj::mv(newEntry)));
</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;'>+-              entry.set(kj::mv(copy));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              entry.set_dir(kj::mv(copy));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               if (mode == TransferMode::MOVE) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 KJ_ASSERT(fromDirectory.tryRemove(fromPath), "couldn't move node", fromPath) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   return false;
</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;'>+-              entry.set(kj::mv(*subdir));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              entry.set_dir(kj::mv(*subdir));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           } else {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/files/0003-async-io-unix.c-fix-for-missing-SOL_LOCAL.patch b/devel/capnproto/files/0003-async-io-unix.c-fix-for-missing-SOL_LOCAL.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..be46e214458
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0003-async-io-unix.c-fix-for-missing-SOL_LOCAL.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 6337510b45f6880f6d385982b96539544ca615e2 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 10 Jul 2023 23:07:13 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/7] async-io-unix.c++: fix for missing SOL_LOCAL
</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;'>+ c++/src/kj/async-io-unix.c++ | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/kj/async-io-unix.c++ c++/src/kj/async-io-unix.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3da285af..62ce2132 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/kj/async-io-unix.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/kj/async-io-unix.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,8 +66,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/ucred.h>
</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(SOL_LOCAL) && (__FreeBSD__ || __DragonflyBSD__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// On DragonFly or FreeBSD < 12.2 you're supposed to use 0 for SOL_LOCAL.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(SOL_LOCAL) && (__FreeBSD__ || __DragonflyBSD__ || __APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// On DragonFly, FreeBSD < 12.2 and older Darwin you're supposed to use 0 for SOL_LOCAL.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SOL_LOCAL 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;color:#808080;'>diff --git a/devel/capnproto/files/0004-capability.c-a-hack-for-capability.patch b/devel/capnproto/files/0004-capability.c-a-hack-for-capability.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..fe7c1ddc0b3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0004-capability.c-a-hack-for-capability.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,45 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 0b297ec5f527fe62f50e7db79bcf12ca9164fd6f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 11 Jul 2023 06:18:39 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 4/7] capability.c++: a hack for capability
</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;'>+ c++/src/capnp/capability.c++ | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c++/src/capnp/membrane.c++   | 8 ++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 5 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/capnp/capability.c++ c++/src/capnp/capability.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9462c6c2..c3854f6c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/capnp/capability.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/capnp/capability.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1148,7 +1148,7 @@ namespace _ {  // private
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Capability::Client CapabilityServerSetBase::addInternal(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     kj::Own<Capability::Server>&& server, void* ptr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return Capability::Client(kj::refcounted<LocalClient>(kj::mv(server), *this, ptr));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return Capability::Client(kj::Own<ClientHook>(kj::refcounted<LocalClient>(kj::mv(server), *this, ptr)));
</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;'>+ kj::Promise<void*> CapabilityServerSetBase::getLocalServerInternal(Capability::Client& client) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/capnp/membrane.c++ c++/src/capnp/membrane.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 845ff954..2ae6f830 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/capnp/membrane.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/capnp/membrane.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -553,13 +553,13 @@ kj::Own<ClientHook> membrane(kj::Own<ClientHook> inner, MembranePolicy& policy,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }  // namespace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Capability::Client MembranePolicy::importExternal(Capability::Client external) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return Capability::Client(kj::refcounted<MembraneHook>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ClientHook::from(kj::mv(external)), addRef(), true));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return Capability::Client(kj::Own<ClientHook>(kj::refcounted<MembraneHook>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      ClientHook::from(kj::mv(external)), addRef(), true)));
</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;'>+ Capability::Client MembranePolicy::exportInternal(Capability::Client internal) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return Capability::Client(kj::refcounted<MembraneHook>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ClientHook::from(kj::mv(internal)), addRef(), false));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return Capability::Client(kj::Own<ClientHook>(kj::refcounted<MembraneHook>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      ClientHook::from(kj::mv(internal)), addRef(), false)));
</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;'>+ Capability::Client MembranePolicy::importInternal(
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/files/0005-Darwin-PPC-disable-negative-broken-asserts.patch b/devel/capnproto/files/0005-Darwin-PPC-disable-negative-broken-asserts.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a6ccc30799d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0005-Darwin-PPC-disable-negative-broken-asserts.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,67 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ba112638046984c55faa97a5298779426bc762c6 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 11 Jul 2023 08:57:04 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5/7] Darwin PPC: disable negative broken asserts
</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;'>+ c++/src/kj/common-test.c++ | 9 ++++++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c++/src/kj/memory-test.c++ | 2 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c++/src/kj/test.h          | 4 ++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 12 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/kj/common-test.c++ c++/src/kj/common-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 97856125..750b3012 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/kj/common-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/kj/common-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -659,18 +659,21 @@ TEST(Common, Defer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(Common, CanConvert) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(canConvert<long, int>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  static_assert(!canConvert<long, void*>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct Super {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct Sub: public Super {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(canConvert<Sub, Super>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  static_assert(!canConvert<Super, Sub>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(canConvert<Sub*, Super*>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  static_assert(!canConvert<Super*, Sub*>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(canConvert<void*, const void*>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef BROKEN_ASSERTS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  static_assert(!canConvert<long, void*>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  static_assert(!canConvert<Super, Sub>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  static_assert(!canConvert<Super*, Sub*>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(!canConvert<const void*, void*>(), "failure");
</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;'>+ TEST(Common, ArrayAsBytes) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/kj/memory-test.c++ c++/src/kj/memory-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9ad3ce9e..8858b065 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/kj/memory-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/kj/memory-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,7 +42,9 @@ TEST(Memory, CanConvert) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct Sub: public Super {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(canConvert<Own<Sub>, Own<Super>>(), "failure");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef BROKEN_ASSERTS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(!canConvert<Own<Super>, Own<Sub>>(), "failure");
</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;'>+ struct Nested {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/kj/test.h c++/src/kj/test.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ef278070..00e85f6e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/kj/test.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/kj/test.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -205,4 +205,8 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }  // namespace _ (private)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }  // namespace kj
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define BROKEN_ASSERTS
</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;'>+ KJ_END_HEADER
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/files/0006-capability-test-fix-for-macOS-with-GCC.patch b/devel/capnproto/files/0006-capability-test-fix-for-macOS-with-GCC.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5b0f45cc65a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0006-capability-test-fix-for-macOS-with-GCC.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 6e3d2c3ddd9739c8e00361b4abffdda4c87657e3 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 11 Jul 2023 09:10:09 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 6/7] capability-test: fix for macOS with GCC
</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;'>+ c++/src/capnp/capability-test.c++ | 7 +++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 5 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/capnp/capability-test.c++ c++/src/capnp/capability-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a645abce..e6f26e01 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/capnp/capability-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/capnp/capability-test.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -653,7 +653,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Too lazy to write a whole separate test for each of these cases...  so just make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // sure they both compile here, and only actually test the latter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             box.set("cap", kj::heap<TestExtendsDynamicImpl>(callCount));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if __GNUG__ && !__clang__ && __GNUG__ == 4 && __GNUC_MINOR__ == 9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __GNUG__ && !__clang__ && ((__GNUG__ == 4 && __GNUC_MINOR__ == 9) || __APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // The last line in this block tickles a bug in Debian G++ 4.9.2 that is not present
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // in 4.8.x nor in 4.9.4:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             //     https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=781060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -662,9 +662,12 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // For the moment, we can get away with skipping the last line as the previous line
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // will set things up in a way that allows the test to complete successfully.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // The issue also arises on macOS when building with GCC.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             box.set("cap", kj::heap<TestExtendsImpl>(callCount));
</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;'>+     } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       KJ_FAIL_ASSERT("Method not implemented", methodName);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/capnproto/files/0007-mutex.c-fix-for-Apple.patch b/devel/capnproto/files/0007-mutex.c-fix-for-Apple.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d78d4b258ae
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/capnproto/files/0007-mutex.c-fix-for-Apple.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From a245f0b756d4dfd0aeee4315ee64657ee7a71190 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 11 Jul 2023 09:46:00 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 7/7] mutex.c++: fix for Apple
</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;'>+ c++/src/kj/mutex.c++ | 15 ++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 14 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git c++/src/kj/mutex.c++ c++/src/kj/mutex.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1ddd4921..8f0534f7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/kj/mutex.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/kj/mutex.c++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -866,11 +866,17 @@ void Once::reset() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int pthreadError = code; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (pthreadError != 0) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      KJ_LOG(ERROR, #code, strerror(pthreadError)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      KJ_LOG(WARNING, #code, strerror(pthreadError)); \
</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;'>++#if defined(__APPLE__) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Mutex::Mutex() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  KJ_PTHREAD_CALL(pthread_rwlock_init(&mutex, nullptr));
</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;'>+ Mutex::Mutex(): mutex(PTHREAD_RWLOCK_INITIALIZER) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Mutex::~Mutex() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   KJ_PTHREAD_CLEANUP(pthread_rwlock_destroy(&mutex));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1057,9 +1063,16 @@ void Mutex::induceSpuriousWakeupForTest() {
</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;'>++#if defined(__APPLE__) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Once::Once(bool startInitialized)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    : state(startInitialized ? INITIALIZED : UNINITIALIZED) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      KJ_PTHREAD_CALL(pthread_mutex_init(&mutex, nullptr));
</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;'>+ Once::Once(bool startInitialized)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     : state(startInitialized ? INITIALIZED : UNINITIALIZED),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       mutex(PTHREAD_MUTEX_INITIALIZER) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Once::~Once() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   KJ_PTHREAD_CLEANUP(pthread_mutex_destroy(&mutex));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span></pre><pre style='margin:0'>

</pre>