Re: [NEW] devel/rapidjson

2021-05-16 Thread Nick Gasson


On 05/16/21 18:05 PM, Stuart Henderson wrote:
> On 2021/05/16 09:51, Anthony J. Bentley wrote:
>> 
>> This packages 1.1.0 which was released in 2016. But rapidjson sees
>> continuous development in Git, just no releases; see
>> https://github.com/Tencent/rapidjson/issues/1759
>> 
>> As a result, many projects embed newer versions. Are we sure having
>> this installed won't break any existing ports?

Sorry, I didn't check if any other ports were already including this as
a dependency.  I found the following using grep in /usr/ports, but I
guess that will miss some:

devel/leatherman : bundles 1.0.2 in the upstream tar
emulators/mgba/ : bundles an unknown version in the upstream tar
games/barony : fetches release 1.1.0 in the port makefile
games/ja2-stracciatella : bundles 0.11 in the upstream tar
net/bro : bundles an unknown version in the upstream tar

>
> I agree with your concerns. Also ccls uses a specific commit id of
> rapidjson as a git submodule: 
> https://github.com/MaskRay/ccls/tree/master/third_party
>

Yes, although CMakeLists.txt checks for minimum version 1.1.0 if
USE_SYSTEM_RAPIDJSON is true.  That might be because Linux distros which
aggressively de-vendor dependencies are packaging that.  I'm happy to
bundle it in ccls and drop the separate port if that's preferred?  Or
ccls can fetch it directly like games/barony does.

> Nick, I think you should just to generate a proper tar for ccls rather than
> using the broken github autogenerated one.

Sure.  But does it need to be hosted permanently somewhere?

>
> (Also wondering, is ccls going to be another port that is going to need
> work every time clang is updated?)

I don't know, but I made this on 6.9 originally with clang/LLVM 10 and
then rebuilt it without modification after updating to current with 11.

--
Thanks,
Nick



[NEW] devel/rapidjson

2021-05-16 Thread Nick Gasson
Hi,

Please find attached a new port devel/rapidjson which I'm packaging as a
dependency of ccls (a C/C++ language server) which I'll send out
shortly.

Description:

RapidJSON is a self-contained and header-only JSON parser and generator
for C++ with both SAX and DOM style APIs. It fully supports UTF-8,
UTF-16, UTF-32 (LE & BE) and also optionally supports SSE2/SSE4.2 for
acceleration.

Categories: devel

--
Thanks,
Nick



rapidjson.tgz
Description: rapidjson.tgz


[NEW] devel/ccls

2021-05-16 Thread Nick Gasson
Hi,

I've attached a new port for ccls, a C/C++ language server (for code
completion, indexing, etc.).

Description:

ccls is a C/C++/Objective-C language server supporting most features of
the LSP protocol including code completion, cross references,
formatting, caller/callee hierarchies, symbol renaming, diagnostics,
semantic highlighting, and more.

Categories: devel

This (and the rapidjson dependency) is my first attempt at making a port
so appreciate any feedback.  I've run portcheck and been using it myself
for a few weeks with Emacs lsp-mode.

--
Thanks,
Nick



ccls.tgz
Description: ccls.tgz


Boost Asio and MSG_NOSIGNAL

2020-09-19 Thread Nick Gasson
Hi,

Recently I was porting a program that uses Boost Asio to OpenBSD and
found it was exiting frequently with SIGPIPE. This doesn't happen on
Linux because on that platform Asio passes the MSG_NOSIGNAL flag to
sendmsg(2). (It doesn't on FreeBSD either because Asio uses the
SO_NOSIGNAL socket option there.)

The patch below for Boost 1.67 sets MSG_NOSIGNAL on OpenBSD too. Could
you add it to the patches in the ports tree? I've also submitted it
upstream [1] but not sure if/when it will be applied.

--- boost/asio/detail/impl/socket_ops.ipp.orig  Sun Sep 20 09:48:05 2020
+++ boost/asio/detail/impl/socket_ops.ipp   Sun Sep 20 09:52:00 2020
@@ -1178,7 +1178,7 @@
   msghdr msg = msghdr();
   msg.msg_iov = const_cast(bufs);
   msg.msg_iovlen = static_cast(count);
-#if defined(__linux__)
+#if defined(__linux__) || defined(__OpenBSD__)
   flags |= MSG_NOSIGNAL;
 #endif // defined(__linux__)
   signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
@@ -1307,7 +1307,7 @@
   msg.msg_namelen = static_cast(addrlen);
   msg.msg_iov = const_cast(bufs);
   msg.msg_iovlen = static_cast(count);
-#if defined(__linux__)
+#if defined(__linux__) || defined(__OpenBSD__)
   flags |= MSG_NOSIGNAL;
 #endif // defined(__linux__)
   signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);


[1] https://github.com/chriskohlhoff/asio/pull/549

--
Thanks,
Nick