aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--setup.py50
-rw-r--r--sources/pyside2/CMakeLists.txt6
-rw-r--r--sources/pyside2/PySide2/CMakeLists.txt6
-rw-r--r--sources/pyside2/PySide2/_built_modules.py.in3
-rw-r--r--sources/pyside2/PySide2/_config.py.in6
-rw-r--r--sources/pyside2/libpyside/CMakeLists.txt2
-rw-r--r--sources/shiboken2/CMakeLists.txt1
-rw-r--r--sources/shiboken2/data/Shiboken2Config-spec.cmake.in1
-rw-r--r--sources/shiboken2/libshiboken/CMakeLists.txt2
9 files changed, 48 insertions, 29 deletions
diff --git a/setup.py b/setup.py
index 523cb9a0d..a07f5f758 100644
--- a/setup.py
+++ b/setup.py
@@ -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