[gpgme][PATCH] build: lang: python: cleanups

Alon Bar-Lev alon.barlev at gmail.com
Sat Sep 24 01:28:38 CEST 2016


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 at 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




More information about the Gnupg-devel mailing list