From 7eef399d89d4c3877cb795ed5ba45ecb241e67be Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Thu, 9 Jun 2016 12:38:50 +0200 Subject: [PATCH] python: Get version information from the build system. * configure.ac: Generate 'setup.py' and 'version.py'. * lang/python/Makefile.am: Use generated setup script. * lang/python/pyme/version.py: Turn it into a template, and get version information from the build system. Also drop some variables. * lang/python/setup.py: Likewise. This way we can avoid importing the version module, which is frowned upon and actually caused a problem. Signed-off-by: Justus Winter --- configure.ac | 5 ++- lang/python/Makefile.am | 5 ++- lang/python/pyme/version.py | 42 ------------------ lang/python/pyme/version.py.in | 62 +++++++++++++++++++++++++++ lang/python/{setup.py => setup.py.in} | 21 +++------ 5 files changed, 76 insertions(+), 59 deletions(-) delete mode 100644 lang/python/pyme/version.py create mode 100644 lang/python/pyme/version.py.in rename lang/python/{setup.py => setup.py.in} (87%) diff --git a/configure.ac b/configure.ac index b84b04bc..42695403 100644 --- a/configure.ac +++ b/configure.ac @@ -775,7 +775,10 @@ AC_CONFIG_FILES(lang/qt/tests/Makefile) 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/tests/Makefile]) +AC_CONFIG_FILES([lang/python/Makefile + lang/python/setup.py + lang/python/pyme/version.py + lang/python/tests/Makefile]) AC_OUTPUT echo " diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am index 46f45d00..2c84f2b5 100644 --- a/lang/python/Makefile.am +++ b/lang/python/Makefile.am @@ -40,7 +40,8 @@ gpgme_wrap.c pyme/pygpgme.py: gpgme.i errors.i gpgme.h copystamp $< all-local: gpgme_wrap.c pyme/pygpgme.py copystamp - CFLAGS="$(CFLAGS)" $(PYTHON) $(srcdir)/setup.py build --verbose + CFLAGS="$(CFLAGS)" \ + $(PYTHON) setup.py build --verbose clean-local: rm -rf -- build gpgme.h errors.i gpgme_wrap.c pyme/pygpgme.py \ @@ -50,7 +51,7 @@ clean-local: fi install-exec-local: - $(PYTHON) $(srcdir)/setup.py install \ + $(PYTHON) setup.py install \ --prefix $(DESTDIR)$(prefix) \ --record $(DESTDIR)$(pythondir)/pyme/install_files.txt \ --verbose diff --git a/lang/python/pyme/version.py b/lang/python/pyme/version.py deleted file mode 100644 index b60f50cc..00000000 --- a/lang/python/pyme/version.py +++ /dev/null @@ -1,42 +0,0 @@ - -productname = 'pyme' -versionstr = "0.9.1" -revno = int('$Rev: 281 $'[6:-2]) -revstr = "Rev %d" % revno -datestr = '$Date$' - -versionlist = versionstr.split(".") -major = versionlist[0] -minor = versionlist[1] -patch = versionlist[2] -copyright = "Copyright (C) 2015 Ben McGinnes, 2014-2015 Martin Albrecht, 2004-2008 Igor Belyi, 2002 John Goerzen" -author = "Ben McGinnes" -author_email = "ben@adversary.org" -description = "Python 3 support for GPGME GnuPG cryptography library" -bigcopyright = """%(productname)s %(versionstr)s (%(revstr)s) -%(copyright)s <%(author_email)s>""" % locals() - -banner = bigcopyright + """ -This software comes with ABSOLUTELY NO WARRANTY; see the file -COPYING for details. This is free software, and you are welcome -to distribute it under the conditions laid out in COPYING.""" - -homepage = "https://gnupg.org" -license = """Copyright (C) 2015 Ben McGinnes -Copyright (C) 2014, 2015 Martin Albrecht -Copyright (C) 2004, 2008 Igor Belyi -Copyright (C) 2002 John Goerzen - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA""" diff --git a/lang/python/pyme/version.py.in b/lang/python/pyme/version.py.in new file mode 100644 index 00000000..764bf693 --- /dev/null +++ b/lang/python/pyme/version.py.in @@ -0,0 +1,62 @@ +# Copyright (C) 2016 g10 Code GmbH +# Copyright (C) 2015 Ben McGinnes +# Copyright (C) 2004 Igor Belyi +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +productname = 'pyme' +versionstr = "@VERSION@" + +# XXX: Do we want to embed such information? +#revno = int('$Rev: 281 $'[6:-2]) +#revstr = "Rev %d" % revno + +versionlist = versionstr.split(".") +major = versionlist[0] +minor = versionlist[1] +patch = versionlist[2] + +copyright = """\ +Copyright (C) 2016 g10 Code GmbH +Copyright (C) 2015 Ben McGinnes +Copyright (C) 2014-2015 Martin Albrecht +Copyright (C) 2004-2008 Igor Belyi +Copyright (C) 2002 John Goerzen""" + +author = "The GnuPG hackers" +author_email = "gnupg-devel@gnupg.org" + +description = "Python 3 support for GPGME GnuPG cryptography library" +homepage = "https://gnupg.org" + +license = """Copyright (C) 2016 g10 Code GmbH +Copyright (C) 2015 Ben McGinnes +Copyright (C) 2014, 2015 Martin Albrecht +Copyright (C) 2004, 2008 Igor Belyi +Copyright (C) 2002 John Goerzen + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA""" diff --git a/lang/python/setup.py b/lang/python/setup.py.in similarity index 87% rename from lang/python/setup.py rename to lang/python/setup.py.in index 0d904036..9e6e0085 100755 --- a/lang/python/setup.py +++ b/lang/python/setup.py.in @@ -1,8 +1,6 @@ #!/usr/bin/env python3 - -# Module: installer -# COPYRIGHT # +# Copyright (C) 2016 g10 Code GmbH # Copyright (C) 2004 Igor Belyi # Copyright (C) 2002 John Goerzen # @@ -19,15 +17,11 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# END OF COPYRIGHT # from distutils.core import setup, Extension import os, os.path, sys import subprocess -sys.path.insert(0, os.path.dirname(__file__)) -import pyme.version - def getconfig(what): confdata = subprocess.Popen(["../../src/gpgme-config", "--%s" % what], stdout=subprocess.PIPE).communicate()[0] @@ -80,14 +74,13 @@ swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"], extra_link_args = libs) setup(name = "pyme", - version=pyme.version.versionstr, - description=pyme.version.description, - author=pyme.version.author, - author_email=pyme.version.author_email, - url=pyme.version.homepage, + version="@VERSION@", + description='Python bindings for GPGME GnuPG cryptography library', + author='The GnuPG hackers', + author_email='gnupg-devel@gnupg.org', + url='https://www.gnupg.org', ext_modules=[swige], packages = ['pyme', 'pyme.constants', 'pyme.constants.data', 'pyme.constants.keylist', 'pyme.constants.sig'], - license=pyme.version.copyright + \ - ", Licensed under the GPL version 2 and the LGPL version 2.1" + license="LGPL2.1+ (the library), GPL2+ (tests and examples)" )