| From a46cd3926d629da23b365b70b7bf24201c25d430 Mon Sep 17 00:00:00 2001 |
| From: Alon Bar-Lev <alon.barlev@gmail.com> |
| Date: Sat, 24 Sep 2016 01:26:19 +0300 |
| Subject: [PATCH] build: lang: python: cleanups |
| |
| 1. Make setup.py executable when generated. |
| |
| 2. Add prepare target to enable prepare the source tree without building |
| anything. This is handy to enable standard distutils build outside of |
| gpgme build system. |
| |
| 3. Treat data.h in similar manner as other VPATH issues, just copy it to |
| the srcdir to simplify build, remove the CFLAGS requirement of |
| distutils. |
| |
| 4. Add environment variable (binary_builddir) for setup to use alternate |
| build directory so that for multiple targets same binaries may be |
| used without rebuilding the C part. |
| |
| The above does not alter the behavior of current build but supports the |
| following sequence: |
| |
| $ mkdir common |
| $ cd common |
| $ ../configure --enable-languages= |
| $ make |
| $ cd .. |
| $ mkdir python |
| $ cd python |
| $ ../configure --enable-languages= |
| $ cd lang/python |
| $ make prepare |
| $ binary_builddir="../../../common" ./setup.py build |
| $ binary_builddir="../../../common" ./setup.py install |
| |
| Notice the standard use of distutils which is required for package |
| manager to control the python selection and build process. |
| |
| Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com> |
| --- |
| configure.ac | 2 +- |
| lang/python/Makefile.am | 11 ++++++----- |
| lang/python/gpgme.i | 2 +- |
| lang/python/setup.py.in | 9 +++++---- |
| 4 files changed, 13 insertions(+), 11 deletions(-) |
| |
| diff --git a/configure.ac b/configure.ac |
| index 4a29f2f..efa1f19 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -886,9 +886,9 @@ AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd]) |
| AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])]) |
| AC_CONFIG_FILES(lang/qt/doc/Makefile) |
| AC_CONFIG_FILES([lang/python/Makefile |
| - lang/python/setup.py |
| lang/python/pyme/version.py |
| lang/python/tests/Makefile]) |
| +AC_CONFIG_FILES([lang/python/setup.py], [chmod a+x lang/python/setup.py]) |
| AC_OUTPUT |
| |
| echo " |
| diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am |
| index 2271ce0..fb1eebf 100644 |
| --- a/lang/python/Makefile.am |
| +++ b/lang/python/Makefile.am |
| @@ -51,17 +51,18 @@ copystamp: $(COPY_FILES) $(COPY_FILES_PYME) |
| cp -R $(COPY_FILES) . ; \ |
| cp -R $(COPY_FILES_PYME) pyme ; \ |
| fi |
| + cp "$(top_srcdir)/src/data.h" . |
| touch $@ |
| |
| +prepare: copystamp |
| + |
| all-local: copystamp |
| for PYTHON in $(PYTHONS); do \ |
| - CFLAGS="$(CFLAGS) -I$(top_srcdir)" \ |
| - $$PYTHON setup.py build --verbose ; \ |
| + $$PYTHON setup.py build --verbose ; \ |
| done |
| |
| dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc: copystamp |
| - CFLAGS="$(CFLAGS) -I$(top_srcdir)" \ |
| - $(PYTHON) setup.py sdist --verbose |
| + $(PYTHON) setup.py sdist --verbose |
| gpg2 --detach-sign --armor dist/pyme3-$(VERSION).tar.gz |
| |
| .PHONY: sdist |
| @@ -72,7 +73,7 @@ upload: dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc |
| twine upload $^ |
| |
| CLEANFILES = gpgme.h errors.i gpgme_wrap.c pyme/gpgme.py \ |
| - copystamp |
| + data.h copystamp |
| |
| # Remove the rest. |
| # |
| diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i |
| index 84addae..ac666f4 100644 |
| --- a/lang/python/gpgme.i |
| +++ b/lang/python/gpgme.i |
| @@ -183,7 +183,7 @@ |
| representation of struct gpgme_data for an very efficient check if |
| the buffer has been modified. */ |
| %{ |
| -#include "src/data.h" /* For struct gpgme_data. */ |
| +#include "data.h" /* For struct gpgme_data. */ |
| %} |
| #endif |
| |
| diff --git a/lang/python/setup.py.in b/lang/python/setup.py.in |
| index 31892c1..ce06758 100755 |
| --- a/lang/python/setup.py.in |
| +++ b/lang/python/setup.py.in |
| @@ -32,13 +32,14 @@ library_dirs = [] |
| in_tree = False |
| extra_swig_opts = [] |
| extra_macros = dict() |
| +binary_builddir=os.environ.get('binary_builddir', '../..') |
| |
| -if os.path.exists("../../src/gpgme-config"): |
| +if os.path.exists(os.path.join(binary_builddir, "src/gpgme-config")): |
| # In-tree build. |
| in_tree = True |
| - gpgme_config = ["../../src/gpgme-config"] + gpgme_config_flags |
| - gpgme_h = "../../src/gpgme.h" |
| - library_dirs = ["../../src/.libs"] # XXX uses libtool internals |
| + gpgme_config = [os.path.join(binary_builddir, "src/gpgme-config")] + gpgme_config_flags |
| + gpgme_h = os.path.join(binary_builddir, "src/gpgme.h") |
| + library_dirs = [os.path.join(binary_builddir, "src/.libs")] # XXX uses libtool internals |
| extra_macros.update( |
| HAVE_DATA_H=1, |
| IN_TREE_BUILD=1, |
| -- |
| 2.7.3 |
| |