diff --git a/net-p2p/Makefile b/net-p2p/Makefile --- a/net-p2p/Makefile +++ b/net-p2p/Makefile @@ -83,6 +83,9 @@ SUBDIR += py-transmission-rpc SUBDIR += py-tremc SUBDIR += py-vertex + SUBDIR += pyln-bolt7 + SUBDIR += pyln-client + SUBDIR += pyln-proto SUBDIR += qbittorrent SUBDIR += radarr SUBDIR += readarr diff --git a/net-p2p/c-lightning/Makefile b/net-p2p/c-lightning/Makefile --- a/net-p2p/c-lightning/Makefile +++ b/net-p2p/c-lightning/Makefile @@ -2,6 +2,7 @@ # To build from an arbitrary git commit comment PORTVERSION and PORTREVISION (if present) PORTVERSION= 23.11.2 DISTVERSIONPREFIX= v +PORTREVISION= 1 # and uncomment the following two lines (use for example -git-HEAD or -git-f8d8348c) #PORTVERSION= 0 #PKGNAMESUFFIX= -git-f8d8348c @@ -38,12 +39,58 @@ EXTRA_PATCHES_aarch64= ${FILESDIR}/extra-patch-external_libwally-core_src_ccan_ccan_base64_base64.c EXTRA_PATCHES= ${EXTRA_PATCHES_${ARCH}} -OPTIONS_DEFINE= COMPATIBILITY DEBUG +OPTIONS_DEFINE= CLNRESTDEPS COMPATIBILITY DEBUG OPTIONS_MULTI= STORAGE OPTIONS_MULTI_STORAGE= POSTGRESQL SQLITE OPTIONS_RADIO= TESTING OPTIONS_RADIO_TESTING= ASAN VALGRIND +CLNRESTDEPS_DESC= Install and depend on packages required by the clnrest plugin +# for d in `grep -E '^[^[:space:]]' work/lightning-23.11.2/plugins/clnrest/requirements.txt |cut -f 1 -d =` ; do echo "=== $d ===" ; portsearch -n "py.*$d" -o path ; done +CLNRESTDEPS_RUN_DEPENDS=\ + ${PYTHON_PKGNAMEPREFIX}Flask-Cors>0:www/py-flask-cors@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}aniso8601>0:devel/py-aniso8601@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}asn1crypto>0:devel/py-asn1crypto@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}attrs>0:devel/py-attrs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}base58>0:security/py-base58@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}bidict>0:devel/py-bidict@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}bitstring>0:devel/py-bitstring@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}blinker>0:devel/py-blinker@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}cffi>0:devel/py-cffi@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}click>0:devel/py-click@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}coincurve>0:security/py-coincurve@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}colorama>0:devel/py-colorama@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}flask-restx>0:www/py-flask-restx@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}flask-socketio>0:www/py-flask-socketio@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}flask>0:www/py-flask@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gevent-websocket>0:www/py-gevent-websocket@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gevent>0:devel/py-gevent@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}greenlet>0:devel/py-greenlet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gunicorn>0:www/py-gunicorn@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}importlib-metadata>0:devel/py-importlib-metadata@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}importlib-resources>0:devel/py-importlib-resources@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}itsdangerous>0:security/py-itsdangerous@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}json5>0:devel/py-json5@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}jsonschema-specifications>0:devel/py-jsonschema-specifications@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}jsonschema>0:devel/py-jsonschema@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}markupsafe>0:textproc/py-markupsafe@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pycparser>0:devel/py-pycparser@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyln-bolt7>0:net-p2p/pyln-bolt7@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyln-client>0:net-p2p/pyln-client@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyln-proto>0:net-p2p/pyln-proto@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pysocks>0:net/py-pysocks@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-engineio>0:devel/py-python-engineio@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-socketio>0:devel/py-python-socketio@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytz>0:devel/py-pytz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}referencing>0:devel/py-referencing@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rpds-py>0:devel/py-rpds-py@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}werkzeug>0:www/py-werkzeug@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zipp>0:devel/py-zipp@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zope.event>0:devel/py-zope.event@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zope.interface>0:devel/py-zope.interface@${PY_FLAVOR} COMPATIBILITY_CONFIGURE_ENABLE= compat COMPATIBILITY_DESC= Compatibility mode, good to disable to see if your software breaks DEBUG_CONFIGURE_ENABLE= debugbuild @@ -60,6 +107,12 @@ OPTIONS_DEFAULT=COMPATIBILITY SQLITE +.include + +.if ${PORT_OPTIONS:MCLNRESTDEPS} +USE_PYTHON+= cryptography +.endif + HAS_CONFIGURE= yes CONFIGURE_ARGS= --disable-rust diff --git a/net-p2p/c-lightning/files/lightningd.in b/net-p2p/c-lightning/files/lightningd.in --- a/net-p2p/c-lightning/files/lightningd.in +++ b/net-p2p/c-lightning/files/lightningd.in @@ -22,6 +22,9 @@ load_rc_config ${name} +# If clnrest plugin is enabled it fails to load with OpenSSL 3.0: RuntimeError: OpenSSL 3.0's legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration. +export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1 + : ${lightningd_enable:="NO"} : ${lightningd_user:="%%U%%"} : ${lightningd_group:="%%G%%"} diff --git a/net-p2p/pyln-bolt7/Makefile b/net-p2p/pyln-bolt7/Makefile new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-bolt7/Makefile @@ -0,0 +1,20 @@ +PORTNAME= pyln-bolt7 +PORTVERSION= 1.0.246 +CATEGORIES= net-p2p python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= vd@FreeBSD.org +COMMENT= Lightning Network BOLT7 implementation +WWW= https://github.com/ElementsProject/lightning/tree/master/contrib/pyln-spec/bolt7 + +LICENSE= MIT + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}poetry-core>=0:devel/py-poetry-core@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist pep517 + +NO_ARCH= yes + +.include diff --git a/net-p2p/pyln-bolt7/distinfo b/net-p2p/pyln-bolt7/distinfo new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-bolt7/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707742564 +SHA256 (pyln-bolt7-1.0.246.tar.gz) = 2b53744fa21c1b12d2c9c9df153651b122e38fa65d4a5c3f2957317ee148e089 +SIZE (pyln-bolt7-1.0.246.tar.gz) = 17905 diff --git a/net-p2p/pyln-bolt7/pkg-descr b/net-p2p/pyln-bolt7/pkg-descr new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-bolt7/pkg-descr @@ -0,0 +1 @@ +Lightning Network BOLT7 implementation diff --git a/net-p2p/pyln-client/Makefile b/net-p2p/pyln-client/Makefile new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-client/Makefile @@ -0,0 +1,22 @@ +PORTNAME= pyln-client +PORTVERSION= 23.11 +CATEGORIES= net-p2p python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +DISTNAME= ${PORTNAME:S/-/_/}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} + +MAINTAINER= vd@FreeBSD.org +COMMENT= Python client library for lightningd (net-p2p/c-lightning) +WWW= https://github.com/ElementsProject/lightning/tree/master/contrib/pyln-client + +LICENSE= MIT + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}poetry-core>=0:devel/py-poetry-core@${PY_FLAVOR} + +USES= python shebangfix +USE_PYTHON= autoplist pep517 +SHEBANG_FILES= pyln/client/gossmap.py + +NO_ARCH= yes + +.include diff --git a/net-p2p/pyln-client/distinfo b/net-p2p/pyln-client/distinfo new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-client/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707743561 +SHA256 (pyln_client-23.11.tar.gz) = 4102792bbdca545d5fbfa1fb1371222744e7157ec3d2c162edb03e8786db9823 +SIZE (pyln_client-23.11.tar.gz) = 35134 diff --git a/net-p2p/pyln-client/pkg-descr b/net-p2p/pyln-client/pkg-descr new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-client/pkg-descr @@ -0,0 +1,5 @@ +A python client library for lightningd (net-p2p/c-lightning) + +This package implements the Unix socket based JSON-RPC protocol that lightningd +exposes to the rest of the world. It can be used to call arbitrary functions on +the RPC interface, and serves as a basis for plugins written in python. diff --git a/net-p2p/pyln-proto/Makefile b/net-p2p/pyln-proto/Makefile new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-proto/Makefile @@ -0,0 +1,21 @@ +PORTNAME= pyln-proto +PORTVERSION= 23.11 +CATEGORIES= net-p2p python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +DISTNAME= ${PORTNAME:S/-/_/}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} + +MAINTAINER= vd@FreeBSD.org +COMMENT= Lightning Network protocol implementation +WWW= https://github.com/ElementsProject/lightning/tree/master/contrib/pyln-proto + +LICENSE= MIT + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}poetry-core>=0:devel/py-poetry-core@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist pep517 + +NO_ARCH= yes + +.include diff --git a/net-p2p/pyln-proto/distinfo b/net-p2p/pyln-proto/distinfo new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-proto/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707744598 +SHA256 (pyln_proto-23.11.tar.gz) = e7056386be1527fd2c49a3db9228a9f5fd44cd5cdc9b1d431b21112137dd5957 +SIZE (pyln_proto-23.11.tar.gz) = 27810 diff --git a/net-p2p/pyln-proto/pkg-descr b/net-p2p/pyln-proto/pkg-descr new file mode 100644 --- /dev/null +++ b/net-p2p/pyln-proto/pkg-descr @@ -0,0 +1,5 @@ +Lightning Network protocol implementation + +This package implements some of the Lightning Network protocol in pure python. +It is intended for protocol testing and some minor tooling only. It is not +deemed secure enough to handle any amount of real funds.