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, 郭涛 <[email protected]> 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 <[email protected]>:
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
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

#
# Copyright (C) 2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=python-iptables
PKG_VERSION:=0.3.0
PKG_RELEASE:=1
PKG_MAINTAINER:=Andrew McConachie <[email protected]>
PKG_LICENSE:=Apache-2.0

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/ldx/python-iptables.git
PKG_SOURCE_VERSION:=0250cebacfbca41b850a3728ec2c10ea21108434
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)

PKG_BUILD_DEPENDS:=python python-setuptools

include $(INCLUDE_DIR)/package.mk
$(call include_mk, python-package.mk)

define Package/python-iptables
        SECTION:=language-python
        CATEGORY:=Languages
        SUBMENU:=Python
        TITLE:=python-iptables
        URL:=https://pypi.python.org/pypi/python-iptables
        DEPENDS:=+python
endef

define Package/python-iptables/description
Python-iptables provides a pythonesque wrapper via python bindings to iptables 
under Linux. Interoperability with iptables is achieved via using the iptables 
C libraries (libiptc, libxtables, and the iptables extensions), not calling the 
iptables binary and parsing its output. It is meant primarily for dynamic 
and/or complex routers and firewalls, where rules are often updated or changed, 
or Python programs wish to interface with the Linux iptables framework.
endef

define Build/Compile
        $(call Build/Compile/PyMod,,\
                install --prefix=/usr --root="$(PKG_INSTALL_DIR)" \
        )
endef

$(eval $(call PyPackage,python-iptables))
$(eval $(call BuildPackage,python-iptables))
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to