Guido van Rossum <gu...@python.org> added the comment:

To the question "why does _freeze_module need to be a (C) binary" (IOW, why 
can't it be replaced by a Python script that is run with PYTHON_FOR_REGEN, 
which always runs on the build host), the reason is that it uses the bytecode 
compiler to generate correct output. The bytecode compiler is written in C and 
depends on many other parts of the runtime. Bytecode is not compatible between 
versions (and in 3.11 it is an especially moving target) so we absolutely must 
use the bytecode compiler from the current source tree.

Fortunately bytecode *is* portable across OS and CPU versions, so there is no 
problem with taking a _freeze_module binary compiled for the build host and 
running it there (on the build host). It *is* complicated to build a binary for 
the build host in a tree configured for cross compilation though -- you'd have 
to do an out-of-tree build configured for the build host platform. Rather than 
solving *that* problem, Christian proposes to let the user solve that, and 
allowing the user to pass in the path to the host platform _freeze_module 
binary.

----------
nosy: +eric.snow, gvanrossum

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45886>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to