diff options
-rw-r--r-- | setup.py | 50 | ||||
-rw-r--r-- | sources/pyside2/CMakeLists.txt | 6 | ||||
-rw-r--r-- | sources/pyside2/PySide2/CMakeLists.txt | 6 | ||||
-rw-r--r-- | sources/pyside2/PySide2/_built_modules.py.in | 3 | ||||
-rw-r--r-- | sources/pyside2/PySide2/_config.py.in | 6 | ||||
-rw-r--r-- | sources/pyside2/libpyside/CMakeLists.txt | 2 | ||||
-rw-r--r-- | sources/shiboken2/CMakeLists.txt | 1 | ||||
-rw-r--r-- | sources/shiboken2/data/Shiboken2Config-spec.cmake.in | 1 | ||||
-rw-r--r-- | sources/shiboken2/libshiboken/CMakeLists.txt | 2 |
9 files changed, 48 insertions, 29 deletions
@@ -1129,29 +1129,27 @@ class pyside_build(_build): print('setup.py/prepare_packages: ', e) raise - def get_built_pyside_modules(self, vars): - # Get list of built modules, so that we copy only required Qt libraries. + def get_built_pyside_config(self, vars): + # Get config that contains list of built modules, and SOVERSIONs of the built libraries. pyside_package_dir = vars['pyside_package_dir'] - built_modules_path = os.path.join(pyside_package_dir, "PySide2", "_built_modules.py") + config_path = os.path.join(pyside_package_dir, "PySide2", "_config.py") try: - with open(built_modules_path) as f: + with open(config_path) as f: scoped_locals = {} - code = compile(f.read(), built_modules_path, 'exec') + code = compile(f.read(), config_path, 'exec') exec(code, scoped_locals, scoped_locals) - return scoped_locals['built_modules'] + config = {} + config['built_modules'] = scoped_locals['built_modules'] + config['shiboken_library_soversion'] = scoped_locals['shiboken_library_soversion'] + config['pyside_library_soversion'] = scoped_locals['pyside_library_soversion'] + return config except IOError as e: - print("get_built_pyside_modules: Couldn't find file: {}.".format(built_modules_path)) + print("get_built_pyside_config: Couldn't find file: {}.".format(config_path)) raise def prepare_packages_posix(self, vars): executables = [] - if sys.platform.startswith('linux'): - so_ext = '.so' - so_star = so_ext + '*' - elif sys.platform == 'darwin': - so_ext = '.dylib' - so_star = so_ext # <build>/shiboken2/doc/html/* -> <setup>/PySide2/docs/shiboken2 copydir( "{build_dir}/shiboken2/doc/html", @@ -1202,14 +1200,22 @@ class pyside_build(_build): ], recursive=False, vars=vars)) # <install>/lib/lib* -> PySide2/ + config = self.get_built_pyside_config(vars) + def adjusted_lib_name(name, version): + postfix = '' + if sys.platform.startswith('linux'): + postfix = '.so.' + version + elif sys.platform == 'darwin': + postfix = '.' + version + '.dylib' + return name + postfix copydir( "{install_dir}/lib/", "{pyside_package_dir}/PySide2", filter=[ - "libpyside*" + so_star, - "libshiboken*" + so_star, + adjusted_lib_name("libpyside*", config['pyside_library_soversion']), + adjusted_lib_name("libshiboken*", config['shiboken_library_soversion']), ], - recursive=False, vars=vars) + recursive=False, vars=vars, force_copy_symlinks=True) # <install>/share/PySide2/typesystems/* -> <setup>/PySide2/typesystems copydir( "{install_dir}/share/PySide2/typesystems", @@ -1241,7 +1247,7 @@ class pyside_build(_build): pyside_rcc_options) # Copy Qt libs to package if OPTION_STANDALONE: - vars['built_modules'] = self.get_built_pyside_modules(vars) + vars['built_modules'] = config['built_modules'] if sys.platform == 'darwin': self.prepare_standalone_package_osx(executables, vars) else: @@ -1358,13 +1364,15 @@ class pyside_build(_build): else: ignored_modules = [] if 'WebEngineWidgets' not in built_modules: - ignored_modules.extend(['*Qt5WebEngine*.dylib']) - accepted_modules = ['*Qt5*.dylib'] + ignored_modules.extend(['libQt5WebEngine*.dylib']) + if 'WebKit' not in built_modules: + ignored_modules.extend(['libQt5WebKit*.dylib']) + accepted_modules = ['libQt5*.5.dylib'] copydir("{qt_lib_dir}", "{pyside_package_dir}/PySide2/Qt/lib", filter=accepted_modules, ignore=ignored_modules, - recursive=True, vars=vars) + recursive=True, vars=vars, force_copy_symlinks=True) if 'WebEngineWidgets' in built_modules: copydir("{qt_lib_execs_dir}", "{pyside_package_dir}/PySide2/Qt/libexec", @@ -1405,7 +1413,7 @@ class pyside_build(_build): "{site_packages_dir}/PySide2", "{pyside_package_dir}/PySide2", vars=vars) - built_modules = self.get_built_pyside_modules(vars) + built_modules = self.get_built_pyside_config(vars)['built_modules'] if self.debug or self.build_type == 'RelWithDebInfo': # <build>/pyside2/PySide2/*.pdb -> <setup>/PySide2 diff --git a/sources/pyside2/CMakeLists.txt b/sources/pyside2/CMakeLists.txt index d7d17f27d..08ed52473 100644 --- a/sources/pyside2/CMakeLists.txt +++ b/sources/pyside2/CMakeLists.txt @@ -166,6 +166,7 @@ set(BINDING_API_MICRO_VERSION "0") set(BINDING_API_RELEASE_LEVEL "alpha") # alpha, beta, rc, or final set(BINDING_API_SERIAL 0) # leave as 0 when release level is final set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}" CACHE STRING "PySide version" FORCE) +set(PYSIDE_SO_VERSION ${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}) if (BINDING_API_RELEASE_LEVEL STREQUAL "final") set(BINDING_API_VERSION_FULL "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}" CACHE STRING "PySide version [full]" FORCE) @@ -220,6 +221,11 @@ if(GIT_FOUND) endif() endif() +# Used by setup.py to know which symlink to resolve and copy in to the final package, in order to +# avoid resolving all symlinks and thus copying unnecessary duplicate files. +set(config_py_shiboken_library_version "") +set(config_py_pyside_library_version "") + include(PySideModules) macro(COLLECT_MODULE_IF_FOUND shortname) diff --git a/sources/pyside2/PySide2/CMakeLists.txt b/sources/pyside2/PySide2/CMakeLists.txt index 2a8cf15ee..98cb00b0a 100644 --- a/sources/pyside2/PySide2/CMakeLists.txt +++ b/sources/pyside2/PySide2/CMakeLists.txt @@ -7,8 +7,8 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/global.h.in" configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in" "${CMAKE_CURRENT_BINARY_DIR}/__init__.py" @ONLY) -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/_built_modules.py.in" - "${CMAKE_CURRENT_BINARY_DIR}/_built_modules.py" @ONLY) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/_config.py.in" + "${CMAKE_CURRENT_BINARY_DIR}/_config.py" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/_utils.py.in" "${CMAKE_CURRENT_BINARY_DIR}/_utils.py" @ONLY) @@ -49,7 +49,7 @@ endforeach() # install install(FILES "${CMAKE_CURRENT_BINARY_DIR}/__init__.py" DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside2_SUFFIX}") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/_built_modules.py" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/_config.py" DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside2_SUFFIX}") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/_utils.py DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside2_SUFFIX}") diff --git a/sources/pyside2/PySide2/_built_modules.py.in b/sources/pyside2/PySide2/_built_modules.py.in deleted file mode 100644 index 4e491d081..000000000 --- a/sources/pyside2/PySide2/_built_modules.py.in +++ /dev/null @@ -1,3 +0,0 @@ -built_modules = list(name for name in - "@all_module_shortnames@" - .split(";")) diff --git a/sources/pyside2/PySide2/_config.py.in b/sources/pyside2/PySide2/_config.py.in new file mode 100644 index 000000000..db8a17210 --- /dev/null +++ b/sources/pyside2/PySide2/_config.py.in @@ -0,0 +1,6 @@ +built_modules = list(name for name in + "@all_module_shortnames@" + .split(";")) + +shiboken_library_soversion = str(@SHIBOKEN_SO_VERSION@) +pyside_library_soversion = str(@PYSIDE_SO_VERSION@) diff --git a/sources/pyside2/libpyside/CMakeLists.txt b/sources/pyside2/libpyside/CMakeLists.txt index de29269a4..15879a201 100644 --- a/sources/pyside2/libpyside/CMakeLists.txt +++ b/sources/pyside2/libpyside/CMakeLists.txt @@ -99,7 +99,7 @@ target_link_libraries(pyside2 set_target_properties(pyside2 PROPERTIES VERSION ${BINDING_API_VERSION} - SOVERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}" + SOVERSION "${PYSIDE_SO_VERSION}" OUTPUT_NAME "pyside2${pyside2_SUFFIX}${SHIBOKEN_PYTHON_SHARED_LIBRARY_SUFFIX}" DEFINE_SYMBOL PYSIDE_EXPORTS) diff --git a/sources/shiboken2/CMakeLists.txt b/sources/shiboken2/CMakeLists.txt index be3187591..238ee2d34 100644 --- a/sources/shiboken2/CMakeLists.txt +++ b/sources/shiboken2/CMakeLists.txt @@ -15,6 +15,7 @@ set(shiboken_MAJOR_VERSION "2") set(shiboken_MINOR_VERSION "0") set(shiboken_MICRO_VERSION "0") set(shiboken2_VERSION "${shiboken_MAJOR_VERSION}.${shiboken_MINOR_VERSION}.${shiboken_MICRO_VERSION}") +set(shiboken2_library_so_version "${shiboken_MAJOR_VERSION}.${shiboken_MINOR_VERSION}") option(BUILD_TESTS "Build tests." TRUE) option(USE_PYTHON_VERSION "Use specific python version to build shiboken2." "") diff --git a/sources/shiboken2/data/Shiboken2Config-spec.cmake.in b/sources/shiboken2/data/Shiboken2Config-spec.cmake.in index 9a30d7b4d..576bed0e2 100644 --- a/sources/shiboken2/data/Shiboken2Config-spec.cmake.in +++ b/sources/shiboken2/data/Shiboken2Config-spec.cmake.in @@ -25,6 +25,7 @@ SET(SHIBOKEN_PYTHON_LIBRARIES "@SBK_PYTHON_LIBRARIES@") SET(SHIBOKEN_PYTHON_EXTENSION_SUFFIX "@PYTHON_EXTENSION_SUFFIX@") SET(SHIBOKEN_PYTHON_SHARED_LIBRARY_SUFFIX "@PYTHON_SHARED_LIBRARY_SUFFIX@") SET(SHIBOKEN_PYTHON_CONFIG_SUFFIX "@PYTHON_CONFIG_SUFFIX@") +SET(SHIBOKEN_SO_VERSION "@shiboken2_library_so_version@") message(STATUS "libshiboken built for @SHIBOKEN_BUILD_TYPE@") @SBK_ADD_PY_DEBUG_DEFINITION@ diff --git a/sources/shiboken2/libshiboken/CMakeLists.txt b/sources/shiboken2/libshiboken/CMakeLists.txt index 6f7e4b463..6e725e6af 100644 --- a/sources/shiboken2/libshiboken/CMakeLists.txt +++ b/sources/shiboken2/libshiboken/CMakeLists.txt @@ -22,7 +22,7 @@ set(libshiboken_MAJOR_VERSION ${shiboken_MAJOR_VERSION}) set(libshiboken_MINOR_VERSION ${shiboken_MINOR_VERSION}) set(libshiboken_MICRO_VERSION ${shiboken_MICRO_VERSION}) set(libshiboken_VERSION "${libshiboken_MAJOR_VERSION}.${libshiboken_MINOR_VERSION}.${libshiboken_MICRO_VERSION}") -set(libshiboken_SOVERSION "${libshiboken_MAJOR_VERSION}.${libshiboken_MINOR_VERSION}") +set(libshiboken_SOVERSION "${shiboken2_library_so_version}") set(libshiboken_SRC basewrapper.cpp |