Explorar el Código

package/python-iptables: use installed iptables by default

python-iptables depends on ctypes.util.find_library() which does not
work due to the absence of gcc and friends on target. The location of
the xtables library and the iptables modules can be configured through
environment variables. Within the scope of buildroot we can determine
what these should be at build time and replace the calls to os.getenv()
with the correct value.

Fixes: https://bugs.busybox.net/show_bug.cgi?id=12271

Signed-off-by: Frank Vanbever <frank.vanbever@essensium.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Frank Vanbever hace 5 años
padre
commit
d341ec0350

+ 1 - 1
package/python-iptables/Config.in

@@ -1,7 +1,7 @@
 config BR2_PACKAGE_PYTHON_IPTABLES
 config BR2_PACKAGE_PYTHON_IPTABLES
 	bool "python-iptables"
 	bool "python-iptables"
 	depends on !BR2_STATIC_LIBS
 	depends on !BR2_STATIC_LIBS
-	select BR2_PACKAGE_IPTABLES # runtime dependency
+	select BR2_PACKAGE_IPTABLES
 	help
 	help
 	  Python bindings for iptables.
 	  Python bindings for iptables.
 
 

+ 9 - 0
package/python-iptables/python-iptables.mk

@@ -9,5 +9,14 @@ PYTHON_IPTABLES_SITE = https://files.pythonhosted.org/packages/ca/6e/cba9c6f4b5a
 PYTHON_IPTABLES_SETUP_TYPE = setuptools
 PYTHON_IPTABLES_SETUP_TYPE = setuptools
 PYTHON_IPTABLES_LICENSE = Apache-2.0
 PYTHON_IPTABLES_LICENSE = Apache-2.0
 PYTHON_IPTABLES_LICENSE_FILES = NOTICE
 PYTHON_IPTABLES_LICENSE_FILES = NOTICE
+PYTHON_IPTABLES_DEPENDENCIES = iptables
+
+define PYTHON_IPTABLES_SET_XTABLES_ENV_VARS
+	XTABLES_VERSION=`awk '/XTABLES_VERSION_CODE/ {print $$NF}' $(STAGING_DIR)/usr/include/xtables-version.h`; \
+	sed -i "s%os.getenv(\"PYTHON_IPTABLES_XTABLES_VERSION\")%$$XTABLES_VERSION%" $(@D)/iptc/xtables.py
+	sed -i "s%os.getenv(\"XTABLES_LIBDIR\")%\"/usr/lib/xtables\"%" $(@D)/iptc/xtables.py
+endef
+
+PYTHON_IPTABLES_PRE_BUILD_HOOKS += PYTHON_IPTABLES_SET_XTABLES_ENV_VARS
 
 
 $(eval $(python-package))
 $(eval $(python-package))