Issue 42613: freeze.py doesn't support sys.platlibdir different than lib nor multiarch
Created on 2020-12-10 10:01 by vstinner, last changed 2022-04-11 14:59 by admin. This issue is now closed.
Messages (8)
msg382821 - (view)
Author: STINNER Victor (vstinner) *
Date: 2020-12-10 10:01
Date: 2020-12-16 08:02
Date: 2020-12-16 08:03
Date: 2020-12-16 08:09
Date: 2020-12-16 11:12
Date: 2020-12-16 11:16
Date: 2020-12-17 14:29
Date: 2020-12-10 10:01
Tools/freeze/freeze.py doesn't support config directory using multiarch nor directory using a sys.platlibdir different than "lib". In short, it doesn't work on Fedora 33 which uses: /usr/lib64/python3.10/config-3.10-x86_64-linux-gnu/ It might be possible to copy/paste the code creating the config-xxx path from Lib/sysconfig.py to Tools/freeze/freeze.py, but I would prefer to reuse code if possible, to make the code more sustainable. Maybe we can add a private function to get the path to the "config" directory. Or even a public function.msg383119 - (view) Author: STINNER Victor (vstinner) *
Date: 2020-12-16 08:02
Tools/freeze/freeze.py is broken for 4 years, since Python 3.6 which added sys.implementation._multiarch to the config directory in sysconfig: commit 5553231b91e05cf93827b33a79aebe62c4370a09 Author: doko@ubuntu.com <doko@ubuntu.com> Date: Tue Jun 14 08:55:19 2016 +0200 - Issue #23968: Rename the platform directory from plat-$(MACHDEP) to plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install the platform specifc _sysconfigdata module into the platform directory and rename it to include the ABIFLAGS.msg383120 - (view) Author: STINNER Victor (vstinner) *
Date: 2020-12-16 08:03
I found this issue while working on bpo-42591 which exported the missing Py_FrozenMain() symbol.msg383122 - (view) Author: STINNER Victor (vstinner) *
Date: 2020-12-16 08:09
There are better maintained alternatives: * PyOxidizer * pyInstaller * bbFreeze * py2exe * cx_Freeze * py2app * etc.msg383151 - (view) Author: STINNER Victor (vstinner) *
Date: 2020-12-16 11:12
New changeset 1c653f17cb84d81df3a74ab0b42140d2bb68c5c4 by Victor Stinner in branch 'master': bpo-42613: Fix freeze.py config directory (GH-23792) https://github.com/python/cpython/commit/1c653f17cb84d81df3a74ab0b42140d2bb68c5c4msg383153 - (view) Author: STINNER Victor (vstinner) *
Date: 2020-12-16 11:16
I tested my fix with these commands:
---
./configure --with-platlibdir=lib64 --enable-shared --prefix /opt/py310 CFLAGS="-O0"
make
make install
# move outside CPython source tree
cd
mkdir hello
cd hello
echo 'print("hello")' > hello.py
cp -R ~/python/master/Tools/freeze/ .
LD_LIBRARY_PATH=/opt/py310/lib /opt/py310/bin/python3.10 freeze/freeze.py hello.py
---
Output:
---
$ LD_LIBRARY_PATH=/opt/py310/lib ./hello
hello
---
msg383235 - (view)
Author: miss-islington (miss-islington)
Date: 2020-12-17 11:40
New changeset 829272e67bbd4b2cc76c01cd20265eb114b392a2 by Miss Islington (bot) in branch '3.8': bpo-42613: Fix freeze.py config directory (GH-23792) https://github.com/python/cpython/commit/829272e67bbd4b2cc76c01cd20265eb114b392a2msg383248 - (view) Author: STINNER Victor (vstinner) *
Date: 2020-12-17 14:29
New changeset 79c535796da4a1377364910e309b97e53c3e51ef by Miss Islington (bot) in branch '3.9': bpo-42613: Fix freeze.py config directory (GH-23792) (GH-23817) https://github.com/python/cpython/commit/79c535796da4a1377364910e309b97e53c3e51ef