diff options
author | Cristián Maureira-Fredes <[email protected]> | 2024-12-13 14:53:21 +0100 |
---|---|---|
committer | Cristián Maureira-Fredes <[email protected]> | 2024-12-18 10:08:05 +0100 |
commit | 03a3e61b0cce28c44b68b032cff2e6b8fa869477 (patch) | |
tree | 3f70c84532e671436b3ebc30fbc226aedf49d5eb /build_scripts/main.py | |
parent | b513d1e0ba84f997561f624c73ee54ab91581861 (diff) |
build: improve the build configuration implementation
- Using Singleton for the class
- Adding type hints for the Path variables
- Use function for parsing modules instead of duplicating it
- Adapting related code in other files as well
- Remove historical prints when configuring.
Pick-to: 6.8
Change-Id: I9fef2e8d7c2033442f89a6f6ca027b5ae2ac6ab4
Reviewed-by: Friedemann Kleint <[email protected]>
Diffstat (limited to 'build_scripts/main.py')
-rw-r--r-- | build_scripts/main.py | 61 |
1 files changed, 18 insertions, 43 deletions
diff --git a/build_scripts/main.py b/build_scripts/main.py index 529229387..57e337ac2 100644 --- a/build_scripts/main.py +++ b/build_scripts/main.py @@ -13,7 +13,6 @@ import time from packaging.version import parse as parse_version from pathlib import Path from shutil import copytree, rmtree -from textwrap import dedent # PYSIDE-1760: Pre-load setuptools modules early to avoid racing conditions. # may be touched (should be avoided anyway, btw.) @@ -40,7 +39,7 @@ from .platforms.windows_desktop import prepare_packages_win32 from .qtinfo import QtInfo from .utils import (copydir, copyfile, detect_clang, get_numpy_location, get_python_dict, - linux_fix_rpaths_for_library, macos_fix_rpaths_for_library, + linux_fix_rpaths_for_library, macos_fix_rpaths_for_library, parse_modules, platform_cmake_options, remove_tree, run_process, run_process_output, update_env_path, which) from . import PYSIDE, PYSIDE_MODULE, SHIBOKEN @@ -490,27 +489,13 @@ class PysideBuild(_build, CommandMixin, BuildInfoCollectorMixin): log.info(f"Make generator: {self.make_generator}") log.info(f"Make jobs: {OPTION['JOBS']}") log.info("-" * 3) - log.info(f"setup.py directory: {self.script_dir}") - log.info(f"Build scripts directory: {build_scripts_dir}") - log.info(f"Sources directory: {self.sources_dir}") - log.info(dedent(f""" - Building {config.package_name()} will create and touch directories - in the following order: - make build directory -> - make install directory -> - setuptools build directory -> - setuptools install directory - (usually path-installed-python/lib/python*/site-packages/*) - """)) + log.info(f"setup.py directory: {self.script_dir}") + log.info(f"Build scripts directory: {build_scripts_dir}") + log.info(f"Sources directory: {self.sources_dir}") log.info(f"make build directory: {self.build_dir}") log.info(f"make install directory: {self.install_dir}") log.info(f"setuptools build directory: {self.st_build_dir}") log.info(f"setuptools install directory: {setuptools_install_prefix}") - log.info(dedent(f""" - make-installed site-packages directory: {self.site_packages_dir} - (only relevant for copying files from 'make install directory' - to 'setuptools build directory' - """)) log.info("-" * 3) log.info(f"Python executable: {self.py_executable}") log.info(f"Python includes: {self.py_include_dir}") @@ -662,24 +647,11 @@ class PysideBuild(_build, CommandMixin, BuildInfoCollectorMixin): f"Path given: {config_dir}") if OPTION["MODULE_SUBSET"]: - module_sub_set = '' - for m in OPTION["MODULE_SUBSET"].split(','): - if m.startswith('Qt'): - m = m[2:] - if module_sub_set: - module_sub_set += ';' - module_sub_set += m - cmake_cmd.append(f"-DMODULES={module_sub_set}") + cmake_cmd.append(f"-DMODULES={parse_modules(OPTION['MODULE_SUBSET'])}") if OPTION["SKIP_MODULES"]: - skip_modules = '' - for m in OPTION["SKIP_MODULES"].split(','): - if m.startswith('Qt'): - m = m[2:] - if skip_modules: - skip_modules += ';' - skip_modules += m - cmake_cmd.append(f"-DSKIP_MODULES={skip_modules}") + cmake_cmd.append(f"-DSKIP_MODULES={parse_modules(OPTION['SKIP_MODULES'])}") + # Add source location for generating documentation cmake_src_dir = OPTION["QT_SRC"] if OPTION["QT_SRC"] else qt_src_dir if cmake_src_dir: @@ -715,17 +687,20 @@ class PysideBuild(_build, CommandMixin, BuildInfoCollectorMixin): if OPTION['NO_OVERRIDE_OPTIMIZATION_FLAGS']: cmake_cmd.append("-DQFP_NO_OVERRIDE_OPTIMIZATION_FLAGS=1") - if OPTION["LIMITED_API"] == "yes": - cmake_cmd.append("-DFORCE_LIMITED_API=yes") - elif OPTION["LIMITED_API"] == "no": - cmake_cmd.append("-DFORCE_LIMITED_API=no") - elif not OPTION["LIMITED_API"]: + if not OPTION["LIMITED_API"]: if sys.platform == 'win32' and self.debug: cmake_cmd.append("-DFORCE_LIMITED_API=no") else: - raise SetupError("option limited-api must be 'yes' or 'no' " - "(default yes if applicable, i.e. Python " - "version >= 3.9 and release build if on Windows)") + if OPTION["LIMITED_API"].lower() in ("yes", "y", "1", "true"): + cmake_cmd.append("-DFORCE_LIMITED_API=yes") + elif OPTION["LIMITED_API"].lower() in ("no", "n", "0", "false"): + cmake_cmd.append("-DFORCE_LIMITED_API=no") + else: + raise SetupError( + "Option '--limited-api' must be 'yes' or 'no'." + f"Default is yes if Python version >= {get_allowed_python_versions()[0]} " + "and Release build on Windows" + ) if OPTION["DISABLE_PYI"]: cmake_cmd.append("-DDISABLE_PYI=yes") |