I am attempting to compile Keryx (keryxproject.org) into a single-file
Linux binary. I am using Python 2.5 on Ubuntu Karmic. Here are the
steps I take:
"""
mac9416@mac9416-laptop:~/trunk$ python2.5 Makespec.py --onefile --upx
/home/mac9416/unstable/keryx.py
wrote /home/mac9416/trunk/keryx/keryx.spec
now run Build.py to build the executable
mac9416@mac9416-laptop:~/trunk$ python2.5 Build.py keryx/keryx.spec
checking Analysis
building Analysis because outAnalysis0.toc non existent
running Analysis outAnalysis0.toc
Analyzing: support/_mountzlib.py
Analyzing: support/useUnicode.py
Analyzing: /home/mac9416/unstable/keryx.py
Warnings written to keryx/warnkeryx.txt
checking PYZ
rebuilding outPYZ1.toc because outPYZ1.pyz is missing
building PYZ outPYZ1.toc
checking PKG
rebuilding outPKG3.toc because outPKG3.pkg is missing
building PKG outPKG3.pkg
checking EXE
rebuilding outEXE2.toc because keryx missing
building EXE from outEXE2.toc
Appending archive to EXE keryx/dist/keryx
mac9416@mac9416-laptop:~/trunk$
"""
warnkeryx.txt is attached.
The binary runs flawlessly on every Karmic machine I have tested on
and fails on every Jaunty machine with the following errors:
"""
mac9416@mac9416-desktop:/media/XXX/keryx$ ./keryx
Traceback (most recent call last):
File "<string>", line 110, in <module>
File "/home/mac9416/trunk/iu.py", line 439, in importHook
File "/home/mac9416/trunk/iu.py", line 524, in doimport
File "/home/mac9416/unstable/lib/wxkeryx/__init__.py", line 19, in <module>
File "/home/mac9416/trunk/iu.py", line 439, in importHook
File "/home/mac9416/trunk/iu.py", line 524, in doimport
File "keryx/build/pyi.linux2/keryx/outPYZ1.pyz/wx", line 45, in <module>
File "/home/mac9416/trunk/iu.py", line 439, in importHook
File "/home/mac9416/trunk/iu.py", line 524, in doimport
File "keryx/build/pyi.linux2/keryx/outPYZ1.pyz/wx._core", line 4, in <module>
File "/home/mac9416/trunk/iu.py", line 439, in importHook
File "/home/mac9416/trunk/iu.py", line 498, in doimport
File "/home/mac9416/trunk/iu.py", line 300, in getmod
File "/home/mac9416/trunk/archive.py", line 468, in getmod
File "/home/mac9416/trunk/iu.py", line 109, in getmod
ImportError: /tmp/_MEImVoGGp/libglib-2.0.so.0: symbol __abort_msg,
version GLIBC_PRIVATE not defined in file libc.so.6 with link time
reference
"""
Thank you for any help.
-mac
See the last item of the FAQ:
http://www.pyinstaller.org/wiki/FAQ
You must compile the bootloader on the older distribution (i.e.: against
the oldest glibc you need to support). I eventually would like to ship a
LSB binary bootloader (using an "old enough" version of LSB) which should
get rid of all these problems altogether for most people, but I'm not there
yet. Patches are always welcome of course :)
--
Giovanni Bajo
Develer S.r.l.
http://www.develer.com
Alright, you're going to have to talk noob to me. This is what the FAQ says:
"...compile the bootloader on the oldest system you have around, so
that it gets linked with the oldest version of GLIBC. Then, ... copy
the bootloader binaries (support/loader/*) into your development
system and run Build.py there."
If I understand correctly, I need to Make.py, make, and Configure.py
pyinstaller on an "old enough" version of glibc (for me, probably
whatever comes with Ubuntu 6.06) and copy the files from that
support/loader/ to the support/loader directory in my more modern
Ubuntu installation?
Thanks again,
-mac
> --
>
> You received this message because you are subscribed to the Google Groups "PyInstaller" group.
> To post to this group, send email to pyins...@googlegroups.com.
> To unsubscribe from this group, send email to pyinstaller...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/pyinstaller?hl=en.
>
>
>
Yes. This annoyance will be fixed in a future because I intented to ship
a binary version of the bootloader which follows the LSB standard and
thus should work on most Linux distributions.
I have tried your suggestion as I understood it, but I'm still getting
errors on older Ubuntu installations. So I can only assume I am
following the instructions wrong.
I had a friend configure the latest Pyinstaller build on Ubuntu 6.06.
He then sent me a tar.bz2 of the support/loader directory. On my 9.10
machine I configured Pyinstaller and replaced the support/loader
directory with the one he sent me. After compiling, I get the same
error as above when running on a 9.04 machine.
The binary not only fails on 9.04, but I also get this error on the
9.10 machine I compiled on:
"""
mac9416@mac9416-laptop:/media/XXX/official-unstable$ ./keryx
./keryx: error while loading shared libraries:
/tmp/_MEIO0uvnU/libz.so.1: file too short
"""
What am I doing wrong? Should I have my friend compile the software on
his 6.06 machine instead of just sending me the support/loader
directory?
Thanks again,
-mac