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='coreteam@xxxxxxxxxxxxx', + 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html