aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lang/python/doc/rst/conf.py23
-rwxr-xr-xlang/python/post_installer.py158
2 files changed, 175 insertions, 6 deletions
diff --git a/lang/python/doc/rst/conf.py b/lang/python/doc/rst/conf.py
index 73ecc37d..279669d0 100644
--- a/lang/python/doc/rst/conf.py
+++ b/lang/python/doc/rst/conf.py
@@ -15,6 +15,8 @@
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
+import hashlib
+import time
# -- Project information -----------------------------------------------------
@@ -101,7 +103,7 @@ html_static_path = ['_static']
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
-htmlhelp_basename = 'GPGMEPythonBindingsdoc'
+htmlhelp_basename = 'GPGMEPythonBindings'
# -- Options for LaTeX output ------------------------------------------------
@@ -114,6 +116,7 @@ latex_elements = {
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
+ 'pointsize': '12pt'
# Additional stuff for the LaTeX preamble.
#
@@ -128,7 +131,8 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
- (master_doc, 'GPGMEPythonBindings.tex', 'GPGME Python Bindings Documentation',
+ (master_doc, 'GPGMEPythonBindings.tex',
+ 'GPGME Python Bindings Documentation',
'The GnuPG Hackers', 'manual'),
]
@@ -150,8 +154,8 @@ man_pages = [
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'GPGMEPythonBindings', 'GPGME Python Bindings Documentation',
- author, 'GPGMEPythonBindings', 'One line description of project.',
- 'Miscellaneous'),
+ author, 'GPGMEPythonBindings',
+ 'Python Bindings to the GNU Privacy Guard API.', 'Miscellaneous'),
]
@@ -160,14 +164,21 @@ texinfo_documents = [
# Bibliographic Dublin Core info.
epub_title = project
-# The unique identifier of the text. This can be a ISBN number
+# The unique identifier of the text. This can be an ISBN number
# or the project homepage.
#
# epub_identifier = ''
+epub_identifier = 'org.gnupg.gpgme.python'
# A unique identification for the text.
#
# epub_uid = ''
+stt = str(time.time())
+epub_seed = "{0} {1}".format(epub_identifier, tt)
+# SHA1 would be more than fine for this, but since the dimmest always panic
+# about any use of SHA1 with GnuPG, we'll use SHA256.
+epub_hash = hashlib.sha256(epub_seed).hexdigest()
+epub_uid = 'sha256:{0}'.format(epub_hash)
# A list of files that should not be packed into the epub file.
-epub_exclude_files = ['search.html'] \ No newline at end of file
+epub_exclude_files = ['search.html']
diff --git a/lang/python/post_installer.py b/lang/python/post_installer.py
new file mode 100755
index 00000000..f711589d
--- /dev/null
+++ b/lang/python/post_installer.py
@@ -0,0 +1,158 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2016-2018 g10 Code GmbH
+# Copyright (C) 2015 Ben McGinnes <[email protected]>
+#
+# 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
+
+from __future__ import absolute_import, print_function, unicode_literals
+
+import glob
+import os
+import os.path
+import shutil
+import subprocess
+import sys
+import sysconfig
+
+from shutil import which
+
+del absolute_import, print_function, unicode_literals
+
+try:
+ emacs = os.path.realpath(which("emacs"))
+except TypeError as e:
+ emacs = None
+
+try:
+ makeinfo = os.path.realpath(which("makeinfo"))
+except TypeError as e:
+ makeinfo = None
+
+try:
+ pandoc = os.path.realpath(which("pandoc"))
+except TypeError as e:
+ pandoc = None
+
+try:
+ texinfo = os.path.realpath(which("texinfo"))
+except TypeError as e:
+ texinfo = None
+
+docsrc = glob.glob('doc/src/**/*', recursive=True)
+
+for srcdoc in docsrc:
+ process = subprocess.Popen([emacs, srcdoc, "--batch", "-f",
+ "org-texinfo-export-to-texinfo", "--kill"],
+ stdout=subprocess.PIPE)
+ procom = process.communicate()
+
+doctexi1 = glob.glob('doc/src/**/*.texi', recursive=True)
+doctexi2 = []
+doctexi3 = []
+
+for texi in doctexi1:
+ doctexi2.append(os.path.realpath(texi))
+
+for texdoc in doctexi2:
+ newtex = texdoc.replace("doc/src/", "doc/texinfo/")
+ doctexi3.append(newtex)
+ with open(texdoc, "r") as f:
+ badtex = f.read()
+ goodtex = badtex.replace("@documentencoding UTF-8\n",
+ "@documentencoding utf-8\n")
+ with open(newtex, "w") as f:
+ f.write(goodtex)
+
+for srcdoc in docsrc:
+ rstdoc = "{0}.rst".format(srcdoc.replace("doc/src/", "doc/rst/"))
+ process = subprocess.Popen([pandoc, "-f", "org", "-t", "rst+smart", "-o",
+ rstdoc, srcdoc], stdout=subprocess.PIPE)
+ procom = process.communicate()
+
+with open("doc/rst/index.rst", "r") as f:
+ genindex = f.readlines()
+
+indextop = ['.. GPGME Python Bindings documentation master file, created by\n',
+ ' sphinx-quickstart on Wed Dec 5 09:04:47 2018.\n',
+ ' You can adapt this file completely to your liking, but it should at least\n',
+ ' contain the root `toctree` directive.\n', '\n',
+ 'GPGME Python Bindings\n', '=====================\n', '\n',
+ '.. toctree::\n', ' :maxdepth: 3\n', ' :caption: Contents:\n',
+ '\n']
+
+with open("doc/rst/index.rst", "w") as f:
+ for line in indextop:
+ f.write(line)
+ for line in genindex[5:]:
+ f.write(line)
+
+with open("doc/rst/Makefile", "w") as f:
+ f.write("""# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+SOURCEDIR = .
+BUILDDIR = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+""")
+
+print("""
+You may now generate your preferred documentation format with either Sphinx
+or Texinfo.
+""")
+
+info_path = os.path.realpath(sysconfig._PREFIX + "/share/info")
+info_paths = os.environ["INFOPATH"].split(":")
+
+if info_paths.count(info_path) == 0:
+ info_paths.insert(0, info_path)
+else:
+ pass
+
+for ipath in info_paths:
+ if os.path.exists(os.path.realpath(ipath)) is False:
+ info_paths.remove(ipath)
+ else:
+ pass
+
+# This will very likely require root or sudo access, so running this script
+# with the same access as used to install the bindings in the first place is
+# highly recommended.
+#
+# bash variant (run in lang/python/doc/texinfo/):
+#
+# for x in *.texi:
+# makeinfo -v --no-split $x
+# done ;
+#
+# Or to generate HTML:
+#
+# for x in *.texi:
+# makeinfo -v --no-split --html $x
+# done ;