[Pkg-gnupg-commit] [gpgme] 61/132: python: Use one copy of the source tree per Python version.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed Apr 26 01:01:25 UTC 2017


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch experimental
in repository gpgme.

commit fe65a26ab584bd70fad45c7c4d44330e30a748a4
Author: Justus Winter <justus at g10code.com>
Date:   Mon Feb 13 16:44:53 2017 +0100

    python: Use one copy of the source tree per Python version.
    
    * lang/python/Makefile.am (copystamp): Create one copy per Python
    version.
    (all-local): Adapt.
    (clean-local): Likewise.
    (install-exec-local): Likewise.
    * lang/python/tests/run-tests.py: Likewise.
    --
    
    Currently, we use one copy of the Python module's source to build for
    all Python versions.  This is problematic, because SWIG writes a
    wrapper file into the source tree.  Currently, this file works with
    both Python 2 and 3, but this is purely by chance.
    
    Improve the situation by creating one copy per Python version so that
    SWIG can write version-specific code into each copy.
    
    Signed-off-by: Justus Winter <justus at g10code.com>
---
 lang/python/Makefile.am        | 37 +++++++++++++++++++++----------------
 lang/python/tests/run-tests.py |  4 +++-
 2 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am
index e32fd12..908f622 100644
--- a/lang/python/Makefile.am
+++ b/lang/python/Makefile.am
@@ -47,10 +47,12 @@ COPY_FILES_GPG = \
 # For VPATH builds we need to copy some files because Python's
 # distutils are not VPATH-aware.
 copystamp: $(COPY_FILES) $(COPY_FILES_GPG) data.h config.h
-	if test "$(srcdir)" != "$(builddir)" ; then \
-	  cp -R $(COPY_FILES) . ; \
-	  cp -R $(COPY_FILES_GPG) gpg ; \
-	fi
+	for VERSION in $(PYTHON_VERSIONS); do \
+	  $(MKDIR_P)              python$${VERSION}-gpg/gpg && \
+	  cp -R $(COPY_FILES)     python$${VERSION}-gpg && \
+	  cp gpg/version.py       python$${VERSION}-gpg/gpg && \
+	  cp -R $(COPY_FILES_GPG) python$${VERSION}-gpg/gpg ; \
+	done
 	touch $@
 
 data.h:
@@ -60,9 +62,12 @@ config.h:
 	ln -s "$(top_builddir)/config.h" .
 
 all-local: copystamp
-	for PYTHON in $(PYTHONS); do \
+	set $(PYTHONS); for VERSION in $(PYTHON_VERSIONS); do \
+	  PYTHON="$$1" ; shift ; \
+	  cd python$${VERSION}-gpg && \
 	  CFLAGS="$(CFLAGS)" \
-	    $$PYTHON setup.py build --verbose ; \
+	    $$PYTHON ../setup.py build --verbose ; \
+	  cd .. ; \
 	done
 
 dist/gpg-$(VERSION).tar.gz dist/gpg-$(VERSION).tar.gz.asc: copystamp
@@ -89,23 +94,23 @@ CLEANFILES = gpgme.h errors.i gpgme_wrap.c gpg/gpgme.py \
 # permissions.
 clean-local:
 	rm -rf -- build
-	if test "$(srcdir)" != "$(builddir)" ; then \
-	  find . -type d ! -perm -200 -exec chmod u+w {} ';' ; \
-	  for F in $(COPY_FILES); do rm -rf -- `basename $$F` ; done ; \
-	  for F in $(COPY_FILES_GPG); do \
-	      rm -rf -- gpg/`basename $$F` ; \
-	  done ; \
-	fi
+	for VERSION in $(PYTHON_VERSIONS); do \
+	  find python$${VERSION}-gpg -type d ! -perm -200 -exec chmod u+w {} ';' ; \
+	  rm -rf -- python$${VERSION}-gpg ; \
+	done
 
 install-exec-local:
 	rm -f install_files.txt
-	for PYTHON in $(PYTHONS); do \
-	  $$PYTHON setup.py install \
+	set $(PYTHONS); for VERSION in $(PYTHON_VERSIONS); do \
+	  PYTHON="$$1" ; shift ; \
+	  cd python$${VERSION}-gpg && \
+	  $$PYTHON ../setup.py install \
 	  --prefix $(DESTDIR)$(prefix) \
 	  --record files.txt \
 	  --verbose ; \
-	  cat files.txt >> install_files.txt ; \
+	  cat files.txt >> ../install_files.txt ; \
 	  rm files.txt ; \
+	  cd .. ; \
 	done
 	$(MKDIR_P) $(DESTDIR)$(pythondir)/gpg
 	mv install_files.txt $(DESTDIR)$(pythondir)/gpg
diff --git a/lang/python/tests/run-tests.py b/lang/python/tests/run-tests.py
index 46c6d8c..e76acb2 100644
--- a/lang/python/tests/run-tests.py
+++ b/lang/python/tests/run-tests.py
@@ -69,7 +69,9 @@ for interpreter in args.interpreters:
     version = subprocess.check_output(
         [interpreter, "-c", "import sys; print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))"]).strip().decode()
 
-    builddirs = glob.glob(os.path.join(args.builddir, "..", "build",
+    builddirs = glob.glob(os.path.join(args.builddir, "..",
+                                       "python{0}-gpg".format(version),
+                                       "build",
                                        "lib*"+version))
     assert len(builddirs) == 1, \
         "Expected one build directory, got {0}".format(builddirs)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gpgme.git



More information about the Pkg-gnupg-commit mailing list