setup.py is used to build and install the python binding. Call
to setup.py are done in Makefile to proceed to build and
installation.
---
 Makefile.am    |  3 ++-
 configure.ac   | 24 ++++++++++++++++++++++++
 py/.gitignore  |  4 ++++
 py/Makefile.am | 31 +++++++++++++++++++++++++++++++
 py/__init__.py |  1 +
 py/nftables.py |  2 ++
 py/setup.py    | 23 +++++++++++++++++++++++
 7 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 py/Makefile.am
 create mode 100644 py/__init__.py
 create mode 100755 py/setup.py

diff --git a/Makefile.am b/Makefile.am
index 09664c3..e567d32 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,7 +3,8 @@ ACLOCAL_AMFLAGS = -I m4
 SUBDIRS =      src     \
                include \
                files   \
-               doc
+               doc             \
+               py
 
 EXTRA_DIST =   tests   \
                files
diff --git a/configure.ac b/configure.ac
index 9f5d0f9..b1a790d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -125,6 +125,22 @@ AC_DEFINE([HAVE_LIBJANSSON], [1], [Define if you have 
libjansson])
 AC_SUBST(with_json)
 AM_CONDITIONAL([BUILD_JSON], [test "x$with_json" != xno])
 
+AC_ARG_ENABLE(python,
+       AS_HELP_STRING([--enable-python], [Enable 
python]),,[enable_python=check]
+       )
+
+AC_ARG_WITH([python_bin],
+            [AS_HELP_STRING([--with-python-bin], [Specify Python binary to 
use])],
+           [PYTHON_BIN="$withval"], [AC_PATH_PROGS(PYTHON_BIN, python python2 
python2.7)]
+          )
+
+AS_IF([test "x$PYTHON_BIN" == "x"], [
+       AS_IF([test "x$enable_python" == "xyes"], [AC_MSG_ERROR([Python asked 
but not found])])
+       AS_IF([test "x$enable_python" == "xcheck"], [AC_MSG_WARN([Python not 
found, continuing anyway])])
+       ])
+
+AM_CONDITIONAL([HAVE_PYTHON], [test "x$PYTHON_BIN" != "x"])
+
 AC_CONFIG_FILES([                                      \
                Makefile                                \
                libnftables.pc                          \
@@ -140,6 +156,7 @@ AC_CONFIG_FILES([                                   \
                files/Makefile                          \
                files/nftables/Makefile                 \
                doc/Makefile                            \
+               py/Makefile                             \
                ])
 AC_OUTPUT
 
@@ -152,3 +169,10 @@ nft configuration:
   enable pdf documentation:    ${enable_pdf_doc}
   libxtables support:          ${with_libxtables}
   json output support:          ${with_json}"
+
+AS_IF([test "x$PYTHON_BIN" != "x"], [
+       echo "  enable Python:          yes (with $PYTHON_BIN)"
+       ], [
+       echo "  enable Python:          no"
+       ]
+       )
diff --git a/py/.gitignore b/py/.gitignore
index 0d20b64..09c1e62 100644
--- a/py/.gitignore
+++ b/py/.gitignore
@@ -1 +1,5 @@
 *.pyc
+build/
+dist/
+lib.*/
+nftables.egg-info/
diff --git a/py/Makefile.am b/py/Makefile.am
new file mode 100644
index 0000000..0963535
--- /dev/null
+++ b/py/Makefile.am
@@ -0,0 +1,31 @@
+EXTRA_DIST = setup.py __init__.py nftables.py
+
+if HAVE_PYTHON
+
+all-local:
+       cd $(srcdir) && \
+               $(PYTHON_BIN) setup.py build --build-base $(abs_builddir)
+
+install-exec-local:
+       cd $(srcdir) && \
+               $(PYTHON_BIN) setup.py build --build-base $(abs_builddir) \
+               install --prefix $(DESTDIR)$(prefix)
+
+uninstall-local:
+       rm -rf $(DESTDIR)$(prefix)/lib*/python*/site-packages/nftables
+       rm -rf $(DESTDIR)$(prefix)/lib*/python*/dist-packages/nftables
+       rm -rf 
$(DESTDIR)$(prefix)/lib*/python*/site-packages/nftables-[0-9]*.egg-info
+       rm -rf 
$(DESTDIR)$(prefix)/lib*/python*/dist-packages/nftables-[0-9]*.egg-info
+       rm -rf 
$(DESTDIR)$(prefix)/lib*/python*/site-packages/nftables-[0-9]*.egg
+       rm -rf 
$(DESTDIR)$(prefix)/lib*/python*/dist-packages/nftables-[0-9]*.egg
+
+clean-local:
+       cd $(srcdir) && \
+               $(PYTHON_BIN) setup.py clean \
+               --build-base $(abs_builddir)
+       rm -rf scripts-* lib* build dist bdist.* nftables.egg-info
+       find . -name \*.pyc -print0 | xargs -0 rm -f
+
+distclean-local:
+       rm -f version
+endif
diff --git a/py/__init__.py b/py/__init__.py
new file mode 100644
index 0000000..7567f09
--- /dev/null
+++ b/py/__init__.py
@@ -0,0 +1 @@
+from .nftables import *
diff --git a/py/nftables.py b/py/nftables.py
index e6e66fb..d613505 100644
--- a/py/nftables.py
+++ b/py/nftables.py
@@ -2,6 +2,8 @@ import json
 from ctypes import *
 import sys
 
+NFTABLES_VERSION = "0.1"
+
 class Nftables:
     """A class representing libnftables interface"""
 
diff --git a/py/setup.py b/py/setup.py
new file mode 100755
index 0000000..ef143c4
--- /dev/null
+++ b/py/setup.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+from distutils.core import setup
+from nftables import NFTABLES_VERSION
+
+setup(name='nftables',
+      version=NFTABLES_VERSION,
+      description='Libnftables binding',
+      author='Netfilter project',
+      author_email='coret...@netfilter.org',
+      url='https://netfilter.org/projects/nftables/index.html',
+      packages=['nftables'],
+      provides=['nftables'],
+      package_dir={'nftables':'.'},
+      classifiers=[
+          'Development Status :: 4 - Beta',
+          'Environment :: Console',
+          'Intended Audience :: Developers',
+          'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',
+          'Operating System :: POSIX :: Linux',
+          'Programming Language :: Python',
+          'Topic :: System :: Networking :: Firewalls',
+          ],
+      )
-- 
2.18.0.rc2

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to