aboutsummaryrefslogtreecommitdiffstats
path: root/build_scripts/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'build_scripts/main.py')
-rw-r--r--build_scripts/main.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/build_scripts/main.py b/build_scripts/main.py
index cd21eb468..0c884cf44 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)")