git: 1e54ec44cf35 - main - graphics/py-opencv-python-headless: update 4.13.0.92 → 5.0.0.93
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 15 Sep 2026 19:20:22 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=1e54ec44cf35b4a76357f06610dd4f20b3d74274
commit 1e54ec44cf35b4a76357f06610dd4f20b3d74274
Author: Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-09-15 19:19:24 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-09-15 19:20:19 +0000
graphics/py-opencv-python-headless: update 4.13.0.92 → 5.0.0.93
---
graphics/py-opencv-python-headless/Makefile | 24 ++++++++++------
graphics/py-opencv-python-headless/distinfo | 18 +++++++-----
...odules_core_include_opencv2_core_vsx__utils.hpp | 19 ++++---------
...tch-opencv_modules_gapi_cmake_DownloadADE.cmake | 33 ++++++++++++++++++++++
...atch-opencv_modules_python_test_tests_common.py | 19 +++++++++++++
...ch-opencv_modules_videoio_src_cap_ffmpeg_hw.hpp | 22 +++++++++++++++
...-opencv_modules_videoio_src_cap_ffmpeg_impl.hpp | 23 +++++++++++++++
.../py-opencv-python-headless/files/patch-setup.py | 12 ++++++--
8 files changed, 138 insertions(+), 32 deletions(-)
diff --git a/graphics/py-opencv-python-headless/Makefile b/graphics/py-opencv-python-headless/Makefile
index 96c34dce0e08..22d3cfd831f2 100644
--- a/graphics/py-opencv-python-headless/Makefile
+++ b/graphics/py-opencv-python-headless/Makefile
@@ -1,6 +1,5 @@
PORTNAME= opencv-python-headless
-DISTVERSION= 4.13.0.92
-PORTREVISION= 2
+DISTVERSION= 5.0.0.93
CATEGORIES= graphics
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -12,8 +11,6 @@ WWW= https://github.com/opencv/opencv-python
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
-BROKEN= Fails to build with FFmpeg 9
-
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}scikit-build>=0.14.0:devel/py-scikit-build@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}numpy>0:math/py-numpy@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
@@ -34,15 +31,24 @@ USE_PYTHON= pep517 autoplist pytest
USE_GITHUB= yes
GH_ACCOUNT= opencv
GH_PROJECT= opencv-python
-GH_TAGNAME= 92
-GH_TUPLE= opencv:opencv:b4c5ec4042f097e2a5b386b9d413ec7333d0a184:opencv/opencv \
- opencv:opencv_contrib:d99ad2a188210cc35067c2e60076eed7c2442bc3:opencv_contrib/opencv_contrib
+GH_TAGNAME= 93
+GH_TUPLE= opencv:opencv:0654a42e19215ef25b1d367d822f3c630447e7c7:opencv/opencv \
+ opencv:opencv_contrib:a8e9acd62cabd30419dba83007f2ac0d07de5e2c:opencv_contrib/opencv_contrib \
+ opencv:ade:v0.1.2e:ade \
+ opencv:opencv_extra:4.14.0:opencv_extra
+
+post-extract:
+ @${MKDIR} ${WRKSRC}/opencv/3rdparty/ade
+ @${MV} ${WRKSRC_ade} ${WRKSRC}/opencv/3rdparty/ade
MAKE_ENV= ENABLE_HEADLESS=1 \
OPENCV_PYTHON_PACKAGE_NAME=opencv-python-headless
-TEST_ENV= ${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+TEST_ENV= ${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} \
+ OPENCV_TEST_REPO_PATH=${WRKSRC}/opencv \
+ OPENCV_TEST_DATA_PATH=${WRKSRC_opencv_extra}/testdata
TEST_WRKSRC= ${WRKSRC}/opencv/modules/python
+TEST_ARGS= --disable-plugin-autoload
CONFLICTS_INSTALL= opencv # opencv has the same python bindings bundled in
@@ -50,4 +56,6 @@ post-patch:
@${PRINTF} 'opencv_version = "${DISTVERSION}"\ncontrib = False\nheadless = True\nrolling = False\nci_build = False' \
> ${WRKSRC}/cv2/version.py
+# tests as of 5.0.0.93: 129 passed, 9 skipped, 2 warnings in 1.96s
+
.include <bsd.port.mk>
diff --git a/graphics/py-opencv-python-headless/distinfo b/graphics/py-opencv-python-headless/distinfo
index cfffb0d80edf..f71141dcdc4b 100644
--- a/graphics/py-opencv-python-headless/distinfo
+++ b/graphics/py-opencv-python-headless/distinfo
@@ -1,7 +1,11 @@
-TIMESTAMP = 1775576082
-SHA256 (opencv-opencv-python-4.13.0.92-92_GH0.tar.gz) = 049293f56726a3ebb01bb7508b973e14e62752a4a0e067ac6af4e371d6aa30d3
-SIZE (opencv-opencv-python-4.13.0.92-92_GH0.tar.gz) = 1130133
-SHA256 (opencv-opencv-b4c5ec4042f097e2a5b386b9d413ec7333d0a184_GH0.tar.gz) = 4f2a381ce3377e6f22d0718fe7101e97a21968a21c81f0356f2787bb21024dc4
-SIZE (opencv-opencv-b4c5ec4042f097e2a5b386b9d413ec7333d0a184_GH0.tar.gz) = 95448014
-SHA256 (opencv-opencv_contrib-d99ad2a188210cc35067c2e60076eed7c2442bc3_GH0.tar.gz) = 8d2f5665a4f47fd6763eb75f5017676cbcdeb813074b32a9fda72c25d52abdd4
-SIZE (opencv-opencv_contrib-d99ad2a188210cc35067c2e60076eed7c2442bc3_GH0.tar.gz) = 55518735
+TIMESTAMP = 1789498270
+SHA256 (opencv-opencv-python-5.0.0.93-93_GH0.tar.gz) = 319712e131f336dd5d1e3d6131d20ec7c7e922b93038858ef015c58f634ab1ee
+SIZE (opencv-opencv-python-5.0.0.93-93_GH0.tar.gz) = 1130272
+SHA256 (opencv-opencv-0654a42e19215ef25b1d367d822f3c630447e7c7_GH0.tar.gz) = 7a75663094ebd50bf212928423a24394e29d751db878044ad015ba28546a59db
+SIZE (opencv-opencv-0654a42e19215ef25b1d367d822f3c630447e7c7_GH0.tar.gz) = 96313878
+SHA256 (opencv-opencv_contrib-a8e9acd62cabd30419dba83007f2ac0d07de5e2c_GH0.tar.gz) = c96663affc1e6125fc5b630539db83f5bcff19f911c2bbc40e9b7566f86508c9
+SIZE (opencv-opencv_contrib-a8e9acd62cabd30419dba83007f2ac0d07de5e2c_GH0.tar.gz) = 55526794
+SHA256 (opencv-ade-v0.1.2e_GH0.tar.gz) = 107711887d413127955d64a0e42974ec379c1ebb81832c79a21a9e3a2110e4bf
+SIZE (opencv-ade-v0.1.2e_GH0.tar.gz) = 117054
+SHA256 (opencv-opencv_extra-4.14.0_GH0.tar.gz) = 2d532531e80dd8a073eab3d64c282643ebfa99fa31639029d3829e5f6ad76172
+SIZE (opencv-opencv_extra-4.14.0_GH0.tar.gz) = 507167516
diff --git a/graphics/py-opencv-python-headless/files/patch-opencv_modules_core_include_opencv2_core_vsx__utils.hpp b/graphics/py-opencv-python-headless/files/patch-opencv_modules_core_include_opencv2_core_vsx__utils.hpp
index 5bba87f4bd03..35d8e839e2c5 100644
--- a/graphics/py-opencv-python-headless/files/patch-opencv_modules_core_include_opencv2_core_vsx__utils.hpp
+++ b/graphics/py-opencv-python-headless/files/patch-opencv_modules_core_include_opencv2_core_vsx__utils.hpp
@@ -1,22 +1,13 @@
---- opencv/modules/core/include/opencv2/core/vsx_utils.hpp.orig 2025-12-30 07:52:05 UTC
+--- opencv/modules/core/include/opencv2/core/vsx_utils.hpp.orig 2026-09-15 18:33:59 UTC
+++ opencv/modules/core/include/opencv2/core/vsx_utils.hpp
-@@ -258,7 +258,7 @@ VSX_IMPL_1VRG(vec_udword2, vec_dword2, vpopcntd, vec_
-
- // converts between single and double-precision
- // vec_floate and vec_doubleo are available since Power10 and z14
--#if defined(__POWER10__) || (defined(__powerpc64__) && defined(__ARCH_PWR10__)
-+#if defined(__POWER10__) || (defined(__powerpc64__) && defined(__ARCH_PWR10__))
- // Use VSX double<->float conversion instructions (if supported by the architecture)
- VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo, vec_floate)
- VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, vec_doubleo)
-@@ -417,6 +417,10 @@ VSX_REDIRECT_1RG(vec_udword2, vec_udword2, vec_popcntu
- VSX_REDIRECT_1RG(vec_ushort8, vec_ushort8, vec_popcntu, vec_popcnt)
+@@ -418,6 +418,10 @@ VSX_REDIRECT_1RG(vec_udword2, vec_udword2, vec_popcntu
VSX_REDIRECT_1RG(vec_uint4, vec_uint4, vec_popcntu, vec_popcnt)
VSX_REDIRECT_1RG(vec_udword2, vec_udword2, vec_popcntu, vec_popcnt)
-+
+
+// converts between single and double precision
+VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo, __builtin_vsx_xvcvdpsp)
+VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, __builtin_vsx_xvcvspdp)
-
++
// converts word and doubleword to double-precision
#ifdef vec_ctd
+ # undef vec_ctd
diff --git a/graphics/py-opencv-python-headless/files/patch-opencv_modules_gapi_cmake_DownloadADE.cmake b/graphics/py-opencv-python-headless/files/patch-opencv_modules_gapi_cmake_DownloadADE.cmake
new file mode 100644
index 000000000000..e26e7c2ea82d
--- /dev/null
+++ b/graphics/py-opencv-python-headless/files/patch-opencv_modules_gapi_cmake_DownloadADE.cmake
@@ -0,0 +1,33 @@
+-- Stop cmake from downloading the ADE sources at configure time.
+-- The ADE sources are prefetched by the ports framework and placed into
+-- the OpenCV source tree under opencv/3rdparty/ade.
+
+--- opencv/modules/gapi/cmake/DownloadADE.cmake.orig 2025-07-04 16:37:46 UTC
++++ opencv/modules/gapi/cmake/DownloadADE.cmake
+@@ -1,18 +1,12 @@
+-set(ade_src_dir "${OpenCV_BINARY_DIR}/3rdparty/ade")
++set(ade_src_dir "${OpenCV_SOURCE_DIR}/3rdparty/ade")
+ set(ade_filename "v0.1.2e.zip")
+ set(ade_subdir "ade-0.1.2e")
+ set(ade_md5 "962ce79e0b95591f226431f7b5f152cd")
+-ocv_download(FILENAME ${ade_filename}
+- HASH ${ade_md5}
+- URL
+- "${OPENCV_ADE_URL}"
+- "$ENV{OPENCV_ADE_URL}"
+- "https://github.com/opencv/ade/archive/"
+- DESTINATION_DIR ${ade_src_dir}
+- ID ADE
+- STATUS res
+- UNPACK RELATIVE_URL)
+-
+-if (NOT res)
++set(file_id ade-0.1.2e/CMakeLists.txt)
++set(FILENAME ${ade_src_dir}/${file_id})
++if(EXISTS ${FILENAME})
++ message("++ ade: Using prefetched ${file_id}")
++else()
++ message(WARNING "++ ade: Could not find ${file_id} in ${FILENAME}")
+ return()
+ endif()
+
diff --git a/graphics/py-opencv-python-headless/files/patch-opencv_modules_python_test_tests_common.py b/graphics/py-opencv-python-headless/files/patch-opencv_modules_python_test_tests_common.py
new file mode 100644
index 000000000000..1a8e4219c99c
--- /dev/null
+++ b/graphics/py-opencv-python-headless/files/patch-opencv_modules_python_test_tests_common.py
@@ -0,0 +1,19 @@
+-- Allow the pytest-based port test target to find the sample/test data
+-- without using the unittest bootstrap CLI. Read the locations from
+-- environment variables set by the port Makefile.
+
+--- opencv/modules/python/test/tests_common.py.orig 2025-07-04 16:37:46 UTC
++++ opencv/modules/python/test/tests_common.py
+@@ -22,9 +22,9 @@
+ class NewOpenCVTests(unittest.TestCase):
+
+ # path to local repository folder containing 'samples' folder
+- repoPath = None
+- extraTestDataPath = None
+- extraDnnTestDataPath = None
++ repoPath = os.environ.get('OPENCV_TEST_REPO_PATH')
++ extraTestDataPath = os.environ.get('OPENCV_TEST_DATA_PATH')
++ extraDnnTestDataPath = os.environ.get('OPENCV_DNN_TEST_DATA_PATH')
+ # github repository url
+ repoUrl = 'https://raw.github.com/opencv/opencv/4.x'
+
diff --git a/graphics/py-opencv-python-headless/files/patch-opencv_modules_videoio_src_cap_ffmpeg_hw.hpp b/graphics/py-opencv-python-headless/files/patch-opencv_modules_videoio_src_cap_ffmpeg_hw.hpp
new file mode 100644
index 000000000000..af6e9b6ccf54
--- /dev/null
+++ b/graphics/py-opencv-python-headless/files/patch-opencv_modules_videoio_src_cap_ffmpeg_hw.hpp
@@ -0,0 +1,22 @@
+-- Fix build against FFmpeg 9.x where AVCodec.pix_fmts was removed.
+-- The pixel-format check for CUDA/VAAPI encoders is only available before
+-- libavcodec 63, so guard the block with a version macro.
+
+--- opencv/modules/videoio/src/cap_ffmpeg_hw.hpp.orig 2025-07-04 16:37:46 UTC
++++ opencv/modules/videoio/src/cap_ffmpeg_hw.hpp
+@@ -757,6 +757,7 @@
+ #endif
+ if (hw_type == AV_HWDEVICE_TYPE_CUDA) // CUDA encoders don't support avcodec_get_hw_config()
+ hw_native_fmt = AV_PIX_FMT_CUDA;
++#if LIBAVCODEC_VERSION_MAJOR < 63
+ if (av_codec_is_encoder(c) && hw_native_fmt != AV_PIX_FMT_NONE && c->pix_fmts) {
+ for (int i = 0; c->pix_fmts[i] != AV_PIX_FMT_NONE; i++) {
+ if (c->pix_fmts[i] == hw_native_fmt) {
+@@ -766,6 +767,7 @@
+ }
+ }
+ }
++#endif
+ for (int i = 0;; i++) {
+ const AVCodecHWConfig *hw_config = avcodec_get_hw_config(c, i);
+ if (!hw_config)
diff --git a/graphics/py-opencv-python-headless/files/patch-opencv_modules_videoio_src_cap_ffmpeg_impl.hpp b/graphics/py-opencv-python-headless/files/patch-opencv_modules_videoio_src_cap_ffmpeg_impl.hpp
new file mode 100644
index 000000000000..6dfdb89b7d0f
--- /dev/null
+++ b/graphics/py-opencv-python-headless/files/patch-opencv_modules_videoio_src_cap_ffmpeg_impl.hpp
@@ -0,0 +1,23 @@
+-- Fix build against FFmpeg 9.x where AVCodec.supported_framerates was removed.
+-- Skip the supported-framerate adjustment when building against libavcodec
+-- 63 or newer.
+
+--- opencv/modules/videoio/src/cap_ffmpeg_impl.hpp.orig 2025-07-04 16:37:46 UTC
++++ opencv/modules/videoio/src/cap_ffmpeg_impl.hpp
+@@ -2627,6 +2627,7 @@
+ c->time_base.den = frame_rate;
+ c->time_base.num = frame_rate_base;
+ /* adjust time base for supported framerates */
++#if LIBAVCODEC_VERSION_MAJOR < 63
+ if(codec && codec->supported_framerates){
+ const AVRational *p= codec->supported_framerates;
+ AVRational req = {frame_rate, frame_rate_base};
+@@ -2644,6 +2645,7 @@
+ return NULL;
+ }
+ c->time_base.den= best->num;
+ c->time_base.num= best->den;
+ }
++#endif
+
+ c->gop_size = 12; /* emit one intra frame every twelve frames at most */
diff --git a/graphics/py-opencv-python-headless/files/patch-setup.py b/graphics/py-opencv-python-headless/files/patch-setup.py
index 388c6373c4ba..8a518396241f 100644
--- a/graphics/py-opencv-python-headless/files/patch-setup.py
+++ b/graphics/py-opencv-python-headless/files/patch-setup.py
@@ -1,19 +1,25 @@
+-- Relax numpy pin so the port builds with the numpy version in ports,
+-- and disable Intel IPP (IPPICV) because it ships Linux-only prebuilt
+-- binaries that cannot be used on FreeBSD. Also turn off protobuf and
+-- video acceleration backends that are not needed for this package.
+
--- setup.py.orig 2025-07-04 16:37:46 UTC
+++ setup.py
@@ -23,8 +23,7 @@
build_rolling = get_build_env_var_by_name("rolling")
-
+
install_requires = [
- 'numpy<2.0; python_version<"3.9"',
- 'numpy>=2; python_version>="3.9"',
+ 'numpy>=1.13.3',
]
-
+
python_version = cmaker.CMaker.get_python_version()
-@@ -186,6 +185,8 @@
+@@ -183,6 +182,9 @@
"-DBUILD_PERF_TESTS=OFF",
"-DBUILD_DOCS=OFF",
"-DPYTHON3_LIMITED_API=ON",
++ "-DWITH_IPP=OFF",
+ "-DWITH_PROTOBUF=OFF",
+ "-DWITH_VA=OFF",
"-DBUILD_OPENEXR=ON",