diff options
| author | Justus Winter <[email protected]> | 2017-02-13 15:44:53 +0000 | 
|---|---|---|
| committer | Justus Winter <[email protected]> | 2017-02-13 15:44:53 +0000 | 
| commit | fe65a26ab584bd70fad45c7c4d44330e30a748a4 (patch) | |
| tree | 94d59632a7259748e3029e48197d1b5e1c93ddca /lang/python | |
| parent | build: Use macOS' compatibility macros to enable all features. (diff) | |
| download | gpgme-fe65a26ab584bd70fad45c7c4d44330e30a748a4.tar.gz gpgme-fe65a26ab584bd70fad45c7c4d44330e30a748a4.zip | |
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 <[email protected]>
Diffstat (limited to '')
| -rw-r--r-- | lang/python/Makefile.am | 37 | ||||
| -rw-r--r-- | 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 e32fd125..908f622d 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 46c6d8c8..e76acb2a 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) | 
