git: 93edd7d91774 - main - devel/py-buildbot: Update version 3.11.9=>4.3.0

From: Muhammad Moinur Rahman <bofh_at_FreeBSD.org>
Date: Mon, 30 Jun 2025 16:28:51 UTC
The branch main has been updated by bofh:

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

commit 93edd7d91774d1fc487ef8b018205eaa48d4d7d1
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2025-06-30 16:04:59 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2025-06-30 16:11:43 +0000

    devel/py-buildbot: Update version 3.11.9=>4.3.0
    
    - If the buildbot rc(8) script is started after setting `rc_flags` in
      `rc.conf(5)`, the error "I wasn't expecting so many arguments" appears
      and buildbot does not start, the cause is that buildbot expect to have
      the parameters first and the working directory second, but currently
      it is the other way around. [1]
    
    Changelog: https://github.com/buildbot/buildbot/releases/tag/v4.3.0
    
    Sponsored by:   The FreeBSD Foundation
    
    PR:             285166 [1]
    Reported by:    dtxdf [1]
---
 devel/py-buildbot/Makefile             | 40 +++++++++++++++++-------------
 devel/py-buildbot/distinfo             |  6 ++---
 devel/py-buildbot/files/buildbot.in    |  8 +++---
 devel/py-buildbot/files/patch-setup.py | 45 ++++++++++++++++++++++++++++++++++
 4 files changed, 75 insertions(+), 24 deletions(-)

diff --git a/devel/py-buildbot/Makefile b/devel/py-buildbot/Makefile
index f478cb45da4e..df51596ba640 100644
--- a/devel/py-buildbot/Makefile
+++ b/devel/py-buildbot/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	buildbot
-DISTVERSION=	3.11.9
-PORTREVISION=	2
+DISTVERSION=	4.3.0
 CATEGORIES=	devel python
 MASTER_SITES=	PYPI
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -12,31 +11,31 @@ WWW=		https://buildbot.net
 LICENSE=	GPLv2
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}alembic>=1.6.0:databases/py-alembic@${PY_FLAVOR} \
+RUN_DEPENDS=	\
+		${PYTHON_PKGNAMEPREFIX}Jinja2>=2.1:devel/py-Jinja2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}alembic>=1.6.0:databases/py-alembic@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}autobahn>=0.16.0:www/py-autobahn@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}buildbot-www>=${PORTVERSION}:devel/py-buildbot-www@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}croniter2>=1.3.0:sysutils/py-croniter2@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}python-dateutil>=1.5:devel/py-python-dateutil@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}importlib-resources>=5:devel/py-importlib-resources@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}Jinja2>=2.1:devel/py-Jinja2@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}msgpack>=0.6.0:devel/py-msgpack@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pyjwt>=0:www/py-pyjwt@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}twisted>=18.7.0:devel/py-twisted@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}python-dateutil>=1.5:devel/py-python-dateutil@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pyyaml>=0:devel/py-pyyaml@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}sqlalchemy20>=1.4.0:databases/py-sqlalchemy20@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}treq>=20.9:www/py-treq@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}twisted>=22.1.0:devel/py-twisted@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}txaio>=2.2.2:devel/py-txaio@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}unidiff>=0.7.5:devel/py-unidiff@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pyyaml>=0:devel/py-pyyaml@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}zope.interface>=4.1.1:devel/py-zope.interface@${PY_FLAVOR}
 TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}boto3>0:www/py-boto3@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}buildbot-pkg==${PORTVERSION}:devel/py-buildbot-pkg@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}lz4>=0:archivers/py-lz4@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}mock>=2.0.0:devel/py-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}markdown>=3.0.0:textproc/py-markdown@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}moto>0:devel/py-moto@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}parameterized>0:devel/py-parameterized@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pyjade>0:textproc/py-pyjade@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}treq>0:www/py-treq@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}requests-futures>0:www/py-requests-futures@${PY_FLAVOR}
+		${PYTHON_PKGNAMEPREFIX}pypugjs>0:devel/py-pypugjs@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests-futures>0:www/py-requests-futures@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}treq>0:www/py-treq@${PY_FLAVOR}
 
 USES=		cpe python
 USE_PYTHON=	autoplist concurrent distutils
@@ -54,15 +53,22 @@ SUB_LIST=	PYTHON_CMD=${PYTHON_CMD} \
 BUILDBOT_REMOVE_ME=	${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;}/buildbot/reporters/templates
 POST_PLIST+=		fix-plist
 
-post-patch:
-	@${REINPLACE_CMD} -e 's|twisted_ver = ">= 18.7.0, <=23.10.0"|twisted_ver = ">= 18.7.0"|g' \
-		${WRKSRC}/setup.py
+OPTIONS_DEFINE=		BROTLI CONFIGURABLE DOCS ZSTD
+OPTIONS_DEFAULT=	BROTLI CONFIGURABLE ZSTD
+
+CONFIGURABLE_DESC=	Enable configurable buildbot
+
+BROTLI_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}brotli>=1.1.0:archivers/py-brotli@${PY_FLAVOR}
+CONFIGURABLE_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}evalidate>=2.0.0:math/py-evalidate@${PY_FLAVOR}
+ZSTD_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}zstandard>=0.23.0:archivers/py-zstandard@${PY_FLAVOR}
 
 fix-plist:
 	${REINPLACE_CMD} -e 's|^${BUILDBOT_REMOVE_ME}$$||' ${TMPPLIST}
+	${REINPLACE_CMD} -e '/^buildbot/d' ${TMPPLIST}
 
 post-install:
 	${RM} -r ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/buildbot/reporters/templates
+	${RM} -rf ${STAGEDIR}${PREFIX}/buildbot
 
 do-test:
 	@cd ${WRKSRC} && PYTHONPATH=${WRKSRC} TZ=UTC ${LOCALBASE}/bin/trial-${PYTHON_VER} buildbot
diff --git a/devel/py-buildbot/distinfo b/devel/py-buildbot/distinfo
index 20f6ce2895cb..8bf0182b08d2 100644
--- a/devel/py-buildbot/distinfo
+++ b/devel/py-buildbot/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1728972729
-SHA256 (buildbot-3.11.9.tar.gz) = accf61f253e7b610ff712a50a646b65708b4ccf5e3d4278daf4d1f51a83c6eac
-SIZE (buildbot-3.11.9.tar.gz) = 2529422
+TIMESTAMP = 1751297027
+SHA256 (buildbot-4.3.0.tar.gz) = cbf46a15004bb1229712285e4f2b98163a169868ea00783e5e0d7cf8d5e8d962
+SIZE (buildbot-4.3.0.tar.gz) = 2575196
diff --git a/devel/py-buildbot/files/buildbot.in b/devel/py-buildbot/files/buildbot.in
index 74c4ebc47cba..c671e55bfa41 100644
--- a/devel/py-buildbot/files/buildbot.in
+++ b/devel/py-buildbot/files/buildbot.in
@@ -35,7 +35,7 @@ procname="%%PYTHON_CMD%%"
 buildbot_check()
 {
 	echo "Checking BuildBot config"
-	rc_flags="${buildbot_basedir} ${rc_flags}"
+	rc_flags="${rc_flags} ${buildbot_basedir}"
 	${command} checkconfig ${rc_flags}
 }
 
@@ -47,17 +47,17 @@ buildbot_prestart()
     if [ ! -f "${buildbot_basedir}/master.cfg" ]; then
         install -o ${buildbot_user} -g ${buildbot_user} -m 750 ${buildbot_basedir}/master.cfg.sample ${buildbot_basedir}/master.cfg
     fi
-	rc_flags="start ${buildbot_basedir} ${rc_flags}"
+	rc_flags="start ${rc_flags} ${buildbot_basedir}"
 }
 
 buildbot_prestop()
 {
-	rc_flags="stop ${buildbot_basedir} ${rc_flags}"
+	rc_flags="stop ${rc_flags} ${buildbot_basedir}"
 }
 
 buildbot_reload()
 {
-	rc_flags="${buildbot_basedir} ${rc_flags}"
+	rc_flags="${rc_flags} ${buildbot_basedir}"
 	${command} sighup ${rc_flags}
 }
 
diff --git a/devel/py-buildbot/files/patch-setup.py b/devel/py-buildbot/files/patch-setup.py
new file mode 100644
index 000000000000..c12c43212261
--- /dev/null
+++ b/devel/py-buildbot/files/patch-setup.py
@@ -0,0 +1,45 @@
+--- setup.py.orig	2025-06-30 15:33:51 UTC
++++ setup.py
+@@ -28,25 +28,32 @@ from setuptools.command.sdist import sdist
+ 
+ from setuptools import Command
+ from setuptools.command.sdist import sdist
++try:
++    from setuptools.command.install_data import install_data
++except ImportError:
++    from distutils.command.install_data import install_data
+ 
+ from buildbot import version
+ 
+ BUILDING_WHEEL = bool("bdist_wheel" in sys.argv)
+ 
+ 
+-class install_data_twisted(Command):
++class install_data_twisted(install_data):
+     """make sure VERSION file is installed in package."""
+ 
+     def initialize_options(self):
++        super().initialize_options()
+         self.install_dir = None
+ 
+     def finalize_options(self):
++        super().finalize_options()
+         self.set_undefined_options(
+             'install',
+             ('install_lib', 'install_dir'),
+         )
+ 
+     def run(self):
++        super().run()
+         # ensure there's a buildbot/VERSION file
+         fn = os.path.join(self.install_dir, 'buildbot', 'VERSION')
+         with open(fn, 'w') as f:
+@@ -640,8 +647,6 @@ setup_args = {
+         {
+             'console_scripts': [
+                 'buildbot=buildbot.scripts.runner:run',
+-                # this will also be shipped on non windows :-(
+-                'buildbot_windows_service=buildbot.scripts.windows_service:HandleCommandLine',
+             ]
+         },
+     ),