<pre style='margin:0'>
Landon Fuller (landonf) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a567776531454d000232f478812243c5615a9f1c">https://github.com/macports/macports-ports/commit/a567776531454d000232f478812243c5615a9f1c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit a567776531454d000232f478812243c5615a9f1c
</span>Author: Landon Fuller <landonf@macports.org>
AuthorDate: Thu Feb 4 12:14:19 2021 -0700

<span style='display:block; white-space:pre;color:#404040;'>    nq: new port
</span>---
 sysutils/nq/Portfile          |  27 ++++++++++
 sysutils/nq/files/kqueue.diff | 121 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/nq/Portfile b/sysutils/nq/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..fba16f192e1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/nq/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                nq
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          sysutils
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {landonf @landonf} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             public-domain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Unix command line queue utility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    nq allows creating very lightweight job queue \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    systems which require no setup, maintenance, supervision, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    or any long-running processes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        leahneukirchen nq 0.3.1 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  ae794b283b21a7b44b0c855ee617421010b87dc8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  b4c6dbc8aaf98142cea45bb61c22d1352021e6186b433f991244c1ed934048fb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    11032
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          kqueue.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_configure       no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args          CC=${configure.cc} CFLAGS="${configure.cflags} ${configure.cc_archflags}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.args       PREFIX="${prefix}"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/nq/files/kqueue.diff b/sysutils/nq/files/kqueue.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9f6a22c0117
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/nq/files/kqueue.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,121 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fq.1 b/fq.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index df60052..dec179b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- fq.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ fq.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,4 +1,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.Dd August 25, 2015
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.Dd January 31, 2021
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .Dt FQ 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .Os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .Sh NAME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -49,6 +49,9 @@ Directory where lock files/job output resides, see
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ On Linux,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .Xr inotify 7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ is used to monitor job output.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++On FreeBSD and macOS,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.Xr kqueue 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++is used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ On other operating systems, polling is used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .Sh SEE ALSO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .Xr nq 1 ,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fq.c b/fq.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 11e176c..1a702d6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- fq.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ fq.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,11 +25,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define USE_INOTIFY
</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(__FreeBSD__) || defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define USE_KEVENT
</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;'>+ #ifdef USE_INOTIFY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/inotify.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char ibuf[8192];
</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;'>++#ifdef USE_KEVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/event.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;'>+ char buf[8192];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -62,6 +70,10 @@ main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef USE_INOTIFY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int ifd, wd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef USE_KEVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int kq, note;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  struct kevent kev;
</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;'>+   close(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -134,6 +146,11 @@ main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (ifd < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           exit(111);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef USE_KEVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  kq = kqueue();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (kq < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          exit(111);
</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;'>+   for (i = optind; i < argc; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           loff = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -163,6 +180,20 @@ main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   exit(111);
</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;'>++#ifdef USE_KEVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          note = NOTE_WRITE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          note |= NOTE_FUNLOCK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __FreeBSD__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          note |= NOTE_CLOSE_WRITE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EV_SET(&kev, fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, note, 0, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if (kevent(kq, &kev, 1, NULL, 0, NULL) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  perror("kevent");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  exit(111);
</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;'>+           while (1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   off = lseek(fd, 0, SEEK_END);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -176,9 +207,11 @@ main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if (flock(fd, LOCK_EX | LOCK_NB) == -1 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               errno == EWOULDBLOCK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef USE_INOTIFY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(USE_INOTIFY)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                   /* any inotify event is good */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                   read(ifd, ibuf, sizeof ibuf);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(USE_KEVENT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                  kevent(kq, NULL, 0, &kev, 1, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                   /* poll for size change */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                   while (off == lseek(fd, 0, SEEK_END))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -217,12 +250,19 @@ main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef USE_INOTIFY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           inotify_rm_watch(ifd, wd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef USE_KEVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EV_SET(&kev, fd, EVFILT_VNODE, EV_DELETE, 0, 0, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          kevent(kq, &kev, 1, NULL, 0, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           close(fd);
</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;'>+ #ifdef USE_INOTIFY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   close(ifd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef USE_KEVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  close(kq);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span></pre><pre style='margin:0'>

</pre>