Skip to content
Snippets Groups Projects
Verified Commit 50d1b706 authored by Vasil Dimov's avatar Vasil Dimov
Browse files

net-p2p/c-lightning: hook dependencies for the clnrest plugin

The clnrest plugin is already installed but it depends on a bunch of
Python packages. Add an option to net-p2p/c-lightning to install and
depend on those packages.

Further, 3 of those packages were not in the FreeBSD ports. Add them:
* net-p2p/pyln-bolt7 Lightning Network BOLT7 implementation
* net-p2p/pyln-client Python client library for lightningd (net-p2p/c-lightning)
* net-p2p/pyln-proto Lightning Network protocol implementation

To enable the plugin, add
clnrest-port=
clnrest-protocol=
clnrest-host=
to /usr/local/etc/lightningd-bitcoin.conf, see
https://docs.corelightning.org/docs/rest

Differential Revision:	https://reviews.freebsd.org/D43863
parent 8425efbe
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -2,6 +2,7 @@ PORTNAME= c-lightning
# 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 @@ SHEBANG_FILES= plugins/clnrest/clnrest.py \
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 @@ VALGRIND_DESC= Run tests with Valgrind
OPTIONS_DEFAULT=COMPATIBILITY SQLITE
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MCLNRESTDEPS}
USE_PYTHON+= cryptography
.endif
HAS_CONFIGURE= yes
CONFIGURE_ARGS= --disable-rust
......
......@@ -22,6 +22,9 @@ rcvar=lightningd_enable
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%%"}
......
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 <bsd.port.mk>
TIMESTAMP = 1707742564
SHA256 (pyln-bolt7-1.0.246.tar.gz) = 2b53744fa21c1b12d2c9c9df153651b122e38fa65d4a5c3f2957317ee148e089
SIZE (pyln-bolt7-1.0.246.tar.gz) = 17905
Lightning Network BOLT7 implementation
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 <bsd.port.mk>
TIMESTAMP = 1707743561
SHA256 (pyln_client-23.11.tar.gz) = 4102792bbdca545d5fbfa1fb1371222744e7157ec3d2c162edb03e8786db9823
SIZE (pyln_client-23.11.tar.gz) = 35134
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.
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 <bsd.port.mk>
TIMESTAMP = 1707744598
SHA256 (pyln_proto-23.11.tar.gz) = e7056386be1527fd2c49a3db9228a9f5fd44cd5cdc9b1d431b21112137dd5957
SIZE (pyln_proto-23.11.tar.gz) = 27810
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.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment