diff --git a/pythonforandroid/recipes/ifaddr/__init__.py b/pythonforandroid/recipes/ifaddr/__init__.py new file mode 100644 index 0000000000..9409e76d17 --- /dev/null +++ b/pythonforandroid/recipes/ifaddr/__init__.py @@ -0,0 +1,13 @@ +from pythonforandroid.recipe import PythonRecipe + + +class IfaddrRecipe(PythonRecipe): + name = 'ifaddr' + version = '0.1.7' + url = 'https://pypi.python.org/packages/source/i/ifaddr/ifaddr-{version}.tar.gz' + depends = ['setuptools', 'ifaddrs', 'ipaddress;python_version<"3.3"'] + call_hostpython_via_targetpython = False + patches = ["getifaddrs.patch"] + + +recipe = IfaddrRecipe() diff --git a/pythonforandroid/recipes/ifaddr/getifaddrs.patch b/pythonforandroid/recipes/ifaddr/getifaddrs.patch new file mode 100644 index 0000000000..8b0be9d857 --- /dev/null +++ b/pythonforandroid/recipes/ifaddr/getifaddrs.patch @@ -0,0 +1,15 @@ +diff --git a/ifaddr/_posix.py b/ifaddr/_posix.py +index 2903ee7..546e3ce 100644 +--- a/ifaddr/_posix.py ++++ b/ifaddr/_posix.py +@@ -39,6 +39,10 @@ ifaddrs._fields_ = [('ifa_next', ctypes.POINTER(ifaddrs)), + + libc = ctypes.CDLL(ctypes.util.find_library("socket" if os.uname()[0] == "SunOS" else "c"), use_errno=True) + ++# On old Androids getifaddrs is not available in libc => use libifaddrs instead ++if not hasattr(libc, 'getifaddrs'): ++ libc = ctypes.CDLL(ctypes.util.find_library('ifaddrs'), use_errno=True) ++ + def get_adapters(): + + addr0 = addr = ctypes.POINTER(ifaddrs)()