diff mbox series

[nft,3/8] python: installation of binding via make install

Message ID 20180618115128.20920-4-eric@regit.org
State Changes Requested
Delegated to: Pablo Neira
Headers show
Series python install and build fixes | expand

Commit Message

Eric Leblond June 18, 2018, 11:51 a.m. UTC
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   |  6 ++++++
 py/Makefile.am | 31 +++++++++++++++++++++++++++++++
 py/__init__.py |  1 +
 py/nftables.py |  2 ++
 py/setup.py    | 23 +++++++++++++++++++++++
 6 files changed, 65 insertions(+), 1 deletion(-)
 create mode 100644 py/Makefile.am
 create mode 100644 py/__init__.py
 create mode 100755 py/setup.py

Comments

Eric Leblond June 19, 2018, 7:22 p.m. UTC | #1
Hi,

On Mon, 2018-06-18 at 13:51 +0200, Eric Leblond wrote:
> 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 ++-
...
> +          'Intended Audience :: Developers',
> +          'License :: OSI Approved :: GNU General Public License
> (GPL)',

As pointed out by Phil Sutter, there is a mistake here. I'm gonna
resubmit and address some points we did discuss during the workshop.

BR,
diff mbox series

Patch

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 4d21cb4..2a19733 100644
--- a/configure.ac
+++ b/configure.ac
@@ -128,6 +128,11 @@  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=yes])
+AC_PATH_PROGS(HAVE_PYTHON, python python2 python2.7, "no")
+AM_CONDITIONAL([HAVE_PYTHON], [test "x$enable_python" = "xyes"])
+
 AC_CONFIG_FILES([					\
 		Makefile				\
 		libnftables.pc				\
@@ -143,6 +148,7 @@  AC_CONFIG_FILES([					\
 		files/Makefile				\
 		files/nftables/Makefile			\
 		doc/Makefile				\
+		py/Makefile				    \
 		])
 AC_OUTPUT
 
diff --git a/py/Makefile.am b/py/Makefile.am
new file mode 100644
index 0000000..a34f9e8
--- /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) && \
+		$(HAVE_PYTHON) setup.py build --build-base $(abs_builddir)
+
+install-exec-local:
+	cd $(srcdir) && \
+		$(HAVE_PYTHON) 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) && \
+		$(HAVE_PYTHON) 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..663574a
--- /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='Phil Sutter',
+      author_email='phil@nwl.cc',
+      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 (GPL)',
+          'Operating System :: POSIX :: Linux',
+          'Programming Language :: Python',
+          'Topic :: System :: Networking :: Firewalls',
+          ],
+      )