This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: frozen modules are not regenerated on bytecode magic change when cross building
Type: behavior Stage:
Components: Cross-Build Versions: Python 3.11
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Alex.Willmer, christian.heimes, gvanrossum
Priority: normal Keywords:

Created on 2022-01-05 18:27 by christian.heimes, last changed 2022-04-11 14:59 by admin.

Messages (1)
msg409794 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-05 18:27
The Makefile rules for frozen header files have a dependency on $(FREEZE_MODULE_BOOTSTRAP_DEPS) or $(FREEZE_MODULE_DEPS). For normal builds this dependency will trigger a refresh of the frozen header files when the byte code magic changes:

  FREEZE_MODULE_BOOTSTRAP_DEPS=Programs/_freeze_module
  FREEZE_MODULE_DEPS=_bootstrap_python

Both binaries depend on object files which indirectly have a dependency on all core header files $(PYTHON_HEADERS).

However cross builds use an external Python binary. Neither $(FREEZE_MODULE_BOOTSTRAP_DEPS) nor $(FREEZE_MODULE_DEPS) add an indirect dependency on $(PYTHON_HEADERS). The frozen header files are not rebuilt when any header file like opcode.h is modified. This causes hard to debug issues like https://bugs.python.org/issue46009#msg409770

Fix: all frozen header files should also depend on $(PYTHON_HEADERS)
History
Date User Action Args
2022-04-11 14:59:54adminsetgithub: 90429
2022-01-05 18:27:14christian.heimescreate