git: 4bf3302c4071 - main - multimedia/streamlink: Update to 8.6.1

From: Jochen Neumeister <joneum_at_FreeBSD.org>
Date: Wed, 07 Oct 2026 16:21:39 UTC
The branch main has been updated by joneum:

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

commit 4bf3302c40710c380d0fdd2dcd76e2459aed3d7b
Author:     takefu <takefu@airport.fm>
AuthorDate: 2026-10-07 16:20:41 +0000
Commit:     Jochen Neumeister <joneum@FreeBSD.org>
CommitDate: 2026-10-07 16:21:13 +0000

    multimedia/streamlink: Update to 8.6.1
    
    - SECURITY: fixed arbitrary local file read via HTTP(S) redirection to
      file:// URL (GHSA-vf2x-4v53-pm7v).
    - SECURITY: fixed insecure cross-scheme redirection (HTTPS -> HTTP)
      (GHSA-vf2x-4v53-pm7v).
    - Added support for HLS packed audio streams.
    - Fixed HTTP server of --player-http/--player-continuous-http binding to
      all interfaces.
    - Fixed compatibility with urllib3 2.8.0.
    
    Changes:        https://streamlink.github.io/changelog.html#streamlink-8-6-1-2026-09-16
    PR:             277552
    Sponsored by:   Netzkommune GmbH
---
 multimedia/streamlink/Makefile                     | 27 +++++++++-----------
 multimedia/streamlink/distinfo                     |  6 ++---
 .../files/patch-build__backend_commands.py         | 11 ++++++++
 multimedia/streamlink/files/patch-pyproject.toml   | 29 ++++++++++++++--------
 4 files changed, 45 insertions(+), 28 deletions(-)

diff --git a/multimedia/streamlink/Makefile b/multimedia/streamlink/Makefile
index 9a68e3590edd..6fe3b80e85fa 100644
--- a/multimedia/streamlink/Makefile
+++ b/multimedia/streamlink/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	streamlink
-DISTVERSION=	6.5.1
-PORTREVISION=	4
+DISTVERSION=	8.6.1
 CATEGORIES=	multimedia
 MASTER_SITES=	PYPI
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -13,32 +12,30 @@ LICENSE=	BSD2CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	${PY_SETUPTOOLS}\
-		${PYTHON_PKGNAMEPREFIX}versioningit>=2.0.0:devel/py-versioningit@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}certifi>0:security/py-certifi@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}country>0:devel/py-country@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}isodate>0:devel/py-isodate@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}lxml>=4.6.4:devel/py-lxml@${PY_FLAVOR}\
+		${PYTHON_PKGNAMEPREFIX}lxml>=5.0.0:devel/py-lxml@${PY_FLAVOR}\
+		${PYTHON_PKGNAMEPREFIX}pycountry>0:textproc/py-pycountry@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}pycryptodome>=3.4.3:security/py-pycryptodome@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}pysocks>1.5.7:net/py-pysocks@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}requests>2.26.0:www/py-requests@${PY_FLAVOR}\
+		${PYTHON_PKGNAMEPREFIX}requests>2.30.0:www/py-requests@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}trio>=0.22.0:net/py-trio@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}trio-websocket>=0.9.0:net/py-trio-websocket@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.0.0:devel/py-typing-extensions@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}urllib3>=1.26.0:net/py-urllib3@${PY_FLAVOR}\
+		${PYTHON_PKGNAMEPREFIX}urllib3>=2.0.0:net/py-urllib3@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}websocket-client>=1.2.1:www/py-websocket-client@${PY_FLAVOR}
-TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}backports>0:devel/py-backports@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}freezegun>0:devel/py-freezegun@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}pytest-asyncio>0:devel/py-pytest-asyncio@${PY_FLAVOR}\
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}freezegun>=1.5.0:devel/py-freezegun@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}pytest-trio>0:devel/py-pytest-trio@${PY_FLAVOR}\
-		${PYTHON_PKGNAMEPREFIX}pytest>0:devel/py-pytest@${PY_FLAVOR}\
 		${PYTHON_PKGNAMEPREFIX}requests-mock>0:www/py-requests-mock@${PY_FLAVOR}
 
-USES=		python
-USE_PYTHON=	autoplist concurrent distutils pytest
+USES=		python:3.10+
+USE_PYTHON=	autoplist pep517 pytest
+TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
 NO_ARCH=	yes
-OPTIONS_DEFINE=		FFMPEG
+OPTIONS_DEFINE=		BROTLI FFMPEG ZSTD
 OPTIONS_DEFAULT=	FFMPEG
+BROTLI_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}brotli>0:archivers/py-brotli@${PY_FLAVOR}
 FFMPEG_RUN_DEPENDS=	ffmpeg:multimedia/ffmpeg
+ZSTD_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}zstandard>0:archivers/py-zstandard@${PY_FLAVOR}
 
 .include <bsd.port.mk>
diff --git a/multimedia/streamlink/distinfo b/multimedia/streamlink/distinfo
index 60f1d0bb9be0..d9977d8f7185 100644
--- a/multimedia/streamlink/distinfo
+++ b/multimedia/streamlink/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1705468344
-SHA256 (streamlink-6.5.1.tar.gz) = 207fb4ce99c35bfeb1b8f7c76b96cfcb4076ad6881c61eaea553c2ec13d97c57
-SIZE (streamlink-6.5.1.tar.gz) = 717297
+TIMESTAMP = 1790580552
+SHA256 (streamlink-8.6.1.tar.gz) = 29ba76ed6d6913c9e69bc730fc584b581b2860022af18661a1d08c8daee03642
+SIZE (streamlink-8.6.1.tar.gz) = 872414
diff --git a/multimedia/streamlink/files/patch-build__backend_commands.py b/multimedia/streamlink/files/patch-build__backend_commands.py
new file mode 100644
index 000000000000..3646040d9a74
--- /dev/null
+++ b/multimedia/streamlink/files/patch-build__backend_commands.py
@@ -0,0 +1,11 @@
+--- build_backend/commands.py.orig	2026-10-07 14:28:47 UTC
++++ build_backend/commands.py
+@@ -17,7 +17,7 @@ class StreamlinkBuildPyCommand(build_py, Command):
+ 
+ class StreamlinkBuildPyCommand(build_py, Command):
+     def _build_plugins_json(self) -> None:
+-        self.announce("building plugins JSON data", logging.INFO)
++        self.announce("building plugins JSON data")
+         output = Path(self.build_lib) / STREAMLINK_PLUGINS_JSON
+         output.parent.mkdir(parents=True, exist_ok=True)
+         data = build()
diff --git a/multimedia/streamlink/files/patch-pyproject.toml b/multimedia/streamlink/files/patch-pyproject.toml
index 24ca75e25a94..3726774cc2e5 100644
--- a/multimedia/streamlink/files/patch-pyproject.toml
+++ b/multimedia/streamlink/files/patch-pyproject.toml
@@ -1,11 +1,20 @@
---- pyproject.toml.orig	2025-09-28 08:11:20 UTC
+--- pyproject.toml.orig	2026-10-07 13:33:06 UTC
 +++ pyproject.toml
-@@ -57,7 +57,7 @@ dependencies = [
- dependencies = [
-   "certifi",
-   "isodate",
--  "lxml >=4.6.4,<6",
-+  "lxml >=4.6.4,<7",
-   "pycountry",
-   "pycryptodome >=3.4.3,<4",
-   "PySocks >=1.5.6,!=1.5.7",
+@@ -1,6 +1,6 @@ requires = [
+ [build-system]
+ requires = [
+-  "setuptools >=77",
++  "setuptools >=63",
+   # The versioningit build-requirement gets removed from the source distribution,
+   # as the version string is already built into it (see the onbuild versioningit hook):
+   # "versioningit >=2.0.0,<4",
+@@ -19,8 +19,7 @@ readme = "README.md"
+ Streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of choice.\
+ """
+ readme = "README.md"
+-license = "BSD-2-Clause"
+-license-files = ["LICENSE"]
++license = {text = "BSD-2-Clause"}
+ authors = [
+   { name = "Streamlink" },
+   { email = "streamlink@protonmail.com" }