From: openbsd@systemfailure.net Subject: Updates for the Reticulum ecosystem: py-rns, py-lxmf, nomadnet To: Aaron Bieber ,ports@openbsd.org Date: Sun, 11 Jan 2026 15:37:34 +0000 Hello, A lot has been going on recently for the Reticulum ecosystem. Here are updates for the 3 ports already in the tree: - net/py-rns 1.1.2 - net/py-lxmf 0.9.3 - net/nomadnet 0.9.7 These recent versions ship with new features and bug fixes. The attached patches are relatively simple, and with them the ports build and run fine, at least on amd64. For py-rns, 'make test' fails (error message below) but it does not prevent the port from working as expected. Best regards, SF -- It seems 'make test' fails because the tests directory is not created, I don't know why: ===> py3-rns-1.1.2 depends on: py3-serial-* -> py3-serial-3.5p0 ===> py3-rns-1.1.2 depends on: py3-cryptography-* -> py3-cryptography-46.0.3 ===> py3-rns-1.1.2 depends on: py3-test-* -> py3-test-9.0.2 ===> Regression tests for py3-rns-1.1.2 ============================= test session starts ============================== platform openbsd7 -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python3.13 cachedir: .pytest_cache hypothesis profile 'default' rootdir: /usr/ports/pobj/py-rns-1.1.2/rns-1.1.2 plugins: hypothesis-6.138.14 collecting ... ERROR: file or directory not found: tests/all.py collected 0 items ============================ no tests ran in 0.97s ============================= Index: Makefile =================================================================== RCS file: /cvs/ports/net/py-rns/Makefile,v diff -u -p -r1.4 Makefile --- Makefile 17 Jul 2025 16:26:32 -0000 1.4 +++ Makefile 9 Jan 2026 18:19:30 -0000 @@ -1,6 +1,6 @@ COMMENT = cryptography-based networking stack -MODPY_DISTV = 1.0.0 +MODPY_DISTV = 1.1.2 DISTNAME= rns-${MODPY_DISTV} PKGNAME = py-${DISTNAME} Index: distinfo =================================================================== RCS file: /cvs/ports/net/py-rns/distinfo,v diff -u -p -r1.3 distinfo --- distinfo 17 Jul 2025 16:26:32 -0000 1.3 +++ distinfo 9 Jan 2026 18:19:30 -0000 @@ -1,2 +1,2 @@ -SHA256 (rns-1.0.0.tar.gz) = nxxZTk6r1k3qTBvVmtG5KR5qKLHYq1aJoZcI8TEAc1s= -SIZE (rns-1.0.0.tar.gz) = 6695768 +SHA256 (rns-1.1.2.tar.gz) = /yr1ZJDAZa3MXziu8HCBsZuzVRAUBtENdo7FT3g6MMM= +SIZE (rns-1.1.2.tar.gz) = 388058 Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/net/py-rns/pkg/PLIST,v diff -u -p -r1.5 PLIST --- pkg/PLIST 23 Oct 2025 13:20:08 -0000 1.5 +++ pkg/PLIST 9 Jan 2026 18:19:30 -0000 @@ -3,6 +3,7 @@ bin/rnid bin/rnir bin/rnodeconf bin/rnpath +bin/rnpkg bin/rnprobe bin/rnsd bin/rnstatus @@ -85,6 +86,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/RNS/Cryptography/pure25519/ed25519_oop.py lib/python${MODPY_VERSION}/site-packages/RNS/Cryptography/pure25519/eddsa.py lib/python${MODPY_VERSION}/site-packages/RNS/Destination.py +lib/python${MODPY_VERSION}/site-packages/RNS/Discovery.py lib/python${MODPY_VERSION}/site-packages/RNS/Identity.py lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/ lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/AX25KISSInterface.py @@ -114,6 +116,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/SerialInterface.py lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/TCPInterface.py lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/UDPInterface.py +lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/WeaveInterface.py lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/__init__.py lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}/ lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}AX25KISSInterface.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} @@ -142,6 +145,8 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}TCPInterface.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}UDPInterface.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}UDPInterface.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}WeaveInterface.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}WeaveInterface.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/Interfaces/util/ @@ -173,6 +178,8 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnodeconf.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnpath.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnpath.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnpkg.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnpkg.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnprobe.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnprobe.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/${MODPY_PYCACHE}rnsd.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} @@ -186,6 +193,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnir.py lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnodeconf.py lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnpath.py +lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnpkg.py lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnprobe.py lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnsd.py lib/python${MODPY_VERSION}/site-packages/RNS/Utilities/rnstatus.py @@ -198,6 +206,8 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Channel.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Destination.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Destination.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Discovery.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Discovery.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Identity.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Identity.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/RNS/${MODPY_PYCACHE}Link.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} Index: Makefile =================================================================== RCS file: /cvs/ports/net/py-lxmf/Makefile,v diff -u -p -r1.4 Makefile --- Makefile 17 Jul 2025 16:26:56 -0000 1.4 +++ Makefile 9 Jan 2026 18:20:13 -0000 @@ -1,6 +1,6 @@ COMMENT = lightweight extensible message format -MODPY_DISTV = 0.8.0 +MODPY_DISTV = 0.9.3 DISTNAME= lxmf-${MODPY_DISTV} PKGNAME = py-${DISTNAME} Index: distinfo =================================================================== RCS file: /cvs/ports/net/py-lxmf/distinfo,v diff -u -p -r1.3 distinfo --- distinfo 17 Jul 2025 16:26:56 -0000 1.3 +++ distinfo 9 Jan 2026 18:20:13 -0000 @@ -1,2 +1,2 @@ -SHA256 (lxmf-0.8.0.tar.gz) = Elz26v5jFwY4XMKpCqqtvlZFVxQklee/GV3xFWqb7q4= -SIZE (lxmf-0.8.0.tar.gz) = 60022 +SHA256 (lxmf-0.9.3.tar.gz) = 5aZ7Ev+F5bXVl3IY/Qih0MsT77ToInx1t7NKQ8bbcyg= +SIZE (lxmf-0.9.3.tar.gz) = 68630 Index: Makefile =================================================================== RCS file: /cvs/ports/net/nomadnet/Makefile,v diff -u -p -r1.5 Makefile --- Makefile 17 Jul 2025 16:27:21 -0000 1.5 +++ Makefile 9 Jan 2026 18:20:46 -0000 @@ -1,6 +1,6 @@ COMMENT = Reticulum based mesh communication -MODPY_DISTV = 0.8.0 +MODPY_DISTV = 0.9.7 DISTNAME= nomadnet-${MODPY_DISTV} PKGNAME = ${DISTNAME} Index: distinfo =================================================================== RCS file: /cvs/ports/net/nomadnet/distinfo,v diff -u -p -r1.3 distinfo --- distinfo 17 Jul 2025 16:27:21 -0000 1.3 +++ distinfo 9 Jan 2026 18:20:46 -0000 @@ -1,2 +1,2 @@ -SHA256 (nomadnet-0.8.0.tar.gz) = wQnt0klt+/aSuNEL5tipI3x/yxRyWw3piZA7IfMpeRw= -SIZE (nomadnet-0.8.0.tar.gz) = 506664 +SHA256 (nomadnet-0.9.7.tar.gz) = FkXk/TWAmaqQIPh8kmAjXGUzOa9Oz4zvrENxVrIQfao= +SIZE (nomadnet-0.9.7.tar.gz) = 510728 Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/net/nomadnet/pkg/PLIST,v diff -u -p -r1.4 PLIST --- pkg/PLIST 23 Oct 2025 13:20:06 -0000 1.4 +++ pkg/PLIST 9 Jan 2026 18:20:46 -0000 @@ -28,6 +28,8 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/nomadnet/${MODPY_PYCACHE}_version.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/nomadnet/${MODPY_PYCACHE}nomadnet.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/nomadnet/${MODPY_PYCACHE}nomadnet.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/nomadnet/${MODPY_PYCACHE}util.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/nomadnet/${MODPY_PYCACHE}util.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/nomadnet/_version.py lib/python${MODPY_VERSION}/site-packages/nomadnet/examples/ lib/python${MODPY_VERSION}/site-packages/nomadnet/examples/messageboard/ @@ -65,6 +67,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Directory.py lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Extras.py lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Guide.py +lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Helpers.py lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Interfaces.py lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Log.py lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/Main.py @@ -85,6 +88,8 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Extras.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Guide.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Guide.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Helpers.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Helpers.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Interfaces.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Interfaces.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Log.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} @@ -99,6 +104,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}Network.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} lib/python${MODPY_VERSION}/site-packages/nomadnet/ui/textui/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/nomadnet/util.py lib/python${MODPY_VERSION}/site-packages/nomadnet/vendor/ lib/python${MODPY_VERSION}/site-packages/nomadnet/vendor/AsciiChart.py lib/python${MODPY_VERSION}/site-packages/nomadnet/vendor/Scrollable.py