diff options
author | Shyamnath Premnadh <[email protected]> | 2025-05-16 11:27:56 +0200 |
---|---|---|
committer | Shyamnath Premnadh <[email protected]> | 2025-06-11 09:06:16 +0200 |
commit | 93baaa8c98d7bd6e170e894b1854c99585d58b20 (patch) | |
tree | 2faf9fbc1a89e069cdcef4fd1b16c2425545e195 | |
parent | 135c10324b1533f23f34a043963ce49b324c16c0 (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.py | 14 | ||||
-rw-r--r-- | build_scripts/platforms/windows_desktop.py | 16 | ||||
-rw-r--r-- | build_scripts/utils.py | 16 | ||||
-rw-r--r-- | create_wheels.py | 4 |
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) |