aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShyamnath Premnadh <[email protected]>2025-05-16 11:27:56 +0200
committerShyamnath Premnadh <[email protected]>2025-06-11 09:06:16 +0200
commit93baaa8c98d7bd6e170e894b1854c99585d58b20 (patch)
tree2faf9fbc1a89e069cdcef4fd1b16c2425545e195
parent135c10324b1533f23f34a043963ce49b324c16c0 (diff)
PySide: Move CMake config packages into wheels
- This becomes useful for QtBridges to access cmake variables related to PySide6 and shibken6 installation. Change-Id: I260282b56af0709c49c3e30c16aa950ce5c1653f Reviewed-by: Friedemann Kleint <[email protected]>
-rw-r--r--build_scripts/platforms/unix.py14
-rw-r--r--build_scripts/platforms/windows_desktop.py16
-rw-r--r--build_scripts/utils.py16
-rw-r--r--create_wheels.py4
4 files changed, 47 insertions, 3 deletions
diff --git a/build_scripts/platforms/unix.py b/build_scripts/platforms/unix.py
index 35d6dd1c3..d1729f77a 100644
--- a/build_scripts/platforms/unix.py
+++ b/build_scripts/platforms/unix.py
@@ -8,7 +8,7 @@ from pathlib import Path
from ..log import log
from ..config import config
from ..options import OPTION
-from ..utils import copydir, copyfile, copy_qt_metatypes, makefile
+from ..utils import copydir, copyfile, copy_qt_metatypes, makefile, copy_cmake_config_dirs
from .. import PYSIDE, SHIBOKEN
from .linux import prepare_standalone_package_linux
from .macos import prepare_standalone_package_macos
@@ -90,6 +90,12 @@ def prepare_packages_posix(pyside_build, _vars, cross_build=False):
],
recursive=False, _vars=_vars, force_copy_symlinks=True)
+ # Copy all CMake config directories matching the prefix
+ copy_cmake_config_dirs(
+ _vars["install_dir"], _vars["st_build_dir"],
+ _vars["st_package_name"], _vars["cmake_package_name"]
+ )
+
if config.is_internal_shiboken_generator_build():
# <install>/bin/* -> {st_package_name}/
copydir(
@@ -177,6 +183,12 @@ def prepare_packages_posix(pyside_build, _vars, cross_build=False):
recursive=False,
_vars=_vars))
+ # Copy all CMake config directories matching the prefix
+ copy_cmake_config_dirs(
+ _vars["install_dir"], _vars["st_build_dir"],
+ _vars["st_package_name"], _vars["cmake_package_name"]
+ )
+
# <install>/lib/lib* -> {st_package_name}/
copydir(
"{install_dir}/lib", destination_dir,
diff --git a/build_scripts/platforms/windows_desktop.py b/build_scripts/platforms/windows_desktop.py
index 775095fa2..550f76f99 100644
--- a/build_scripts/platforms/windows_desktop.py
+++ b/build_scripts/platforms/windows_desktop.py
@@ -12,8 +12,8 @@ from pathlib import Path
from ..log import log
from ..config import config
from ..options import OPTION
-from ..utils import (copydir, copyfile, copy_qt_metatypes,
- download_and_extract_7z, filter_match, makefile, in_coin)
+from ..utils import (copydir, copyfile, copy_qt_metatypes, download_and_extract_7z,
+ filter_match, makefile, in_coin, copy_cmake_config_dirs)
from .. import PYSIDE, SHIBOKEN, PYSIDE_WINDOWS_BIN_TOOLS, PYSIDE_MULTIMEDIA_LIBS
@@ -70,6 +70,12 @@ def prepare_packages_win32(pyside_build, _vars):
_filter=pdbs,
recursive=False, _vars=_vars)
+ # Copy all CMake config directories matching the prefix
+ copy_cmake_config_dirs(
+ _vars["install_dir"], _vars["st_build_dir"],
+ _vars["st_package_name"], _vars["cmake_package_name"]
+ )
+
if config.is_internal_shiboken_generator_build():
# <install>/bin/*.dll -> {st_package_name}/
copydir(
@@ -192,6 +198,12 @@ def prepare_packages_win32(pyside_build, _vars):
"ssleay32.dll"],
force=False, _vars=_vars)
+ # Copy all CMake config directories matching the prefix
+ copy_cmake_config_dirs(
+ _vars["install_dir"], _vars["st_build_dir"],
+ _vars["st_package_name"], _vars["cmake_package_name"]
+ )
+
if config.is_internal_shiboken_module_build():
# The C++ std library dlls need to be packaged with the
# shiboken module, because libshiboken uses C++ code.
diff --git a/build_scripts/utils.py b/build_scripts/utils.py
index 29f2545d0..be132bad8 100644
--- a/build_scripts/utils.py
+++ b/build_scripts/utils.py
@@ -1136,3 +1136,19 @@ def parse_modules(modules: str) -> str:
module_sub_set += ';'
module_sub_set += m
return module_sub_set
+
+
+def copy_cmake_config_dirs(install_dir, st_build_dir, st_package_name, cmake_package_name):
+ """
+ Copy all CMake config directories from <install_dir>/lib/cmake whose names start with
+ <cmake_package_name> (case-insensitive) into <st_build_dir>/<st_package_name>/lib/cmake.
+ """
+ src_cmake_dir = Path(install_dir) / "lib" / "cmake"
+ dst_cmake_dir = Path(st_build_dir) / st_package_name / "lib" / "cmake"
+ dst_cmake_dir.mkdir(parents=True, exist_ok=True)
+ for src_path in src_cmake_dir.iterdir():
+ if src_path.is_dir() and src_path.name.lower().startswith(cmake_package_name.lower()):
+ dst_path = dst_cmake_dir / src_path.name
+ if dst_path.exists():
+ shutil.rmtree(dst_path)
+ shutil.copytree(src_path, dst_path)
diff --git a/create_wheels.py b/create_wheels.py
index 55d02928b..df2680a49 100644
--- a/create_wheels.py
+++ b/create_wheels.py
@@ -92,6 +92,10 @@ def get_manifest(wheel_name: str, data: list[ModuleData], package_path: Path) ->
# adding PySide6_Essentials.json and PySide6_Addons.json
lines.append(f"include PySide6/{wheel_name}.json")
+ # Only include CMake configs for PySide6_Essentials
+ if wheel_name == "PySide6_Essentials":
+ lines.append("graft PySide6/lib/cmake")
+
return "\n".join(lines)