[OpenWrt-Devel] python ctypes.util.find_library cannot find libc

Andrew McConachie andrew at depht.com
Wed Jan 18 09:38:45 EST 2017


Hi 郭涛 and Alexandru,

ldconfig depends on using eglibc to fulfill libc requirement.

Symbol: PACKAGE_ldconfig [=n]
Type  : tristate
Prompt: ldconfig............................... Shared library path 
configuration
Location:
(3) -> Utilities
Defined at tmp/.config-package.in:82365
Depends on: !USE_MUSL [=y]

If we make python depend on ldconfig, then are we saying python cannot 
be used with MUSL libc? I don't know what the default libc is for 
OpenWRT or whether one is considered experimental more than the other. 
But this is something to consider.

Thanks,
Andrew

On 1/18/17 03:32, 郭涛 wrote:
> Hi Andrew & Alexandru
>
> Forget the patch in prev mail, use attached patch instead.
>
> To use ctypes.util.find_library, you need one of gcc, ldconfig or
> objdump. I suggest you use ldconfig
>
> After install ldconfig,  run ldconfig first to update cache
> then run ldconfig -p to show all of your libraries
> in my case, it shows:
>
> 195 libs found in cache `/etc/ld.so.cache' (version 1.7.0)
>          uhttpd_tls.so (libc0) => /usr/lib/uhttpd_tls.so
>          rclibrary.so (libc0) => /usr/lib/rclibrary.so
>          libz.so.1 (libc0) => /usr/lib/libz.so.1
>          libz.so (libc0) => /usr/lib/libz.so
>          libyaml-0.so.2 (libc0) => /usr/lib/libyaml-0.so.2
>          ......
>
> All libraries are libc0, that's why ctypes.util.find_library does not
> work on my platform
>
> You need to run 'uname -m' to get your matchine name and run 'ldconfig
> -p' to get library type.
> Atter all, append  '$machine' : '$type'  to  mach_map list in
> ctypes/util.py and try find_library('pthread')
>
>
>>>> from ctypes.util import find_library
>>>>
>>>> find_library('pthread')
> 'libpthread.so.0'
>
>
>
>
>
>
> 2017-01-17 22:22 GMT+08:00 Alexandru Ardelean <ardeleanalex at gmail.com>:
>> Will give it a try.
>>
>> On Mon, Jan 16, 2017 at 9:41 PM, Andrew McConachie <andrew at depht.com> wrote:
>>> Hi Alexandru and 郭涛,
>>>
>>> Attached is the Makefile I made for python-iptables. I can work around this
>>> by hardwiring library locations in the source of python-iptables, but I'd
>>> rather do it the correct way. To reproduce this build an OpenWrt system with
>>> this Makefile and then just create a simple Python script with 'import
>>> iptc'.
>>>
>>> I am cloning OpenWrt from Github and running make menuconfig;make to build
>>> everything. My Github version is about 6 days old with the last commit at
>>> 5ba298c.
>>>
>>> I also found that /proc/sys/kernel/modprobe contains /sbin/modprobe, while
>>> the modprobe binary is at /usr/sbin/modprobe. According to the Debian man
>>> page on proc(5), /proc/sys/kernel/modprobe should point to the modprobe
>>> binary. Googling about seems also to suggest that this file should contain
>>> the location of the modprobe binary. So I would say this is also a bug.
>>>
>>> Thanks!
>>> --Andrew
>>>
>>>
>>> On 1/16/17 07:23, Alexandru Ardelean wrote:
>>>> Hey Andrew & 郭涛
>>>>
>>>> Sorry I did not answer sooner.
>>>>
>>>> @Andrew: do you have a Makefile for the python-iptables packages ?
>>>> I'd like to try to build it and see the issue. Or, are you just using
>>>> that .py file ?
>>>> Can you give a bit more input on which Python version you're using,
>>>> and which OpenWrt version?
>>>>
>>>> If the issue is still present in the current packages trunk, I'd like to
>>>> fix it.
>>>> And if  郭涛's fix works, we can apply it to trunk.
>>>>
>>>> Thanks
>>>> Alex
>>>>
>>>>
>>>> On Mon, Jan 16, 2017 at 6:23 AM, 郭涛 <guotao945 at gmail.com> wrote:
>>>>> I also meet this issue.
>>>>> I fixed it using below change
>>>>>
>>>>>
>>>>> https://github.com/gt945/Netgear-D7800-Openwrt-Packages/commit/fab71ca0ebf36d5f7b495b96f14d459e794b7224
>>>>>
>>>>>
>>>>> 2017-01-13 0:43 GMT+08:00 Andrew McConachie <andrew at depht.com>:
>>>>>> Hi OpenWRT Devs,
>>>>>>
>>>>>> I'm building an OpenWRT package for python-iptables for a project I'm
>>>>>> working on and getting this error message when attempting to use it.
>>>>>>
>>>>>>       import iptc
>>>>>>     File "/usr/lib/python2.7/site-packages/iptc/__init__.py", line 10, in
>>>>>> <module>
>>>>>>       from ip4tc import (is_table_available, Table, Chain, Rule, Match,
>>>>>> Target,
>>>>>>     File "/usr/lib/python2.7/site-packages/iptc/ip4tc.py", line 13, in
>>>>>> <module>
>>>>>>       from xtables import (XT_INV_PROTO, NFPROTO_IPV4, XTablesError,
>>>>>> xtables,
>>>>>>     File "/usr/lib/python2.7/site-packages/iptc/xtables.py", line 677, in
>>>>>> <module>
>>>>>>       _optind = ct.c_long.in_dll(_libc, "optind")
>>>>>> AttributeError: 'NoneType' object has no attribute '_handle'
>>>>>>
>>>>>> You can view xtables.py here if you're curious.
>>>>>> https://github.com/ldx/python-iptables/blob/master/iptc/xtables.py
>>>>>>
>>>>>> The problem is that my python-iptables package cannot find libc
>>>>>> functions
>>>>>> using ctypes.util.find_library(). I've tried building OpenWRT using both
>>>>>> musl and eglibc but neither work. I've also tried building OpenWRT with
>>>>>> objdump and ldconfig. When I include ldconfig via 'make menuconfig' it
>>>>>> doesn't actually populate my OpenWRT image with an ldconfig binary.
>>>>>> Maybe
>>>>>> this is the problem?
>>>>>>
>>>>>> This bug report looks similar to my problem, but it's about MIPS and
>>>>>> marked
>>>>>> as closed.
>>>>>> https://dev.openwrt.org/ticket/20123
>>>>>>
>>>>>> Any help or pointers would be much appreciated.
>>>>>>
>>>>>> Thanks,
>>>>>> Andrew
>>>>>> _______________________________________________
>>>>>> openwrt-devel mailing list
>>>>>> openwrt-devel at lists.openwrt.org
>>>>>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>>>>> _______________________________________________
>>>>> openwrt-devel mailing list
>>>>> openwrt-devel at lists.openwrt.org
>>>>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>>>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list