python: docs update
* Expanded the section on issues with Windows installations, with
greater detail of which versions of Visual Studio are needed
depending on which version of CPython is to be used.
* Included a recommendation which is a bit harsh without being totally
prickish.
* Updated all files to not link to author's key or related data in
order to make them all consistent with the changes in commit
649b196881
.
Signed-off-by: Ben McGinnes <ben@adversary.org>
This commit is contained in:
parent
2e3a681d0c
commit
8613727f1e
@ -3,27 +3,19 @@
|
|||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Version: | 0.1.4 |
|
| Version: | 0.1.4 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| GPGME Version: | 1.12.1 |
|
| GPGME Version: | 1.12.1 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Author: | `Ben |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| | McGinnes <https://gnupg.org/peopl |
|
+-----------------+------------------------------------------+
|
||||||
| | e/index.html#sec-1-5>`__ |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| | <ben@gnupg.org> |
|
+-----------------+------------------------------------------+
|
||||||
+-----------------------------------+-----------------------------------+
|
| Language: | Australian English, British English |
|
||||||
| Author GPG Key: | `DB4724E6FA4286C92B4E55C4321E4E23 |
|
+-----------------+------------------------------------------+
|
||||||
| | 73590E5D <https://hkps.pool.sks-k |
|
|
||||||
| | eyservers.net/pks/lookup?search=0 |
|
|
||||||
| | xDB4724E6FA4286C92B4E55C4321E4E23 |
|
|
||||||
| | 73590E5D&exact=on&op=get>`__ |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| Language: | Australian English, British |
|
|
||||||
| | English |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| Language codes: | en-AU, en-GB, en |
|
| Language codes: | en-AU, en-GB, en |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
|
|
||||||
This document provides basic instruction in how to use the GPGME Python
|
This document provides basic instruction in how to use the GPGME Python
|
||||||
bindings to programmatically leverage the GPGME library.
|
bindings to programmatically leverage the GPGME library.
|
||||||
@ -468,11 +460,12 @@ around far longer than it should have been.
|
|||||||
There are two theoretical solutions to this issue:
|
There are two theoretical solutions to this issue:
|
||||||
|
|
||||||
#. Compile and install the GnuPG stack, including GPGME and the Python
|
#. Compile and install the GnuPG stack, including GPGME and the Python
|
||||||
bibdings using the same version of Microsoft Visual Studio used by
|
bindings using the same version of Microsoft Visual Studio used by
|
||||||
the Python Foundation to compile the version of Python installed.
|
the Python Foundation to compile the version of Python installed.
|
||||||
|
|
||||||
If there are multiple versions of Python then this will need to be
|
If there are multiple versions of Python then this will need to be
|
||||||
done with each different version of Visual Studio used.
|
done with each different version of Visual Studio used for those
|
||||||
|
versions of Python.
|
||||||
|
|
||||||
#. Compile and install Python using the same tools used by choice, such
|
#. Compile and install Python using the same tools used by choice, such
|
||||||
as MinGW or Msys2.
|
as MinGW or Msys2.
|
||||||
@ -488,6 +481,89 @@ Visual Studio to compile and build all of it, no matter what.
|
|||||||
Investigations into the extent or the limitations of this issue are
|
Investigations into the extent or the limitations of this issue are
|
||||||
ongoing.
|
ongoing.
|
||||||
|
|
||||||
|
The following table lists the version of Microsoft Visual Studio which
|
||||||
|
needs to be used when compiling GPGME and the Python bindings with each
|
||||||
|
version of the CPython binary released `for
|
||||||
|
Windows <https://www.python.org/downloads/windows/>`__:
|
||||||
|
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
| CPython | Microsoft product name | runtime filename |
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
| 2.7.6 | Visual Studio 2008 | MSVCR90.DLL |
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
| 3.4.0 | Visual Studio 2010 | MSVCR100.DLL |
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
| 3.5.0 | Visual Studio 2015 | **see below** |
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
| 3.6.0 | Visual Studio 2015 | **see below** |
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
| 3.7.0 | Visual Studio 2017\* | **see below** |
|
||||||
|
+---------+------------------------+------------------+
|
||||||
|
|
||||||
|
It is important to note that MingW and Msys2 ship with the Visual C
|
||||||
|
runtime from Microsoft Visual Studio 2005 and are thus **incompatible**
|
||||||
|
with all the versions of CPython which can be used with the GPGME Python
|
||||||
|
bindings.
|
||||||
|
|
||||||
|
It is also important to note that from CPython 3.5 onwards, the Python
|
||||||
|
Foundation has adopted the reworking of the Visual C runtime which was
|
||||||
|
performed for Visual Studio 2015 and aimed at resolving many of these
|
||||||
|
kinds of issues. Much greater detail on these issues and the correct
|
||||||
|
file(s) to link to are available from Matthew Brett\'s invaluable page,
|
||||||
|
`Using Microsoft Visual C with
|
||||||
|
Python <https://matthew-brett.github.io/pydagogue/python_msvc.html>`__.
|
||||||
|
It is also worth reading the Microsoft Developer Network blog post on
|
||||||
|
`the universal
|
||||||
|
CRT <http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx>`__
|
||||||
|
and Steve Dower\'s blog posts on Python extensions (`part
|
||||||
|
1 <http://stevedower.id.au/blog/building-for-python-3-5>`__ and `part
|
||||||
|
2 <http://stevedower.id.au/blog/building-for-python-3-5-part-two>`__).
|
||||||
|
|
||||||
|
The second of those two posts by Steve Dower contains the details of
|
||||||
|
specific configuration options required for compiling anything to be
|
||||||
|
used with official CPython releases. In addition to those configuration
|
||||||
|
and compiler settings to use, the versions of Visual Studio prior to
|
||||||
|
Visual Studio 2015 did not support 64-bit systems by default. So
|
||||||
|
compiling a 64-bit version of these bindings for a 64-bit version of
|
||||||
|
CPython 2.7 or 3.4 requires additional work.
|
||||||
|
|
||||||
|
In addition to the blog posts, the `Windows
|
||||||
|
compilers <https://wiki.python.org/moin/WindowsCompilers>`__ wiki page
|
||||||
|
on the CPython wiki is another essential reference on the relevant
|
||||||
|
versions of Visual Studio to use and the degree of compatibility with
|
||||||
|
CPython releases.
|
||||||
|
|
||||||
|
Eventually someone will ask why there isn\'t an installable binary for
|
||||||
|
Windows, which the GPGME of the licenses do not preclude as long as the
|
||||||
|
source code is available in conjunction with such a release.
|
||||||
|
|
||||||
|
The sheer number of versions of Visual Studio in conjunction with
|
||||||
|
differing configuration options depending on the target Windows version
|
||||||
|
and whether the architecture is 64-bit or 32-bit makes it difficult to
|
||||||
|
provide a correct binary installer for Windows users. At the bare
|
||||||
|
minimum doing so would require the GnuPG project compile ten different
|
||||||
|
versions of the bindings with each release; both 32-bit and 64-bit
|
||||||
|
versions for CPython 2.7 and 3.4, with 64-bit versions for both x86-64
|
||||||
|
(i.e. Intel and AMD) and ARM architectures for CPython 3.5, 3.6, 3.7 and
|
||||||
|
later releases. That\'s the bare **minimum**, it\'d probably be higher.
|
||||||
|
|
||||||
|
Considering all of that, what do we recommend?
|
||||||
|
|
||||||
|
#. Use a recent version of CPython; at least 3.5, but ideally 3.6 or
|
||||||
|
later.
|
||||||
|
|
||||||
|
#. Use Visual Studio 2015 or the standalone build tools for Visual
|
||||||
|
Studio 2017 (or later).
|
||||||
|
|
||||||
|
#. Compile both CPython and GPGME with these bindings using the tools
|
||||||
|
selected in step 2.
|
||||||
|
|
||||||
|
#. Ignore MingW, Msys2 and the official CPython binary installers.
|
||||||
|
|
||||||
|
#. Be thankful the answer to this question wasn\'t simply to say
|
||||||
|
something like, "install Linux" or "install FreeBSD" (or even
|
||||||
|
Apple\'s OS X).
|
||||||
|
|
||||||
.. _snafu-cffi:
|
.. _snafu-cffi:
|
||||||
|
|
||||||
CFFI is the Best™ and GPGME should use it instead of SWIG
|
CFFI is the Best™ and GPGME should use it instead of SWIG
|
||||||
|
@ -3,27 +3,19 @@
|
|||||||
Maintenance Mode from 2019
|
Maintenance Mode from 2019
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Author: | `Ben |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| | McGinnes <https://gnupg.org/peopl |
|
+-----------------+------------------------------------------+
|
||||||
| | e/index.html#sec-1-5>`__ |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| | <ben@gnupg.org> |
|
+-----------------+------------------------------------------+
|
||||||
+-----------------------------------+-----------------------------------+
|
| Language: | Australian English, British English |
|
||||||
| Author GPG Key: | `DB4724E6FA4286C92B4E55C4321E4E23 |
|
+-----------------+------------------------------------------+
|
||||||
| | 73590E5D <https://hkps.pool.sks-k |
|
|
||||||
| | eyservers.net/pks/lookup?search=0 |
|
|
||||||
| | xDB4724E6FA4286C92B4E55C4321E4E23 |
|
|
||||||
| | 73590E5D&exact=on&op=get>`__ |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| Language: | Australian English, British |
|
|
||||||
| | English |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
|
|
||||||
From the beginning of 2019 the Python bindings to GPGME will enter
|
From the beginning of 2019 the Python bindings to GPGME will enter
|
||||||
maintenance mode, meaning that new features will not be added and only
|
maintenance mode, meaning that new features will not be added and only
|
||||||
|
@ -1,27 +1,19 @@
|
|||||||
Overview
|
Overview
|
||||||
========
|
========
|
||||||
|
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Author: | `Ben |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| | McGinnes <https://gnupg.org/peopl |
|
+-----------------+------------------------------------------+
|
||||||
| | e/index.html#sec-1-5>`__ |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| | <ben@gnupg.org> |
|
+-----------------+------------------------------------------+
|
||||||
+-----------------------------------+-----------------------------------+
|
| Language: | Australian English, British English |
|
||||||
| Author GPG Key: | `DB4724E6FA4286C92B4E55C4321E4E23 |
|
+-----------------+------------------------------------------+
|
||||||
| | 73590E5D <https://hkps.pool.sks-k |
|
|
||||||
| | eyservers.net/pks/lookup?search=0 |
|
|
||||||
| | xDB4724E6FA4286C92B4E55C4321E4E23 |
|
|
||||||
| | 73590E5D&exact=on&op=get>`__ |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| Language: | Australian English, British |
|
|
||||||
| | English |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
|
|
||||||
The GPGME Python bindings passed through many hands and numerous phases
|
The GPGME Python bindings passed through many hands and numerous phases
|
||||||
before, after a fifteen year journey, coming full circle to return to
|
before, after a fifteen year journey, coming full circle to return to
|
||||||
|
@ -3,27 +3,19 @@
|
|||||||
What\'s New
|
What\'s New
|
||||||
===========
|
===========
|
||||||
|
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Author: | `Ben |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| | McGinnes <https://gnupg.org/peopl |
|
+-----------------+------------------------------------------+
|
||||||
| | e/index.html#sec-1-5>`__ |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| | <ben@gnupg.org> |
|
+-----------------+------------------------------------------+
|
||||||
+-----------------------------------+-----------------------------------+
|
| Language: | Australian English, British English |
|
||||||
| Author GPG Key: | `DB4724E6FA4286C92B4E55C4321E4E23 |
|
+-----------------+------------------------------------------+
|
||||||
| | 73590E5D <https://hkps.pool.sks-k |
|
|
||||||
| | eyservers.net/pks/lookup?search=0 |
|
|
||||||
| | xDB4724E6FA4286C92B4E55C4321E4E23 |
|
|
||||||
| | 73590E5D&exact=on&op=get>`__ |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| Language: | Australian English, British |
|
|
||||||
| | English |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
|
|
||||||
Last time the most obviously new thing was adding the *What\'s New*
|
Last time the most obviously new thing was adding the *What\'s New*
|
||||||
section to the HOWTO. Now it\'s moving it out of the HOWTO.
|
section to the HOWTO. Now it\'s moving it out of the HOWTO.
|
||||||
@ -43,5 +35,7 @@ Additions since GPGME 1.12.0 include:
|
|||||||
- Added ``gpg.version.versionintlist`` to make it easier for Python
|
- Added ``gpg.version.versionintlist`` to make it easier for Python
|
||||||
developers to check for a specific version number, even with beta
|
developers to check for a specific version number, even with beta
|
||||||
versions (it will drop the \"-betaN\" part).
|
versions (it will drop the \"-betaN\" part).
|
||||||
|
- Added expanded detail on issues pertaining to installing for Windows
|
||||||
|
users.
|
||||||
- Bindings enter `maintenance mode <maintenance-mode>`__ from January,
|
- Bindings enter `maintenance mode <maintenance-mode>`__ from January,
|
||||||
2019.
|
2019.
|
||||||
|
@ -3,27 +3,19 @@
|
|||||||
What Was New
|
What Was New
|
||||||
============
|
============
|
||||||
|
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
| Author: | `Ben |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| | McGinnes <https://gnupg.org/peopl |
|
+-----------------+------------------------------------------+
|
||||||
| | e/index.html#sec-1-5>`__ |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| | <ben@gnupg.org> |
|
+-----------------+------------------------------------------+
|
||||||
+-----------------------------------+-----------------------------------+
|
| Language: | Australian English, British English |
|
||||||
| Author GPG Key: | `DB4724E6FA4286C92B4E55C4321E4E23 |
|
+-----------------+------------------------------------------+
|
||||||
| | 73590E5D <https://hkps.pool.sks-k |
|
|
||||||
| | eyservers.net/pks/lookup?search=0 |
|
|
||||||
| | xDB4724E6FA4286C92B4E55C4321E4E23 |
|
|
||||||
| | 73590E5D&exact=on&op=get>`__ |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| Language: | Australian English, British |
|
|
||||||
| | English |
|
|
||||||
+-----------------------------------+-----------------------------------+
|
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
+-----------------------------------+-----------------------------------+
|
+-----------------+------------------------------------------+
|
||||||
|
|
||||||
The following are all the past *What\'s New* sections for the Python
|
The following are all the past *What\'s New* sections for the Python
|
||||||
Bindings HOWTO and other documentation.
|
Bindings HOWTO and other documentation.
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
| Version: | 0.1.4 |
|
| Version: | 0.1.4 |
|
||||||
| GPGME Version: | 1.12.1 |
|
| GPGME Version: | 1.12.1 |
|
||||||
| Author: | [[https://gnupg.org/people/index.html#sec-1-5][Ben McGinnes]] <[[mailto:ben@gnupg.org][ben@gnupg.org]]> |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| Author GPG Key: | [[https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get][DB4724E6FA4286C92B4E55C4321E4E2373590E5D]] |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| Language: | Australian English, British English |
|
| Language: | Australian English, British English |
|
||||||
| Language codes: | en-AU, en-GB, en |
|
| Language codes: | en-AU, en-GB, en |
|
||||||
|
|
||||||
@ -493,12 +493,13 @@ been kept around far longer than it should have been.
|
|||||||
There are two theoretical solutions to this issue:
|
There are two theoretical solutions to this issue:
|
||||||
|
|
||||||
1. Compile and install the GnuPG stack, including GPGME and the
|
1. Compile and install the GnuPG stack, including GPGME and the
|
||||||
Python bibdings using the same version of Microsoft Visual Studio
|
Python bindings using the same version of Microsoft Visual Studio
|
||||||
used by the Python Foundation to compile the version of Python
|
used by the Python Foundation to compile the version of Python
|
||||||
installed.
|
installed.
|
||||||
|
|
||||||
If there are multiple versions of Python then this will need to be
|
If there are multiple versions of Python then this will need to be
|
||||||
done with each different version of Visual Studio used.
|
done with each different version of Visual Studio used for those
|
||||||
|
versions of Python.
|
||||||
|
|
||||||
2. Compile and install Python using the same tools used by choice,
|
2. Compile and install Python using the same tools used by choice,
|
||||||
such as MinGW or Msys2.
|
such as MinGW or Msys2.
|
||||||
@ -515,6 +516,76 @@ what.
|
|||||||
Investigations into the extent or the limitations of this issue are
|
Investigations into the extent or the limitations of this issue are
|
||||||
ongoing.
|
ongoing.
|
||||||
|
|
||||||
|
The following table lists the version of Microsoft Visual Studio which
|
||||||
|
needs to be used when compiling GPGME and the Python bindings with
|
||||||
|
each version of the CPython binary released [[https://www.python.org/downloads/windows/][for Windows]]:
|
||||||
|
|
||||||
|
| CPython | Microsoft product name | runtime filename |
|
||||||
|
| 2.7.6 | Visual Studio 2008 | MSVCR90.DLL |
|
||||||
|
| 3.4.0 | Visual Studio 2010 | MSVCR100.DLL |
|
||||||
|
| 3.5.0 | Visual Studio 2015 | *see below* |
|
||||||
|
| 3.6.0 | Visual Studio 2015 | *see below* |
|
||||||
|
| 3.7.0 | Visual Studio 2017* | *see below* |
|
||||||
|
|
||||||
|
It is important to note that MingW and Msys2 ship with the Visual C
|
||||||
|
runtime from Microsoft Visual Studio 2005 and are thus *incompatible*
|
||||||
|
with all the versions of CPython which can be used with the GPGME
|
||||||
|
Python bindings.
|
||||||
|
|
||||||
|
It is also important to note that from CPython 3.5 onwards, the Python
|
||||||
|
Foundation has adopted the reworking of the Visual C runtime which was
|
||||||
|
performed for Visual Studio 2015 and aimed at resolving many of these
|
||||||
|
kinds of issues. Much greater detail on these issues and the correct
|
||||||
|
file(s) to link to are available from Matthew Brett's invaluable page,
|
||||||
|
[[https://matthew-brett.github.io/pydagogue/python_msvc.html][Using Microsoft Visual C with Python]]. It is also worth reading the
|
||||||
|
Microsoft Developer Network blog post on [[http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx][the universal CRT]] and Steve
|
||||||
|
Dower's blog posts on Python extensions ([[http://stevedower.id.au/blog/building-for-python-3-5][part 1]] and [[http://stevedower.id.au/blog/building-for-python-3-5-part-two][part 2]]).
|
||||||
|
|
||||||
|
The second of those two posts by Steve Dower contains the details of
|
||||||
|
specific configuration options required for compiling anything to be
|
||||||
|
used with official CPython releases. In addition to those
|
||||||
|
configuration and compiler settings to use, the versions of Visual
|
||||||
|
Studio prior to Visual Studio 2015 did not support 64-bit systems by
|
||||||
|
default. So compiling a 64-bit version of these bindings for a 64-bit
|
||||||
|
version of CPython 2.7 or 3.4 requires additional work.
|
||||||
|
|
||||||
|
In addition to the blog posts, the [[https://wiki.python.org/moin/WindowsCompilers][Windows compilers]] wiki page on the
|
||||||
|
CPython wiki is another essential reference on the relevant versions
|
||||||
|
of Visual Studio to use and the degree of compatibility with CPython
|
||||||
|
releases.
|
||||||
|
|
||||||
|
Eventually someone will ask why there isn't an installable binary for
|
||||||
|
Windows, which the GPGME of the licenses do not preclude as long as
|
||||||
|
the source code is available in conjunction with such a release.
|
||||||
|
|
||||||
|
The sheer number of versions of Visual Studio in conjunction with
|
||||||
|
differing configuration options depending on the target Windows
|
||||||
|
version and whether the architecture is 64-bit or 32-bit makes it
|
||||||
|
difficult to provide a correct binary installer for Windows users. At
|
||||||
|
the bare minimum doing so would require the GnuPG project compile ten
|
||||||
|
different versions of the bindings with each release; both 32-bit and
|
||||||
|
64-bit versions for CPython 2.7 and 3.4, with 64-bit versions for both
|
||||||
|
x86-64 (i.e. Intel and AMD) and ARM architectures for CPython 3.5,
|
||||||
|
3.6, 3.7 and later releases. That's the bare *minimum*, it'd probably
|
||||||
|
be higher.
|
||||||
|
|
||||||
|
Considering all of that, what do we recommend?
|
||||||
|
|
||||||
|
1. Use a recent version of CPython; at least 3.5, but ideally 3.6 or
|
||||||
|
later.
|
||||||
|
|
||||||
|
2. Use Visual Studio 2015 or the standalone build tools for Visual
|
||||||
|
Studio 2017 (or later).
|
||||||
|
|
||||||
|
3. Compile both CPython and GPGME with these bindings using the tools
|
||||||
|
selected in step 2.
|
||||||
|
|
||||||
|
4. Ignore MingW, Msys2 and the official CPython binary installers.
|
||||||
|
|
||||||
|
5. Be thankful the answer to this question wasn't simply to say
|
||||||
|
something like, “install Linux” or “install FreeBSD” (or even
|
||||||
|
Apple's OS X).
|
||||||
|
|
||||||
|
|
||||||
*** CFFI is the Best™ and GPGME should use it instead of SWIG
|
*** CFFI is the Best™ and GPGME should use it instead of SWIG
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
:CUSTOM_ID: maintenance-mode
|
:CUSTOM_ID: maintenance-mode
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
| Author: | [[https://gnupg.org/people/index.html#sec-1-5][Ben McGinnes]] <[[mailto:ben@gnupg.org][ben@gnupg.org]]> |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| Author GPG Key: | [[https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get][DB4724E6FA4286C92B4E55C4321E4E2373590E5D]] |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| Language: | Australian English, British English |
|
| Language: | Australian English, British English |
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@
|
|||||||
:CUSTOM_ID: overview
|
:CUSTOM_ID: overview
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
| Author: | [[https://gnupg.org/people/index.html#sec-1-5][Ben McGinnes]] <[[mailto:ben@gnupg.org][ben@gnupg.org]]> |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| Author GPG Key: | [[https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get][DB4724E6FA4286C92B4E55C4321E4E2373590E5D]] |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| Language: | Australian English, British English |
|
| Language: | Australian English, British English |
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
|
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
:CUSTOM_ID: new-stuff
|
:CUSTOM_ID: new-stuff
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
| Author: | [[https://gnupg.org/people/index.html#sec-1-5][Ben McGinnes]] <[[mailto:ben@gnupg.org][ben@gnupg.org]]> |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| Author GPG Key: | [[https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get][DB4724E6FA4286C92B4E55C4321E4E2373590E5D]] |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| Language: | Australian English, British English |
|
| Language: | Australian English, British English |
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
|
|
||||||
@ -40,4 +40,6 @@ Additions since GPGME 1.12.0 include:
|
|||||||
- Added =gpg.version.versionintlist= to make it easier for Python
|
- Added =gpg.version.versionintlist= to make it easier for Python
|
||||||
developers to check for a specific version number, even with beta
|
developers to check for a specific version number, even with beta
|
||||||
versions (it will drop the "-betaN" part).
|
versions (it will drop the "-betaN" part).
|
||||||
|
- Added expanded detail on issues pertaining to installing for Windows
|
||||||
|
users.
|
||||||
- Bindings enter [[file:maintenance-mode][maintenance mode]] from January, 2019.
|
- Bindings enter [[file:maintenance-mode][maintenance mode]] from January, 2019.
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
:CUSTOM_ID: new-stuff
|
:CUSTOM_ID: new-stuff
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Version: | 0.0.1-draft |
|
| Version: | 0.0.1 |
|
||||||
| GPGME Version: | 1.13.0 |
|
| GPGME Version: | 1.13.0 |
|
||||||
| Author: | [[https://gnupg.org/people/index.html#sec-1-5][Ben McGinnes]] <[[mailto:ben@gnupg.org][ben@gnupg.org]]> |
|
| Author: | Ben McGinnes <ben@gnupg.org> |
|
||||||
| Author GPG Key: | [[https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get][DB4724E6FA4286C92B4E55C4321E4E2373590E5D]] |
|
| Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
|
||||||
| Language: | Australian English, British English |
|
| Language: | Australian English, British English |
|
||||||
| xml:lang: | en-AU, en-GB, en |
|
| xml:lang: | en-AU, en-GB, en |
|
||||||
|
|
||||||
|
@ -171,15 +171,15 @@ Copyright and Licensing
|
|||||||
@node Introduction
|
@node Introduction
|
||||||
@chapter Introduction
|
@chapter Introduction
|
||||||
|
|
||||||
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
||||||
@item Version:
|
@item Version:
|
||||||
@tab 0.1.4
|
@tab 0.1.4
|
||||||
@item GPGME Version:
|
@item GPGME Version:
|
||||||
@tab 1.12.1
|
@tab 1.12.1
|
||||||
@item Author:
|
@item Author:
|
||||||
@tab @uref{https://gnupg.org/people/index.html#sec-1-5, Ben McGinnes} <@email{ben@@gnupg.org, ben@@gnupg.org}>
|
@tab Ben McGinnes <ben@@gnupg.org>
|
||||||
@item Author GPG Key:
|
@item Author GPG Key:
|
||||||
@tab @uref{https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get, DB4724E6FA4286C92B4E55C4321E4E2373590E5D}
|
@tab DB4724E6FA4286C92B4E55C4321E4E2373590E5D
|
||||||
@item Language:
|
@item Language:
|
||||||
@tab Australian English, British English
|
@tab Australian English, British English
|
||||||
@item Language codes:
|
@item Language codes:
|
||||||
@ -655,12 +655,13 @@ There are two theoretical solutions to this issue:
|
|||||||
@enumerate
|
@enumerate
|
||||||
@item
|
@item
|
||||||
Compile and install the GnuPG stack, including GPGME and the
|
Compile and install the GnuPG stack, including GPGME and the
|
||||||
Python bibdings using the same version of Microsoft Visual Studio
|
Python bindings using the same version of Microsoft Visual Studio
|
||||||
used by the Python Foundation to compile the version of Python
|
used by the Python Foundation to compile the version of Python
|
||||||
installed.
|
installed.
|
||||||
|
|
||||||
If there are multiple versions of Python then this will need to be
|
If there are multiple versions of Python then this will need to be
|
||||||
done with each different version of Visual Studio used.
|
done with each different version of Visual Studio used for those
|
||||||
|
versions of Python.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Compile and install Python using the same tools used by choice,
|
Compile and install Python using the same tools used by choice,
|
||||||
@ -679,6 +680,97 @@ what.
|
|||||||
Investigations into the extent or the limitations of this issue are
|
Investigations into the extent or the limitations of this issue are
|
||||||
ongoing.
|
ongoing.
|
||||||
|
|
||||||
|
The following table lists the version of Microsoft Visual Studio which
|
||||||
|
needs to be used when compiling GPGME and the Python bindings with
|
||||||
|
each version of the CPython binary released @uref{https://www.python.org/downloads/windows/, for Windows}:
|
||||||
|
|
||||||
|
@multitable {aaaaaaa} {aaaaaaaaaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaa}
|
||||||
|
@item CPython
|
||||||
|
@tab Microsoft product name
|
||||||
|
@tab runtime filename
|
||||||
|
@item 2.7.6
|
||||||
|
@tab Visual Studio 2008
|
||||||
|
@tab MSVCR90.DLL
|
||||||
|
@item 3.4.0
|
||||||
|
@tab Visual Studio 2010
|
||||||
|
@tab MSVCR100.DLL
|
||||||
|
@item 3.5.0
|
||||||
|
@tab Visual Studio 2015
|
||||||
|
@tab @strong{see below}
|
||||||
|
@item 3.6.0
|
||||||
|
@tab Visual Studio 2015
|
||||||
|
@tab @strong{see below}
|
||||||
|
@item 3.7.0
|
||||||
|
@tab Visual Studio 2017*
|
||||||
|
@tab @strong{see below}
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
It is important to note that MingW and Msys2 ship with the Visual C
|
||||||
|
runtime from Microsoft Visual Studio 2005 and are thus @strong{incompatible}
|
||||||
|
with all the versions of CPython which can be used with the GPGME
|
||||||
|
Python bindings.
|
||||||
|
|
||||||
|
It is also important to note that from CPython 3.5 onwards, the Python
|
||||||
|
Foundation has adopted the reworking of the Visual C runtime which was
|
||||||
|
performed for Visual Studio 2015 and aimed at resolving many of these
|
||||||
|
kinds of issues. Much greater detail on these issues and the correct
|
||||||
|
file(s) to link to are available from Matthew Brett's invaluable page,
|
||||||
|
@uref{https://matthew-brett.github.io/pydagogue/python_msvc.html, Using Microsoft Visual C with Python}. It is also worth reading the
|
||||||
|
Microsoft Developer Network blog post on @uref{http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx, the universal CRT} and Steve
|
||||||
|
Dower's blog posts on Python extensions (@uref{http://stevedower.id.au/blog/building-for-python-3-5, part 1} and @uref{http://stevedower.id.au/blog/building-for-python-3-5-part-two, part 2}).
|
||||||
|
|
||||||
|
The second of those two posts by Steve Dower contains the details of
|
||||||
|
specific configuration options required for compiling anything to be
|
||||||
|
used with official CPython releases. In addition to those
|
||||||
|
configuration and compiler settings to use, the versions of Visual
|
||||||
|
Studio prior to Visual Studio 2015 did not support 64-bit systems by
|
||||||
|
default. So compiling a 64-bit version of these bindings for a 64-bit
|
||||||
|
version of CPython 2.7 or 3.4 requires additional work.
|
||||||
|
|
||||||
|
In addition to the blog posts, the @uref{https://wiki.python.org/moin/WindowsCompilers, Windows compilers} wiki page on the
|
||||||
|
CPython wiki is another essential reference on the relevant versions
|
||||||
|
of Visual Studio to use and the degree of compatibility with CPython
|
||||||
|
releases.
|
||||||
|
|
||||||
|
Eventually someone will ask why there isn't an installable binary for
|
||||||
|
Windows, which the GPGME of the licenses do not preclude as long as
|
||||||
|
the source code is available in conjunction with such a release.
|
||||||
|
|
||||||
|
The sheer number of versions of Visual Studio in conjunction with
|
||||||
|
differing configuration options depending on the target Windows
|
||||||
|
version and whether the architecture is 64-bit or 32-bit makes it
|
||||||
|
difficult to provide a correct binary installer for Windows users. At
|
||||||
|
the bare minimum doing so would require the GnuPG project compile ten
|
||||||
|
different versions of the bindings with each release; both 32-bit and
|
||||||
|
64-bit versions for CPython 2.7 and 3.4, with 64-bit versions for both
|
||||||
|
x86-64 (i.e. Intel and AMD) and ARM architectures for CPython 3.5,
|
||||||
|
3.6, 3.7 and later releases. That's the bare @strong{minimum}, it'd probably
|
||||||
|
be higher.
|
||||||
|
|
||||||
|
Considering all of that, what do we recommend?
|
||||||
|
|
||||||
|
@enumerate
|
||||||
|
@item
|
||||||
|
Use a recent version of CPython; at least 3.5, but ideally 3.6 or
|
||||||
|
later.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Use Visual Studio 2015 or the standalone build tools for Visual
|
||||||
|
Studio 2017 (or later).
|
||||||
|
|
||||||
|
@item
|
||||||
|
Compile both CPython and GPGME with these bindings using the tools
|
||||||
|
selected in step 2.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Ignore MingW, Msys2 and the official CPython binary installers.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Be thankful the answer to this question wasn't simply to say
|
||||||
|
something like, “install Linux” or “install FreeBSD” (or even
|
||||||
|
Apple's OS X).
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
@node CFFI is the Best™ and GPGME should use it instead of SWIG
|
@node CFFI is the Best™ and GPGME should use it instead of SWIG
|
||||||
@subsection CFFI is the Best™ and GPGME should use it instead of SWIG
|
@subsection CFFI is the Best™ and GPGME should use it instead of SWIG
|
||||||
|
|
||||||
|
@ -36,15 +36,15 @@ Maintenance Mode from 2019
|
|||||||
@node Maintenance Mode from 2019
|
@node Maintenance Mode from 2019
|
||||||
@chapter Maintenance Mode from 2019
|
@chapter Maintenance Mode from 2019
|
||||||
|
|
||||||
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
||||||
@item Version:
|
@item Version:
|
||||||
@tab 0.0.1-draft
|
@tab 0.0.1
|
||||||
@item GPGME Version:
|
@item GPGME Version:
|
||||||
@tab 1.13.0
|
@tab 1.13.0
|
||||||
@item Author:
|
@item Author:
|
||||||
@tab @uref{https://gnupg.org/people/index.html#sec-1-5, Ben McGinnes} <@email{ben@@gnupg.org, ben@@gnupg.org}>
|
@tab Ben McGinnes <ben@@gnupg.org>
|
||||||
@item Author GPG Key:
|
@item Author GPG Key:
|
||||||
@tab @uref{https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get, DB4724E6FA4286C92B4E55C4321E4E2373590E5D}
|
@tab DB4724E6FA4286C92B4E55C4321E4E2373590E5D
|
||||||
@item Language:
|
@item Language:
|
||||||
@tab Australian English, British English
|
@tab Australian English, British English
|
||||||
@item xml:lang:
|
@item xml:lang:
|
||||||
|
@ -49,15 +49,15 @@ The Perils of PyPI
|
|||||||
@node Overview
|
@node Overview
|
||||||
@chapter Overview
|
@chapter Overview
|
||||||
|
|
||||||
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
||||||
@item Version:
|
@item Version:
|
||||||
@tab 0.0.1-draft
|
@tab 0.0.1
|
||||||
@item GPGME Version:
|
@item GPGME Version:
|
||||||
@tab 1.13.0
|
@tab 1.13.0
|
||||||
@item Author:
|
@item Author:
|
||||||
@tab @uref{https://gnupg.org/people/index.html#sec-1-5, Ben McGinnes} <@email{ben@@gnupg.org, ben@@gnupg.org}>
|
@tab Ben McGinnes <ben@@gnupg.org>
|
||||||
@item Author GPG Key:
|
@item Author GPG Key:
|
||||||
@tab @uref{https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get, DB4724E6FA4286C92B4E55C4321E4E2373590E5D}
|
@tab DB4724E6FA4286C92B4E55C4321E4E2373590E5D
|
||||||
@item Language:
|
@item Language:
|
||||||
@tab Australian English, British English
|
@tab Australian English, British English
|
||||||
@item xml:lang:
|
@item xml:lang:
|
||||||
|
@ -35,15 +35,15 @@ What's New
|
|||||||
@node What's New
|
@node What's New
|
||||||
@chapter What's New
|
@chapter What's New
|
||||||
|
|
||||||
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
||||||
@item Version:
|
@item Version:
|
||||||
@tab 0.0.1-draft
|
@tab 0.0.1
|
||||||
@item GPGME Version:
|
@item GPGME Version:
|
||||||
@tab 1.13.0
|
@tab 1.13.0
|
||||||
@item Author:
|
@item Author:
|
||||||
@tab @uref{https://gnupg.org/people/index.html#sec-1-5, Ben McGinnes} <@email{ben@@gnupg.org, ben@@gnupg.org}>
|
@tab Ben McGinnes <ben@@gnupg.org>
|
||||||
@item Author GPG Key:
|
@item Author GPG Key:
|
||||||
@tab @uref{https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get, DB4724E6FA4286C92B4E55C4321E4E2373590E5D}
|
@tab DB4724E6FA4286C92B4E55C4321E4E2373590E5D
|
||||||
@item Language:
|
@item Language:
|
||||||
@tab Australian English, British English
|
@tab Australian English, British English
|
||||||
@item xml:lang:
|
@item xml:lang:
|
||||||
@ -74,6 +74,9 @@ Added @samp{gpg.version.versionintlist} to make it easier for Python
|
|||||||
developers to check for a specific version number, even with beta
|
developers to check for a specific version number, even with beta
|
||||||
versions (it will drop the "-betaN" part).
|
versions (it will drop the "-betaN" part).
|
||||||
@item
|
@item
|
||||||
|
Added expanded detail on issues pertaining to installing for Windows
|
||||||
|
users.
|
||||||
|
@item
|
||||||
Bindings enter @uref{maintenance-mode, maintenance mode} from January, 2019.
|
Bindings enter @uref{maintenance-mode, maintenance mode} from January, 2019.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@ -39,15 +39,15 @@ What Was New in GPGME 1·12·0
|
|||||||
@node What Was New
|
@node What Was New
|
||||||
@chapter What Was New
|
@chapter What Was New
|
||||||
|
|
||||||
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
|
||||||
@item Version:
|
@item Version:
|
||||||
@tab 0.0.1-draft
|
@tab 0.0.1
|
||||||
@item GPGME Version:
|
@item GPGME Version:
|
||||||
@tab 1.13.0
|
@tab 1.13.0
|
||||||
@item Author:
|
@item Author:
|
||||||
@tab @uref{https://gnupg.org/people/index.html#sec-1-5, Ben McGinnes} <@email{ben@@gnupg.org, ben@@gnupg.org}>
|
@tab Ben McGinnes <ben@@gnupg.org>
|
||||||
@item Author GPG Key:
|
@item Author GPG Key:
|
||||||
@tab @uref{https://hkps.pool.sks-keyservers.net/pks/lookup?search=0xDB4724E6FA4286C92B4E55C4321E4E2373590E5D&exact=on&op=get, DB4724E6FA4286C92B4E55C4321E4E2373590E5D}
|
@tab DB4724E6FA4286C92B4E55C4321E4E2373590E5D
|
||||||
@item Language:
|
@item Language:
|
||||||
@tab Australian English, British English
|
@tab Australian English, British English
|
||||||
@item xml:lang:
|
@item xml:lang:
|
||||||
|
Loading…
Reference in New Issue
Block a user