This is as stupid as making OpenCV recognize OpenBSD like it does FreeBSD. Without this patch, gmic camera support doesn't work.
With this patch (and something else in gstreamer-plugins), it works. Okay ? Index: Makefile =================================================================== RCS file: /cvs/ports/graphics/opencv/Makefile,v retrieving revision 1.69 diff -u -p -r1.69 Makefile --- Makefile 24 Apr 2021 05:22:56 -0000 1.69 +++ Makefile 14 May 2021 16:40:26 -0000 @@ -13,6 +13,8 @@ GH_TAGNAME = ${V} PKGNAME-main = opencv-${V} PKGNAME-java = opencv-java-${V} +REVISION-java = 0 +REVISION-main = 0 HOMEPAGE = https://www.opencv.org/ @@ -22,7 +24,7 @@ MAINTAINER = Rafael Sadowski <rsadowski opencv_flann opencv_highgui opencv_imgproc opencv_ml opencv_objdetect \ opencv_photo opencv_stitching opencv_video opencv_imgcodecs \ opencv_videoio opencv_dnn -SHARED_LIBS += $i 9.0 +SHARED_LIBS += $i 9.1 .endfor WANTLIB-main += ${COMPILER_LIBCXX} IlmImf-2_5 avcodec avformat avutil Index: patches/patch-modules_core_include_opencv2_core_utils_filesystem_private_hpp =================================================================== RCS file: patches/patch-modules_core_include_opencv2_core_utils_filesystem_private_hpp diff -N patches/patch-modules_core_include_opencv2_core_utils_filesystem_private_hpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-modules_core_include_opencv2_core_utils_filesystem_private_hpp 14 May 2021 16:40:26 -0000 @@ -0,0 +1,15 @@ +$OpenBSD$ + +Index: modules/core/include/opencv2/core/utils/filesystem.private.hpp +--- modules/core/include/opencv2/core/utils/filesystem.private.hpp.orig ++++ modules/core/include/opencv2/core/utils/filesystem.private.hpp +@@ -12,7 +12,8 @@ + # elif defined WINRT || defined _WIN32_WCE + /* not supported */ + # elif defined __ANDROID__ || defined __linux__ || defined _WIN32 || \ +- defined __FreeBSD__ || defined __bsdi__ || defined __HAIKU__ ++ defined __FreeBSD__ || defined __bsdi__ || defined __HAIKU__ || \ ++ defined __OpenBSD__ + # define OPENCV_HAVE_FILESYSTEM_SUPPORT 1 + # elif defined(__APPLE__) + # include <TargetConditionals.h> Index: patches/patch-modules_core_src_utils_filesystem_cpp =================================================================== RCS file: patches/patch-modules_core_src_utils_filesystem_cpp diff -N patches/patch-modules_core_src_utils_filesystem_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-modules_core_src_utils_filesystem_cpp 14 May 2021 16:40:26 -0000 @@ -0,0 +1,50 @@ +$OpenBSD$ + +Index: modules/core/src/utils/filesystem.cpp +--- modules/core/src/utils/filesystem.cpp.orig ++++ modules/core/src/utils/filesystem.cpp +@@ -34,7 +34,7 @@ + #include <errno.h> + #include <io.h> + #include <stdio.h> +-#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ ++#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ || defined __OpenBSD__ + #include <sys/types.h> + #include <sys/stat.h> + #include <fcntl.h> +@@ -194,7 +194,7 @@ cv::String getcwd() + sz = GetCurrentDirectoryA((DWORD)buf.size(), buf.data()); + return cv::String(buf.data(), (size_t)sz); + #endif +-#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ ++#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ || defined __OpenBSD__ + for(;;) + { + char* p = ::getcwd(buf.data(), buf.size()); +@@ -228,7 +228,7 @@ bool createDirectory(const cv::String& path) + #else + int result = _mkdir(path.c_str()); + #endif +-#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ ++#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ || defined __OpenBSD__ + int result = mkdir(path.c_str(), 0777); + #else + int result = -1; +@@ -343,7 +343,7 @@ struct FileLock::Impl (private) + Impl& operator=(const Impl&); // disabled + }; + +-#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ ++#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ || defined __OpenBSD__ + + struct FileLock::Impl + { +@@ -457,7 +457,7 @@ cv::String getCacheDirectory(const char* sub_directory + default_cache_path = "/tmp/"; + CV_LOG_WARNING(NULL, "Using world accessible cache directory. This may be not secure: " << default_cache_path); + } +-#elif defined __linux__ || defined __HAIKU__ || defined __FreeBSD__ ++#elif defined __linux__ || defined __HAIKU__ || defined __FreeBSD__ || defined __OpenBSD__ + // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html + if (default_cache_path.empty()) + {