diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-10-18 11:56:06 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-10-23 16:41:39 +0200 |
| commit | 48f781be3fc667b45c39ff6a31e393de8ed17f24 (patch) | |
| tree | d4d807184ebe1efbfb1672d061256cab05f83fb3 | |
| parent | 6bc526d4fe45d68674d4d52131d79ed35cd7df4a (diff) | |
build: Remove build-directory-dependent code from PySide's __init__.py
It breaks checks for reproducible builds.
Fixes: PYSIDE-2895
Change-Id: Id9a8c00dd7319b6f30c06e30f796e7ee11edc593
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
(cherry picked from commit bdd6a0d5d61aa76c202669ae1c17ef4dfe0b9bde)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 891ea6b9b4a460827f4ea69f728cff45a321ac43)
| -rw-r--r-- | build_scripts/main.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/build_scripts/main.py b/build_scripts/main.py index 4d541b3ac..cad754c4c 100644 --- a/build_scripts/main.py +++ b/build_scripts/main.py @@ -59,6 +59,20 @@ def elapsed(): return int(time.time() - start_time) +def _fix_pyside_init_py(path): + """For reproducible builds, strip out the part that contains the build-directory + from PySide's __init__.py (PYSIDE-2895/QTBUG-105926).""" + START_MARKER = "\n # Note: We should _not_ call this function" + END_MARKER = "return __all__\n" + contents = path.read_text(encoding='utf-8') + start = contents.find(START_MARKER) + end = contents.find(END_MARKER, start + len(START_MARKER)) if start != -1 else -1 + if end == -1: + raise SetupError(f"Unable to fix {path}") + fixed_contents = contents[:start] + contents[end + len(END_MARKER):] + path.write_text(fixed_contents, encoding='utf-8') + + def get_setuptools_extension_modules(): # Setting py_limited_api on the extension is the "correct" thing # to do, but it doesn't actually do anything, because we @@ -466,6 +480,10 @@ class PysideBuild(_build, CommandMixin, BuildInfoCollectorMixin): except Exception as e: log.warning(f'problem renaming "{self.st_build_dir}"') log.warning(f'ignored error: {type(e).__name__}: {e}') + + if config.is_internal_pyside_build(): + _fix_pyside_init_py(_dst / "__init__.py") + else: log.info("Skipped preparing and building packages.") log.info(f"--- Build completed ({elapsed()}s)") |
