[lttng-dev] [PATCH lttng-ust] Build: python agent: use setup.py over autoconf
Jonathan Rajotte
jonathan.rajotte-julien at efficios.com
Mon Aug 10 14:45:34 EDT 2015
This change provide a valid way of installing the agent. The autoconf
python macro provide the wrong installation path for
python 3 under Debian and Ubuntu due to distro-specific packaging for
python 2.7 and 3.
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
.gitignore | 5 ++-
configure.ac | 10 +++++
liblttng-ust-python-agent/Makefile.am | 47 ++++++++++++-----------
liblttng-ust-python-agent/__init__.py.in | 24 ------------
liblttng-ust-python-agent/lttngust/__init__.py.in | 24 ++++++++++++
liblttng-ust-python-agent/setup.py.in | 25 ++++++++++++
6 files changed, 88 insertions(+), 47 deletions(-)
delete mode 100644 liblttng-ust-python-agent/__init__.py.in
create mode 100644 liblttng-ust-python-agent/lttngust/__init__.py.in
create mode 100644 liblttng-ust-python-agent/setup.py.in
diff --git a/.gitignore b/.gitignore
index 4454fa3..1039b1a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,5 +63,8 @@ org_lttng_ust_agent_jul_LttngLogHandler.h
org_lttng_ust_agent_log4j_LttngLogAppender.h
# Python agent
-liblttng-ust-python-agent/__init__.py
+liblttng-ust-python-agent/lttngust/__init__.py
liblttng-ust-python-agent/**/*.pyc
+liblttng-ust-python-agent/build
+liblttng-ust-python-agent/install_files.txt
+liblttng-ust-python-agent/setup.py
diff --git a/configure.ac b/configure.ac
index d2f7650..2f5498a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -394,6 +394,8 @@ AC_CONFIG_FILES([
liblttng-ust-libc-wrapper/Makefile
liblttng-ust-cyg-profile/Makefile
liblttng-ust-python-agent/Makefile
+ liblttng-ust-python-agent/setup.py
+ liblttng-ust-python-agent/lttngust/__init__.py
tools/Makefile
tests/Makefile
tests/hello/Makefile
@@ -405,6 +407,14 @@ AC_CONFIG_FILES([
lttng-ust.pc
])
+# Create link for python agent for the VPATH guru.
+AC_CONFIG_LINKS([
+ liblttng-ust-python-agent/lttngust/agent.py:liblttng-ust-python-agent/lttngust/agent.py
+ liblttng-ust-python-agent/lttngust/cmd.py:liblttng-ust-python-agent/lttngust/cmd.py
+ liblttng-ust-python-agent/lttngust/debug.py:liblttng-ust-python-agent/lttngust/debug.py
+ liblttng-ust-python-agent/lttngust/loghandler.py:liblttng-ust-python-agent/lttngust/loghandler.py
+])
+
AC_OUTPUT
AS_ECHO()
diff --git a/liblttng-ust-python-agent/Makefile.am b/liblttng-ust-python-agent/Makefile.am
index 869add4..f80b8a3 100644
--- a/liblttng-ust-python-agent/Makefile.am
+++ b/liblttng-ust-python-agent/Makefile.am
@@ -1,24 +1,3 @@
-# inputs/outputs
-LTTNGUST_PY_PACKAGE_DIR = $(srcdir)/lttngust
-LTTNGUST_PY_PACKAGE_FILES = agent.py cmd.py debug.py loghandler.py
-LTTNGUST_PY_PACKAGE_SRC = \
- $(addprefix $(LTTNGUST_PY_PACKAGE_DIR)/,$(LTTNGUST_PY_PACKAGE_FILES))
-INIT_PY_IN = $(srcdir)/__init__.py.in
-INIT_PY = __init__.py
-
-# dist files
-EXTRA_DIST = $(INIT_PY_IN) $(LTTNGUST_PY_PACKAGE_SRC)
-
-# __init__.py with proper version string
-all-local: $(INIT_PY)
-
-$(INIT_PY): $(INIT_PY_IN)
- $(SED) "s/@LTTNG_UST_VERSION@/$(PACKAGE_VERSION)/g" < $< > $@
-
-# Python package
-nodist_lttngust_PYTHON = $(LTTNGUST_PY_PACKAGE_SRC) $(INIT_PY)
-lttngustdir = $(pythondir)/lttngust
-
# tracepoint provider
AM_CPPFLAGS = $(PYTHON_INCLUDE) -I$(top_srcdir)/include/ \
-I$(top_builddir)/include/
@@ -28,4 +7,28 @@ liblttng_ust_python_agent_la_SOURCES = lttng_ust_python.c lttng_ust_python.h
liblttng_ust_python_agent_la_LIBADD = -lc -llttng-ust \
-L$(top_builddir)/liblttng-ust/.libs
-CLEANFILES = $(INIT_PY)
+# Use setup.py for the installation instead of Autoconf.
+# This ease the installation process and assure a *pythonic*
+# installation.
+agent_path=lttngust
+all-local:
+ $(PYTHON) setup.py build --verbose
+
+install-exec-local:
+ if [ "$(DESTDIR)" = "" ]; then \
+ $(PYTHON) setup.py install --prefix=$(prefix) --record install_files.txt --verbose --no-compile $(DISTSETUPOPTS); \
+ else \
+ $(PYTHON) setup.py install --root=$(DESTDIR) --verbose install_files.txt --prefix=$(prefix) --no-compile $(DISTSETUPOPTS); \
+ fi
+clean-local:
+ rm -rf build
+
+uninstall-local:
+ cat install_files.txt | xargs rm -rf
+ rm -rf $(DESTDIR)$(pkgpythondir)
+
+EXTRA_DIST=$(agent_path)
+
+# Remove automake generated file before dist
+dist-hook:
+ rm -rf $(distdir)/$(agent_path)/__init__.py
diff --git a/liblttng-ust-python-agent/__init__.py.in b/liblttng-ust-python-agent/__init__.py.in
deleted file mode 100644
index 0b83d10..0000000
--- a/liblttng-ust-python-agent/__init__.py.in
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2015 - Philippe Proulx <pproulx at efficios.com>
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-from __future__ import unicode_literals
-
-# this creates the daemon threads and registers the application
-import lttngust.agent
-
-
-__version__ = '@LTTNG_UST_VERSION@'
diff --git a/liblttng-ust-python-agent/lttngust/__init__.py.in b/liblttng-ust-python-agent/lttngust/__init__.py.in
new file mode 100644
index 0000000..b70c2e8
--- /dev/null
+++ b/liblttng-ust-python-agent/lttngust/__init__.py.in
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2015 - Philippe Proulx <pproulx at efficios.com>
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+from __future__ import unicode_literals
+
+# this creates the daemon threads and registers the application
+import lttngust.agent
+
+
+__version__ = '@PACKAGE_VERSION@'
diff --git a/liblttng-ust-python-agent/setup.py.in b/liblttng-ust-python-agent/setup.py.in
new file mode 100644
index 0000000..7f21c5c
--- /dev/null
+++ b/liblttng-ust-python-agent/setup.py.in
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2015 - Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+from distutils.core import setup, Extension
+
+setup(name='lttngust',
+ version='@PACKAGE_VERSION@',
+ description='Lttng ust agent',
+ packages=['lttngust'],
+ package_dir={'lttngust': 'lttngust'},
+ options={'build': {'build_base': 'build'}})
--
2.1.4
More information about the lttng-dev
mailing list