aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Ullrich <chris@chrullrich.net>2023-01-17 17:29:54 +0000
committerMikael Urankar <mikael@FreeBSD.org>2023-01-20 11:50:24 +0000
commitf665aa3933ec2173abb4da8aca442e97fb29b18a (patch)
tree61da53e9d62c26587443e51253d5bb712f00374a
parentdd74e44d9fc049332841fc226af799aca56dca46 (diff)
downloadports-f665aa3933ec2173abb4da8aca442e97fb29b18a.tar.gz
ports-f665aa3933ec2173abb4da8aca442e97fb29b18a.zip
comms/py-pymodbus: Add new port
Pymodbus is a full Modbus protocol implementation offering asynchronous communications. It can also be used without any third party dependencies (aside from pyserial) if a more lightweight project is needed. PR: 251614
-rw-r--r--comms/Makefile1
-rw-r--r--comms/py-pymodbus/Makefile38
-rw-r--r--comms/py-pymodbus/distinfo3
-rw-r--r--comms/py-pymodbus/files/extra-patch-NO_REPL11
-rw-r--r--comms/py-pymodbus/pkg-descr4
5 files changed, 57 insertions, 0 deletions
diff --git a/comms/Makefile b/comms/Makefile
index f05779176d57..6b62709c275e 100644
--- a/comms/Makefile
+++ b/comms/Makefile
@@ -137,6 +137,7 @@
SUBDIR += py-hidapi
SUBDIR += py-libimobiledevice
SUBDIR += py-libscrc
+ SUBDIR += py-pymodbus
SUBDIR += py-pyserial
SUBDIR += py-pyserial-asyncio
SUBDIR += py-xmodem
diff --git a/comms/py-pymodbus/Makefile b/comms/py-pymodbus/Makefile
new file mode 100644
index 000000000000..b47fdb9da46c
--- /dev/null
+++ b/comms/py-pymodbus/Makefile
@@ -0,0 +1,38 @@
+PORTNAME= pymodbus
+DISTVERSION= 3.1.0
+CATEGORIES= comms python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= chris@chrullrich.net
+COMMENT= Implementation of the Modbus protocol
+WWW= https://github.com/pymodbus-dev/pymodbus/
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= python:3.8+
+USE_PYTHON= autoplist distutils
+
+OPTIONS_DEFINE= REPL SERIAL DATASTORE_REDIS DATASTORE_SQL
+OPTIONS_DEFAULT=REPL
+REPL_DESC= Interactive REPL console
+SERIAL_DESC= Support serial port
+DATASTORE_REDIS_DESC= Use Redis for server data
+DATASTORE_SQL_DESC= Use database for server data (via SQLAlchemy)
+
+REPL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiohttp>=3.8.1:www/py-aiohttp@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}prompt-toolkit>=3.0.8:devel/py-prompt-toolkit@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}typer>=0.6.1:devel/py-typer@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pygments>0:textproc/py-pygments@${PY_FLAVOR}
+REPL_EXTRA_PATCHES_OFF= ${PATCHDIR}/extra-patch-NO_REPL
+
+SERIAL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pyserial>=3.5:comms/py-pyserial@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pyserial-asyncio>=0.6:comms/py-pyserial-asyncio@${PY_FLAVOR}
+
+DATASTORE_REDIS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}redis>0:databases/py-redis@${PY_FLAVOR}
+DATASTORE_SQL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlalchemy14>0:databases/py-sqlalchemy14@${PY_FLAVOR}
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/comms/py-pymodbus/distinfo b/comms/py-pymodbus/distinfo
new file mode 100644
index 000000000000..f91621f8d35b
--- /dev/null
+++ b/comms/py-pymodbus/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1673787533
+SHA256 (pymodbus-3.1.0.tar.gz) = eeba02c86b13b1f885c0acc50adf4611df24ab85066ff54daa37c2d883c32525
+SIZE (pymodbus-3.1.0.tar.gz) = 177256
diff --git a/comms/py-pymodbus/files/extra-patch-NO_REPL b/comms/py-pymodbus/files/extra-patch-NO_REPL
new file mode 100644
index 000000000000..84c72f385617
--- /dev/null
+++ b/comms/py-pymodbus/files/extra-patch-NO_REPL
@@ -0,0 +1,11 @@
+--- setup.cfg.orig 2023-01-14 21:23:03.797249800 +0000
++++ setup.cfg 2023-01-15 13:13:52.728391000 +0000
+@@ -46,8 +46,6 @@
+
+ [options.entry_points]
+ console_scripts =
+- pymodbus.console = pymodbus.repl.client.main:main
+- pymodbus.server = pymodbus.repl.server.main:app
+ pymodbus.simulator = pymodbus.server.simulator.main:main
+
+ [options.packages.find]
diff --git a/comms/py-pymodbus/pkg-descr b/comms/py-pymodbus/pkg-descr
new file mode 100644
index 000000000000..bf78da2e428e
--- /dev/null
+++ b/comms/py-pymodbus/pkg-descr
@@ -0,0 +1,4 @@
+Pymodbus is a full Modbus protocol implementation offering
+asynchronous communications. It can also be used without any
+third party dependencies (aside from pyserial) if a more
+lightweight project is needed.