New submission from Serhiy Storchaka <storchaka+cpyt...@gmail.com>:
The code of _syscmd_file() in the platform module does not match the docstring. The "-b" option was removed in 685fffa (issue16112), and this leads to inclusion the executable path in the file command output. If the executable path contains some key strings like "32-bit" or "PE", platform.architecture() can return an incorrect result. I think that the "-b" option should be restored. $ python3 -c 'import platform; print(platform.architecture("/usr/bin/python3.6"))' ('64bit', 'ELF') $ cp /usr/bin/python3.6 /tmp/32-bitPE $ python3 -c 'import platform; print(platform.architecture("/tmp/32-bitPE"))' ('32bit', 'ELF') Other problem is that the code tests if the string "executable" is contained in the file command output. But it is not always contained for executables on Linux. $ file python python: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d3cfa06c2bdcbf7b6af9e4e6be5061cb8398c086, with debug_info, not stripped $ file /usr/bin/python2.7 /usr/bin/python2.7: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=fd3904306c73383fb371287416257b82d6a3363b, stripped $ file /usr/bin/python3.6 /usr/bin/python3.6: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=9dae0eec9b3f9cb82612d20dc0c3088feab9e356, stripped ---------- components: Library (Lib) messages: 330686 nosy: lemburg, serhiy.storchaka, vstinner priority: normal severity: normal status: open title: Problems with handling the file command output in platform.architecture() type: behavior versions: Python 3.6, Python 3.7, Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35348> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com