Dear all,

As mentioned in a previous email I sent to this mailing list [1], I am
currently working on porting SimpleXMQ and SimpleX Chat CLI to OpenBSD.
Unfortunately, I have encountered several challenges. In addition to the
issue I previously discussed [1], two more complications have arisen:

1. OpenSSL Requirement: It is necessary to use OpenSSL because,
unfortunately, LibreSSL does not support the encryption algorithms used by
this software.

README.md seems to say OpenSSL is needed for the server part.  I
suspect it's about the lack of Ed448.  Do you know what else would be
missing?

I have asked the developers what algorithms are missing from LibreSSL that prevent SimpleXMQ from working properly, but have not received a reply. I think that the situation with LibreSSL is similar to what happens with BSD Make: instead of testing their software with other implementations of Make, or making sure their Makefiles comply with the POSIX standard for portability, developers often just tell you to install and use GNU Make. It's always easier to push software monocultures than to embrace the diversity that exists. On the other hand, as I mentioned in my first email, SimpleXMQ is a dependency for both the server and the client.


This issue seems to have a relatively straightforward
solution by installing OpenSSL from the ports tree and specifying the
location of these libraries in a cabal.project.local file located in the
root directory before compiling the software.

The LibreSSL developers try to keep the list of OpenSSL consumers in
ports short, but yes, it is a possible approach.

I managed to compile SimpleXMQ version 6.0.1.0 without errors using LibreSSL version 3.9.0 with the patch mentioned at the end of this email. However, successfully building it is one thing, making sure it works properly is another. I have attempted to link the binaries with OpenSSL 1.1.1, which is available in the ports tree, by adding the location of these libraries to a cabal.project.local file. Unfortunately, I have not been able to link the binaries correctly with these libraries, and have encountered persistent errors related to the libraries not loading.


2. Linux TCP Socket Options: SimpleXMQ, on which the SimpleX Chat CLI client
depends, uses Linux-specific TCP socket options [2] that are not available
in OpenBSD [3], namely TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT. My
questions regarding this issue are:

    - Why are these options not present in OpenBSD's TCP stack? Both FreeBSD
[4] and NetBSD [5] include them in their TCP stacks. Is there a specific
reason for their absence in OpenBSD?

I suspect nobody bothered to implement those options.  I think adding
them would make sense.

I also think it would make sense to add these options to OpenBSD's TCP stack, but I have neither the cognitive ability to implement them nor the authority to decide on changes in OpenBSD.


    - Is there an equivalent to these TCP socket options in OpenBSD? Are
there other ports facing similar issues? If so, how have they been patched
to function correctly in OpenBSD?

By patching out the relevant setsockopt(2) calls, or by hiding them
behind #ifndef TCP_KEEPSOMETHING. Just use grep on the ports tree to
see examples.

For your reference, here is the source code file I am attempting to patch to
build SimpleXMQ on OpenBSD:

https://github.com/simplex-chat/simplexmq/blob/stable/src/Simplex/Messaging/Transport/KeepAlive.hs

I guess you could just kill lines 65-67.

Thanks for your suggestion; it helped me create a patch to successfully compile SimpleXMQ on OpenBSD. I have submitted a pull request to the SimpleXMQ GitHub repository with the patch [1], but I doubt it will be accepted -- they will probably ignore it as they have so far. In the end, I may have to add the patch to the port myself.


References:
1. https://marc.info/?l=openbsd-ports&m=172387102027342&w=2
2. https://www.man7.org/linux/man-pages/man7/tcp.7.html
3. https://man.openbsd.org/tcp
4. https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
5. https://man.netbsd.org/tcp.4

Thank you for your time and assistance.

Best regards,
David.



References:

1. https://github.com/simplex-chat/simplexmq/pull/1273/files

Reply via email to