Mon, 16 Feb 2015 16:23:37 -0600 Cyd Haselton <[email protected]>:
More information:
After uncommenting the select module in Setup, running make clean &&
make && make install, then running python3, then help(), I get the
following:
bld/python/Python-3.4.2 $ python3
Python 3.4.2 (default, Feb 16 2015, 12:33:03)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/python/lib/python3.4/_sitebuiltins.py
<http://sitebuiltins.py>", line 102, in __call__
import pydoc
File "/usr/python/lib/python3.4/pydoc.py <http://pydoc.py>", line 62,
in <module>
import platform
File "/usr/python/lib/python3.4/platform.py <http://platform.py>",
line 115, in <module>
import sys, os, re, subprocess
File "/usr/python/lib/python3.4/subprocess.py <http://subprocess.py>",
line 352, in <module>
import time
ImportError: dlopen failed: cannot locate symbol
"PyUnicode_DecodeLocale" referenced by "time.cpython-34m.so
<http://time.cpython-34m.so>"...
The symbol is in libpython.3.4m.so <http://libpython.3.4m.so>.1...and
UND in time.cpython-34m.so <http://time.cpython-34m.so>. For some
reason time isn't finding the symbol in the shared library.
Android does not support versioning in SONAMES[0][1][2] - maybe that's
what is causing these issues ?
[0] https://code.google.com/p/android/issues/detail?id=55868
[1] https://groups.google.com/d/msg/android-ndk/_UhNpRJlA1k/hbryqzEgN94J
[3] https://github.com/MysticTreeGames/Boost-for-Android/issues/44
I've tried copying the library to the folder where the time module
resides, and to a few other locations, with the same results. Any
ideas on what I should do next?
Cyd
On February 15, 2015 5:28:45 PM CST, Cyd Haselton
<[email protected]> wrote:
After banging my head against libfakechroot for days I've finally
managed to fix it to work on Android.
Moving back to Python...I ran make clean && make && make install.
I run the installed python3 binary, run help() and get the
following error:
ype "help", "copyright", "credits" or "license" for more information.
>>> help()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/python/lib/python3.4/_sitebuiltins.py
<http://sitebuiltins.py>", line 102, in __call__
import pydoc
File "/usr/python/lib/python3.4/pydoc.py <http://pydoc.py>", line
62, in <module>
import platform
File "/usr/python/lib/python3.4/platform.py <http://platform.py>",
line 115, in <module>
import sys, os, re, subprocess
File "/usr/python/lib/python3.4/subprocess.py
<http://subprocess.py>", line 406, in <module>
import select
ImportError: No module named 'select'
I then attempt to import select, then ctypes, and get the
following errors:
>>> import select
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'select'
>>> import ctypes
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/python/lib/python3.4/ctypes/__init__.py", line 22, in
<module>
from struct import calcsize as _calcsize
File "/usr/python/lib/python3.4/struct.py <http://struct.py>",
line 13, in <module>
from _struct import *
ImportError: dlopen failed: cannot locate symbol "PyLong_AsSize_t"
referenced by "_struct.cpython-34m.so
<http://struct.cpython-34m.so>"...
>>> import _struct
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen failed: cannot locate symbol "PyLong_AsSize_t"
referenced by "_struct.cpython-34m.so
<http://struct.cpython-34m.so>"...
>>>
Googling the ImportError turns up six results...none of them
related to a missing PyLong_AsSize_t symbol.
Has anyone seen this error before?
Thanks in advance. Headed back to look at the _struct code.
Cyd
On February 8, 2015 6:46:02 PM CST, Cyd Haselton
<[email protected]> wrote:
Quick Update:
I've managed to re-compile a libfakechroot that (I believe) eliminates
the 'undefined reference to dlopen()' issues; problems importing
extensions during the build process now display meaningful errors
instead of crashing the entire thing.
Some imports failed because of missing symbols (i.e. _crypt, which
makes sense because I don't have -lcrypt on device) and some failed
because of linking issues (i.e _ctypes). The majority failed to
import due to an undeclared variable insetup.py
<http://setup.py>...which was quickly
fixed.
Once the most recent build attempt is done, I'll post relevant stack
traces and errors, if any.
Cyd
On Sat, Feb 7, 2015 at 5:36 AM, Cyd Haselton <[email protected]>
wrote:
Hello Russ, Thanks for the update. I'm building Python
3.4.2 from sources, (using a GCC that I originally ported,
then upgraded on device) on an Android device in an
environment that simulates a Linux filesystem using
fakechroot (Terminal Emulator and KBOX); Python is not
currently installed in this environment. I've built other
utilities in this environment successfully; the key is
making sure that anything that requires dlopen() is built
with shared libraries and is linked with -lc -ldl, as
Android's dlopen() is not in its libc but in -ldl. The
shared part is due to a limitation of the libfakechroot
that the KBOX environment uses; anything calling dlopen()
without the necessary links will cause fakechroot to
terminate the process and throw an undefined symbol error
For the Python build I've specified -lc -ldl in the
appropriate environmental variables, in Modules/Setup and
in setup.py <http://setup.py>. The initial python binary
is built, but it fails (with the undefined ref to
dlopen()) when importing the extension modules it has has
built. I have run nm on those modules and...even though
-lc -ldl is on the extension build command line...the
dlopen() symbol is not there. Sorry for the long
explanation. Let me know if there's info I've left out. On
February 6, 2015 8:10:16 PM CST, Russell Keith-Magee
<[email protected]> wrote:
Hi Cyd, This list is as good a place as any for what
you're describing. However, it's a little difficult to
provide advice without stack traces and details of how
you've built your Python build to start with. For
example, are you cross compiling? If so, the problem
you've described could be caused by referencing the
wrong Python instance when running setup.py
<http://setup.py>. Yours, Russ Magee %-) On Fri, Feb
6, 2015 at 3:46 AM, Cyd Haselton <[email protected]>
wrote:
Also, if I've got the wrong list, please let me
know. Links to the correct list/lists are
optional; I just want to know if this is the right
place to get help so that I can keep searching if
it isn't. On Thu, Feb 5, 2015 at 5:40 AM, Cyd
Haselton <[email protected]> wrote:
Since i'm working on an Android tablet, I am
forwarding the original message I sent to
python-dev instead of re-typing the entire
thing. To summarize: I'm building in a
fakechroot environment on Android that
supports dynamic calls to libc only. Something
in the importlib._bootstrap process is not
linking to...or has not been linked to...the
necessary libraries (I've checked the
module...it is being linked to -lc -ldl) but I
can't figure out what...as there's not a lot
in the python docs on it. I'm currently
reading through the importlib docs but any
help would be greatly appreciated.
------------------------------------------------------------------------
From: Eric Snow <[email protected]>
Sent: February 3, 2015 12:10:54 AM CST To: Cyd
Haselton <[email protected]> Cc: Python-Dev
<[email protected]> Subject: Re:
[Python-Dev] Import Fails in setup.py
<http://setup.py> On Android On Mon, Feb 2,
2015 at 12:36 PM, Cyd Haselton
<[email protected]> wrote:
After fixing a segfault issue (many thanks
Ryan) I'm back to the same issue I was
having with Python 2.7.8; the newly built
python throws an undefined reference to
dlopen when running setup.py
<http://setup.py>...specifically when
importing just-built extensions I've
managed to narrow the problem down to the
following line:
importlib._bootstrap._SpecMethods(spec).load()
That call is where modules are created (and
executed) via the loader designated for the
module by the import machinery. So a problem
here may simply reflect a problem with the
loader. Which module is being imported when
you run into trouble? Is it a C-extension
module? Also keep in mind that basically
everything in importlib._bootstrap is frozen
into your Python binary when you build Python
(or should be). So if you are seeing any
errors related to something missing or broken
in importlib._bootstrap, it could be related
to the build step where importlib gets frozen.
Either way, more info (e.g. a traceback) would
be great if you need more help. -eric -- Sent
from my Android device with K-9 Mail. Please
excuse my brevity.
------------------------------------------------------------------------
Mobile-sig mailing list [email protected]
https://mail.python.org/mailman/listinfo/mobile-sig
-- Sent from my Android device with K-9 Mail. Please
excuse my brevity.
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
Mobile-sig mailing list
[email protected]
https://mail.python.org/mailman/listinfo/mobile-sig
_______________________________________________
Mobile-sig mailing list
[email protected]
https://mail.python.org/mailman/listinfo/mobile-sig