git: c1d6e47d5cc4 - main - sysutils/py-pyinfra: new port: automates infrastructure

From: Zsolt Udvari <uzsolt_at_FreeBSD.org>
Date: Wed, 07 Aug 2024 05:51:01 UTC
The branch main has been updated by uzsolt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c1d6e47d5cc43f23d5d93154b539de3a427a2465

commit c1d6e47d5cc43f23d5d93154b539de3a427a2465
Author:     Florian Walpen <dev@submerge.ch>
AuthorDate: 2024-08-07 05:47:57 +0000
Commit:     Zsolt Udvari <uzsolt@FreeBSD.org>
CommitDate: 2024-08-07 05:47:57 +0000

    sysutils/py-pyinfra: new port: automates infrastructure
    
    pyinfra turns Python code into shell commands and runs them on your
    servers.
    Execute ad-hoc commands and write declarative operations. Target SSH
    servers, local machine and Docker containers. Fast and scales from one
    server to thousands.
    Think ansible but Python instead of YAML, and a lot faster.
    
    PR:             279262
---
 sysutils/Makefile             |  1 +
 sysutils/py-pyinfra/Makefile  | 59 +++++++++++++++++++++++++++++++++++++++++++
 sysutils/py-pyinfra/distinfo  |  3 +++
 sysutils/py-pyinfra/pkg-descr |  6 +++++
 4 files changed, 69 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 21f04587d469..3e07681a3708 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1150,6 +1150,7 @@
     SUBDIR += py-ptyprocess
     SUBDIR += py-puremagic
     SUBDIR += py-py-cpuinfo
+    SUBDIR += py-pyinfra
     SUBDIR += py-python-bareos
     SUBDIR += py-python-consul
     SUBDIR += py-python-consul2
diff --git a/sysutils/py-pyinfra/Makefile b/sysutils/py-pyinfra/Makefile
new file mode 100644
index 000000000000..54b8e41b2bf8
--- /dev/null
+++ b/sysutils/py-pyinfra/Makefile
@@ -0,0 +1,59 @@
+PORTNAME=	pyinfra
+DISTVERSIONPREFIX=	v
+DISTVERSION=	3.0.2
+CATEGORIES=	sysutils python
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	dev@submerge.ch
+COMMENT=	Automates infrastructure using Python
+WWW=		https://pyinfra.com/
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}click>2:devel/py-click@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}configparser>0:devel/py-configparser@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}distro>=1.6<2:sysutils/py-distro@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}gevent>=1.5:devel/py-gevent@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}Jinja2>2<4:devel/py-Jinja2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}packaging>=16.1:devel/py-packaging@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}paramiko>=2.7<4:security/py-paramiko@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}python-dateutil>2<3:devel/py-python-dateutil@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pywinrm>0:security/py-pywinrm@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}typeguard>0:devel/py-typeguard@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}coverage>0:devel/py-coverage@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest-cov>0:devel/py-pytest-cov@${PY_FLAVOR}
+
+USES=		pytest python
+USE_GITHUB=	yes
+GH_ACCOUNT=	pyinfra-dev
+USE_PYTHON=	autoplist distutils
+
+# Most of the ignored tests fail because docker is missing.
+# The *_ensure_newline_* ones fail when pyinfra is not installed first.
+PYTEST_IGNORED_TESTS=	test_int_docker_install_package_ubuntu \
+			test_e2e_ssh_sudo_password \
+			test_int_local_file_no_changes \
+			test_int_local_directory_no_changes \
+			test_int_local_link_no_changes \
+			test_int_local_line_no_changes \
+			test_int_local_line_ensure_newline_true \
+			test_int_local_line_ensure_newline_false
+
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} < 30900
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}graphlib-backport>0:graphics/py-graphlib-backport@${PY_FLAVOR}
+.endif
+
+.if ${PYTHON_REL} < 31000
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}importlib-metadata>3.6:devel/py-importlib-metadata@${PY_FLAVOR}
+.endif
+
+.if ${PYTHON_REL} < 31100
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/sysutils/py-pyinfra/distinfo b/sysutils/py-pyinfra/distinfo
new file mode 100644
index 000000000000..e50a9a4ad53b
--- /dev/null
+++ b/sysutils/py-pyinfra/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1721915646
+SHA256 (pyinfra-dev-pyinfra-v3.0.2_GH0.tar.gz) = f004c5e13b751fc90d2df81bd2fb5f10b14f869b0ca488ed7bc8c355ecb9ef70
+SIZE (pyinfra-dev-pyinfra-v3.0.2_GH0.tar.gz) = 319429
diff --git a/sysutils/py-pyinfra/pkg-descr b/sysutils/py-pyinfra/pkg-descr
new file mode 100644
index 000000000000..1ec358a8d1c1
--- /dev/null
+++ b/sysutils/py-pyinfra/pkg-descr
@@ -0,0 +1,6 @@
+pyinfra turns Python code into shell commands and runs them on your servers.
+Execute ad-hoc commands and write declarative operations. Target SSH servers,
+local machine and Docker containers. Fast and scales from one server to
+thousands.
+
+Think ansible but Python instead of YAML, and a lot faster.