[PATCH GPGME] python: build: reinstate prepare target

Alon Bar-Lev alon.barlev at gmail.com
Tue Mar 28 20:55:59 CEST 2017


* lang/python/Makefile.am: fix prepare target
* lang/python/setup.py.in: abs_top_builddir handling

--

prepare will prepare target at PREPAREDIR
the automake will make use of prepare target
downstream may also make use of prepare target
outcome of splitting it is standard make error checking for each command

running setup.py in-tree requires abs_top_builddir environment to be set
to avoid guessing process.

Signed-off-by: Alon Bar-Lev <alon.barlev at gmail.com>
---
 lang/python/Makefile.am | 25 +++++++++++++++----------
 lang/python/setup.py.in |  9 +++++----
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am
index d91ead9..a18a014 100644
--- a/lang/python/Makefile.am
+++ b/lang/python/Makefile.am
@@ -44,17 +44,22 @@ COPY_FILES_GPG = \
 	$(srcdir)/gpg/results.py \
 	$(srcdir)/gpg/util.py
 
+.PHONY: prepare
+prepare:
+	test -n "$(PREPAREDIR)"
+	$(MKDIR_P)              "$(PREPAREDIR)/gpg"
+	cp -R $(COPY_FILES)     "$(PREPAREDIR)"
+	cp setup.py             "$(PREPAREDIR)"
+	cp gpg/version.py       "$(PREPAREDIR)/gpg"
+	ln -sf "$(abs_top_srcdir)/src/data.h" "$(PREPAREDIR)"
+	ln -sf "$(abs_top_builddir)/config.h" "$(PREPAREDIR)"
+	cp -R $(COPY_FILES_GPG) "$(PREPAREDIR)/gpg"
+
 # For VPATH builds we need to copy some files because Python's
 # distutils are not VPATH-aware.
 copystamp: $(COPY_FILES) $(COPY_FILES_GPG)
 	set -e ; for VERSION in $(PYTHON_VERSIONS); do \
-	  $(MKDIR_P)              python$${VERSION}-gpg/gpg ; \
-	  cp -R $(COPY_FILES)     python$${VERSION}-gpg ; \
-	  cp setup.py             python$${VERSION}-gpg ; \
-	  cp gpg/version.py       python$${VERSION}-gpg/gpg ; \
-	  ln -sf "$(abs_top_srcdir)/src/data.h" python$${VERSION}-gpg ; \
-	  ln -sf "$(abs_top_builddir)/config.h" python$${VERSION}-gpg ; \
-	  cp -R $(COPY_FILES_GPG) python$${VERSION}-gpg/gpg ; \
+	  $(MAKE) PREPAREDIR=python$${VERSION}-gpg prepare; \
 	done
 	touch $@
 
@@ -63,6 +68,7 @@ all-local: copystamp
 	  PYTHON="$$1" ; shift ; \
 	  cd python$${VERSION}-gpg && \
 	  CFLAGS="$(CFLAGS)" \
+	  abs_top_builddir="$(abs_top_builddir)" \
 	    $$PYTHON setup.py build --verbose ; \
 	  cd .. ; \
 	done
@@ -71,12 +77,10 @@ python$(PYTHON_VERSION)-gpg/dist/gpg-$(VERSION).tar.gz \
 python$(PYTHON_VERSION)-gpg/dist/gpg-$(VERSION).tar.gz.asc: copystamp
 	cd python$(PYTHON_VERSION)-gpg && \
 	CFLAGS="$(CFLAGS)" \
+	abs_top_builddir="$(abs_top_builddir)" \
 	  $(PYTHON) setup.py sdist --verbose
 	gpg2 --detach-sign --armor python$(PYTHON_VERSION)-gpg/dist/gpg-$(VERSION).tar.gz
 
-.PHONY: prepare
-prepare: copystamp
-
 .PHONY: sdist
 sdist: python$(PYTHON_VERSION)-gpg/dist/gpg-$(VERSION).tar.gz \
        python$(PYTHON_VERSION)-gpg/dist/gpg-$(VERSION).tar.gz.asc
@@ -104,6 +108,7 @@ install-exec-local:
 	set -e ; set $(PYTHONS); for VERSION in $(PYTHON_VERSIONS); do \
 	  PYTHON="$$1" ; shift ; \
 	  cd python$${VERSION}-gpg ; \
+	  abs_top_builddir="$(abs_top_builddir)" \
 	  $$PYTHON setup.py install \
 	  --prefix $(DESTDIR)$(prefix) \
 	  --record files.txt \
diff --git a/lang/python/setup.py.in b/lang/python/setup.py.in
index bf4efa3..8ddbf27 100755
--- a/lang/python/setup.py.in
+++ b/lang/python/setup.py.in
@@ -34,12 +34,13 @@ in_tree = False
 extra_swig_opts = []
 extra_macros = dict()
 
-if os.path.exists("../../../src/gpgme-config"):
+abs_top_builddir = os.environ.get("abs_top_builddir")
+if abs_top_builddir:
     # 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(abs_top_builddir, "src/gpgme-config")] + gpgme_config_flags
+    gpgme_h = os.path.join(abs_top_builddir, "src/gpgme.h")
+    library_dirs = [os.path.join(abs_top_builddir, "src/.libs")] # XXX uses libtool internals
     extra_macros.update(
         HAVE_CONFIG_H=1,
         HAVE_DATA_H=1,
-- 
2.10.2




More information about the Gnupg-devel mailing list