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 in 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. 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.
>>
>> 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 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...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.
_______________________________________________
Mobile-sig mailing list
[email protected]
https://mail.python.org/mailman/listinfo/mobile-sig

Reply via email to