Repository navigation
Method Py_FrozenMain missing in libpython3.9 #86757
Description
Activity
In Python 3.9.0 and 3.9.1rc1 (Packages from Ubuntu Devel Branch or Fedora) the Method int Py_FrozenMain(int, char**) is missing in libpython3.9.so
Thus, when trying the provided freeze example via
freeze.py hello.py & make
one gets the linker error
/usr/bin/ld: frozen.o: in functionmain': frozen/frozen.c:681: undefined reference toPy_FrozenMain' .In previous Python 3.8.x the bug does not show.
Thanks,
Chris- added3.9 (EOL)end of lifeend of lifestdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directoryand removed
on Dec 7, 2020 The same under Python 3.9.1 (Package from Debian bullseye/testing). As the method Py_FrozenMain is contained in the source code, maybe ist has something to do with the build process, a change in makefile? As far as I can see, the builder of the distribution packages call the makefile as provided.
Chris
The file containing the source code is Python/frozenmain.c .
I wrote PR 23730 to fix the issue. Would it be possible for you to test it?
Since Python 3.9, symbols which are not explicitly exported are no longer exported. Python now uses -fvisibility=hidden.
Dear Victor,
a simple test with the tools/freeze/hello.py example was successfull with your patch and the newest cpython from github.
- git clone https://github.com/python/cpython.git
- Applied a patch of your pull request
3. configure, make, amke install to xxx - freeze.py wants wants this for a very long time:
ln -s /usr/local/lib/python3.10/config-3.10-x86_64-linux-gnu
/usr/local/lib/python3.10/config-3.10 - python3 cpython/Tools/freeze.py -o frozen hello.py
- cd frozen; make; ./hello
Helo world...
Thanks again,
Chrisa simple test with the tools/freeze/hello.py example was successfull with your patch and the newest cpython from github.
Oh great, thanks for your quick feedback! I applied your PR to master and I will backport it to 3.9.
Thanks Christian Bachmaier for the bug report, it's now fixed.
Christian Bachmaier:
Thus, when trying the provided freeze example via
freeze.py hello.py & makeDo you mean freeze.py from Tools/freeze/freeze.py? This tool seems to be broken for 4 years, since Python 3.6: bpo-42613.
- freeze.py wants wants this for a very long time:
ln -s /usr/local/lib/python3.10/config-3.10-x86_64-linux-gnu
/usr/local/lib/python3.10/config-3.10
Oh, you fixed manually freeze.py?
- freeze.py wants wants this for a very long time:
Do you mean freeze.py from Tools/freeze/freeze.py?
Yes, unfortunately I have to keep a large old system running and there are only few options left. It is a University learning system, where students upload program code and then a huge amount of automtic quality checks are executed within a sandbox. The grading is done in a half automtic way. A real alternative is not existing, we tried hard to find one...
This tool seems to
be broken for 4 years, since Python 3.6: bpo-42613.
4. freeze.py wants wants this for a very long time:
ln -s /usr/local/lib/python3.10/config-3.10-x86_64-linux-gnu
/usr/local/lib/python3.10/config-3.10The symlink does the trick. So it may be easy for you to fix that, so it does operate out of the box again.
Christian Bachmaier:
The symlink does the trick. So it may be easy for you to fix that, so it does operate out of the box again.
I pushed a fix in bpo-42613. It would be great if you could test it.
See my manual test: https://bugs.python.org/issue42613#msg383153
If you can test it, I can backport the fix to stable branches.
Vistor Stinner:
If you can test it, I can backport the fix to stable branches.
Seems to work like a charm. Basically I used the same testing setup as previously on Dec 10th under Debian testing/bullseye without step 2, as master already contains your fix.
Victor, many thanks again, you are great!
Is this function actually usable in Windows? ISTM that you need to define three more functions, PyWinFreeze_ExeInit, PyWinFreeze_ExeTerm and PyInitFrozenExtensions.
Was adding this undocumented function to the Windows stable ABI deliberate? I see no discussion about that.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: