aboutsummaryrefslogtreecommitdiffstats
path: root/build_scripts/main.py
diff options
context:
space:
mode:
authorCristián Maureira-Fredes <[email protected]>2024-12-13 14:53:21 +0100
committerCristián Maureira-Fredes <[email protected]>2024-12-18 10:08:05 +0100
commit03a3e61b0cce28c44b68b032cff2e6b8fa869477 (patch)
tree3f70c84532e671436b3ebc30fbc226aedf49d5eb /build_scripts/main.py
parentb513d1e0ba84f997561f624c73ee54ab91581861 (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.py61
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")