Skip to content

Commit

Permalink
Merge pull request #563 from asenyaev/asen/python_loader_support
Browse files Browse the repository at this point in the history
Updated submodules to the release 4.5.4 and added python loader support
  • Loading branch information
asenyaev committed Oct 20, 2021
2 parents 85b9bc5 + 851182f commit a0f47e9
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 44 deletions.
31 changes: 0 additions & 31 deletions cv2/__init__.py
@@ -1,31 +0,0 @@
import importlib
import os
import sys

from .cv2 import *
from .data import *

# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module("cv2.cv2").__dict__)

ci_and_not_headless = False

try:
from .version import ci_build, headless

ci_and_not_headless = ci_build and not headless
except:
pass

# the Qt plugin is included currently only in the pre-built wheels
if sys.platform.startswith("linux") and ci_and_not_headless:
os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "qt", "plugins"
)

# Qt will throw warning on Linux if fonts are not found
if sys.platform.startswith("linux") and ci_and_not_headless:
os.environ["QT_QPA_FONTDIR"] = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "qt", "fonts"
)
2 changes: 1 addition & 1 deletion opencv
Submodule opencv updated 449 files
2 changes: 1 addition & 1 deletion opencv_contrib
Submodule opencv_contrib updated 123 files
2 changes: 1 addition & 1 deletion opencv_extra
Submodule opencv_extra updated 232 files
19 changes: 13 additions & 6 deletions patches/patchQtPlugins
Expand Up @@ -3,16 +3,23 @@ index 4c0b3880fc..dffa0a4caa 100644
--- a/opencv/CMakeLists.txt
+++ b/opencv/CMakeLists.txt
@@ -1187,6 +1187,13 @@ if(WITH_QT OR HAVE_QT)
if(HAVE_QT5)
status(" QT:" "YES (ver ${Qt5Core_VERSION_STRING})")
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt5OpenGL_LIBRARIES} ${Qt5OpenGL_VERSION_STRING})" ELSE NO)
if(HAVE_QT)
status(" QT:" "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})")
+ if(APPLE)
+ install(DIRECTORY ${Qt5_DIR}/../../../plugins DESTINATION lib/qt)
+ endif()
+ if(UNIX AND NOT APPLE)
+ install(DIRECTORY /opt/Qt5.15.0/plugins DESTINATION lib/qt)
+ install(DIRECTORY /usr/share/fonts DESTINATION lib/qt)
+ endif()
elseif(HAVE_QT)
status(" QT:" "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})")
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
if(HAVE_QT_OPENGL)
if(Qt${QT_VERSION_MAJOR}OpenGL_LIBRARIES)
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt${QT_VERSION_MAJOR}OpenGL_LIBRARIES} ${Qt${QT_VERSION_MAJOR}OpenGL_VERSION_STRING})" ELSE NO)
else()
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
endif()
else()
status(" QT OpenGL support:" "NO")
endif()
else()
status(" QT:" "NO")
24 changes: 24 additions & 0 deletions scripts/__init__.py
@@ -0,0 +1,24 @@
PYTHON_EXTENSIONS_PATHS = [
LOADER_DIR
] + PYTHON_EXTENSIONS_PATHS

ci_and_not_headless = False

try:
from .version import ci_build, headless

ci_and_not_headless = ci_build and not headless
except:
pass

# the Qt plugin is included currently only in the pre-built wheels
if sys.platform.startswith("linux") and ci_and_not_headless:
os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "qt", "plugins"
)

# Qt will throw warning on Linux if fonts are not found
if sys.platform.startswith("linux") and ci_and_not_headless:
os.environ["QT_QPA_FONTDIR"] = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "qt", "fonts"
)
33 changes: 29 additions & 4 deletions setup.py
Expand Up @@ -108,12 +108,32 @@ def main():
# Naming conventions vary so widely between versions and OSes
# had to give up on checking them.
[
"python/cv2[^/]*%(ext)s"
% {"ext": re.escape(sysconfig.get_config_var("EXT_SUFFIX"))}
"python/cv2/python-%s.%s/cv2[^/]*%s"
% (sys.version_info[0], sys.version_info[1], re.escape(sysconfig.get_config_var("EXT_SUFFIX")))
]
+
[
r"python/cv2/__init__.py"
]
+
[
r"python/cv2/.*config.*.py"
],
"cv2.data": [ # OPENCV_OTHER_INSTALL_PATH
("etc" if os.name == "nt" else "share/opencv4") + r"/haarcascades/.*\.xml"
],
"cv2.gapi": [
"python/cv2" + r"/gapi/.*\.py"
],
"cv2.mat_wrapper": [
"python/cv2" + r"/mat_wrapper/.*\.py"
],
"cv2.misc": [
"python/cv2" + r"/misc/.*\.py"
],
"cv2.utils": [
"python/cv2" + r"/utils/.*\.py"
],
}

# Files in sourcetree outside package dir that should be copied to package.
Expand All @@ -137,8 +157,6 @@ def main():
"-DBUILD_opencv_python2=OFF",
# Disable the Java build by default as it is not needed
"-DBUILD_opencv_java=%s" % build_java,
# When off, adds __init__.py and a few more helper .py's. We use our own helper files with a different structure.
"-DOPENCV_SKIP_PYTHON_LOADER=ON",
# Relative dir to install the built module to in the build tree.
# The default is generated from sysconfig, we'd rather have a constant for simplicity
"-DOPENCV_PYTHON3_INSTALL_PATH=python",
Expand Down Expand Up @@ -358,6 +376,13 @@ def _classify_installed_files_override(

print("Copying files from CMake output")

# add lines from the old __init__.py file to the config file
with open('scripts/__init__.py', 'r') as custom_init:
custom_init_data = custom_init.read()
with open('%spython/cv2/config-%s.%s.py'
% (cmake_install_dir, sys.version_info[0], sys.version_info[1]), 'w') as opencv_init_config:
opencv_init_config.write(custom_init_data)

for package_name, relpaths_re in cls.package_paths_re.items():
package_dest_reldir = package_name.replace(".", os.path.sep)
for relpath_re in relpaths_re:
Expand Down

0 comments on commit a0f47e9

Please sign in to comment.