<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/bd10dee45041b96d7e7ba50c817e1e27bbb908c3">https://github.com/macports/macports-ports/commit/bd10dee45041b96d7e7ba50c817e1e27bbb908c3</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit bd10dee45041b96d7e7ba50c817e1e27bbb908c3
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Tue Feb 6 23:14:30 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    iwnet: update to 2024.02.06, drop a temporary patch
</span>---
 net/iwnet/Portfile                                 |  20 ++--
 ...poller_poll_in_thread-now-waits-poller-th.patch | 101 ---------------------
 2 files changed, 6 insertions(+), 115 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/iwnet/Portfile b/net/iwnet/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c08d345cd2c..7a0d9703094 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/iwnet/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/iwnet/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -8,8 +8,8 @@ PortGroup           legacysupport 1.1
</span> # strndup, clock_gettime
 legacysupport.newest_darwin_requires_legacy 15
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        Softmotions iwnet 81b6ad3d69ff3654bdad04478666edbf4d3f5d3f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-version             2024.01.27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        Softmotions iwnet aae1b8b52b1ac37d0d521939ebac17b5bdfbb060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             2024.02.06
</span> revision            0
 categories          net devel
 license             MIT
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,19 +19,11 @@ long_description    {*}${description} providing websockets client/server, SSL, \
</span>                     reverse proxy and routing.
 # Due to: https://github.com/Softmotions/iwnet/issues/5
 platforms           {darwin > 9}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  c4c0ce4688fad27a03135c597eb42f5a9d7068d7 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  418bf8c2de707559fd21ddb6474c989377de9793eed3bb993bd66b429ad0c94d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    824035
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  25ee3b969ad2b6dc09abbd31e323145f356cab58 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  2f432ad82b0ce770e40fbe34917a1b9d22478067cc64e2b33eabb536d53f9955 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    824248
</span> github.tarball_from archive
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Temporary fix reverting a breaking commit:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://github.com/Softmotions/iwnet/commit/414ce1adc6484c6518ac8587107ff2905328f8de
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# FIXME: add an implementation for pthread_barrier. See also:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://github.com/ademakov/DarwinPthreadBarrier
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://github.com/envy/knx2influx/issues/20
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://github.com/pmwkaa/ioarena/issues/10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> depends_lib-append  port:iowow
 
 compiler.c_standard 2011
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -41,7 +33,7 @@ configure.args-append \
</span>                     -DBUILD_TESTS:BOOL=ON
 
 # https://github.com/Softmotions/iwnet/issues/6
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match *gcc* ${configure.compiler}] && ${configure.build_arch} in [list arm i386 ppc]} {
</span>     configure.ldflags-append \
                     -latomic
 }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/iwnet/files/0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch b/net/iwnet/files/0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3eb3da8b091..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/iwnet/files/0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,101 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ca10b1e678e651f62afe67c6abd9c1d9f44daf9f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 4 Feb 2024 15:06:38 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Revert "* iwn_poller_poll_in_thread() now waits poller thread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- starts"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This reverts commit 414ce1adc6484c6518ac8587107ff2905328f8de.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/poller/iwn_poller.c | 31 +++++++++----------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 9 insertions(+), 22 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git src/poller/iwn_poller.c src/poller/iwn_poller.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a8f4627..5cf268c 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/poller/iwn_poller.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/poller/iwn_poller.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -56,10 +56,8 @@ struct iwn_poller {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   IWHMAP *slots;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char   *thread_name;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  pthread_mutex_t    mtx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  pthread_barrier_t  _barrier_poll; ///< Poll-in-thread barrier
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  pthread_barrier_t *barrier_poll;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint32_t flags;                 ///< Poller mode flags. See iwn_poller_flags_set()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  pthread_mutex_t mtx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  uint32_t flags; ///< Poller mode flags. See iwn_poller_flags_set()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   volatile bool stop;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   volatile bool housekeeping;          ///< CAS barrier for timeout cleaner
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -129,7 +127,7 @@ IW_INLINE void _rw_fd_unsubscribe(struct poller_slot *s) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!(s->flags & SLOT_UNSUBSCRIBED)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     s->flags |= SLOT_UNSUBSCRIBED;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     struct kevent ev[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      { s->fd, EVFILT_READ, EV_DELETE },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      { s->fd, EVFILT_READ,  EV_DELETE },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       { s->fd, EVFILT_WRITE, EV_DELETE },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     kevent(s->poller->fd, ev, sizeof(ev) / sizeof(ev[0]), 0, 0, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -376,11 +374,11 @@ static void _timer_ready_impl(struct iwn_poller *p) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(IWN_KQUEUE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     struct kevent ev = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      .ident = p->fd,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .ident  = p->fd,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       .filter = EVFILT_TIMER,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      .flags = EV_ADD | EV_ENABLE | EV_CLEAR | EV_ONESHOT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .flags  = EV_ADD | EV_ENABLE | EV_CLEAR | EV_ONESHOT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       .fflags = NOTE_SECONDS,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      .data = timeout_next - ctime,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .data   = timeout_next - ctime,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (kevent(p->fd, &ev, 1, 0, 0, 0) == -1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       iwrc rc = iwrc_set_errno(IW_ERROR_ERRNO, errno);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -520,7 +518,7 @@ static iwrc _poller_timeout_add(struct poller_slot *s) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (timerfd_settime(s->fd, 0, &(struct itimerspec) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     .it_value = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      .tv_sec = s->timeout / 1000,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .tv_sec  = s->timeout / 1000,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       .tv_nsec = (int64_t) (s->timeout % 1000) * 1000000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }, 0) < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -683,9 +681,9 @@ void iwn_poller_poke(struct iwn_poller *p) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     struct kevent ev[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       { p->fd, EVFILT_USER, EV_ADD | EV_ONESHOT },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(NOTE_TRIGGER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      { p->fd, EVFILT_USER, 0, NOTE_TRIGGER }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      { p->fd, EVFILT_USER, 0, NOTE_TRIGGER     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(EV_TRIGGER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      { p->fd, EVFILT_USER, EV_TRIGGER, 0 }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      { p->fd, EVFILT_USER, EV_TRIGGER, 0       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #error "Either NOTE_TRIGGER or EV_TRIGGER is required."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -958,16 +956,9 @@ iwrc iwn_poller_poll_in_thread(struct iwn_poller *p, const char *thr_name, pthre
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (thr_name) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     p->thread_name = strdup(thr_name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  RCN(finish, pthread_barrier_init(&p->_barrier_poll, 0, 2));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  p->barrier_poll = &p->_barrier_poll;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   RCN(finish, pthread_create(out_thr, 0, _poll_worker, p));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  pthread_barrier_wait(p->barrier_poll);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- finish:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (p->barrier_poll) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    pthread_barrier_destroy(p->barrier_poll);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    p->barrier_poll = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return rc;
</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;'>-@@ -998,10 +989,6 @@ void iwn_poller_poll(struct iwn_poller *p) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     p->stop = false;
</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 (p->barrier_poll) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    pthread_barrier_wait(p->barrier_poll);
</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;'>-   while (!p->stop) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(IWN_KQUEUE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     int nfds = kevent(p->fd, 0, 0, event, max_events, 0);
</span></pre><pre style='margin:0'>

</pre>