]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Generate and use version.py for Sphinx
authorTom Yu <tlyu@mit.edu>
Wed, 17 Oct 2012 22:12:52 +0000 (18:12 -0400)
committerBen Kaduk <kaduk@mit.edu>
Wed, 14 Nov 2012 19:09:03 +0000 (14:09 -0500)
Sphinx's idea of the version number appears in the man pages and
compiled PDF documents, and shows up as metadata in the generated
HTML sources.

Extract the version information from the master source (patchlevel.h)
into a form usable by Sphinx.

ticket: 7433
tags: pullup

.gitignore
doc/conf.py
src/doc/Makefile.in
src/doc/version.py.in [new file with mode: 0644]
src/man/Makefile.in

index d1b4bbac634666ae3e1ace3530c6f298efde29ea..36c4f1af9fc2554594baddec747c428358dab4f5 100644 (file)
@@ -13,6 +13,8 @@ obj/
 testdir/
 testlog
 
+/doc/version.py
+
 /doc/html/
 
 /src/config.log
index fb47f351ef194126af8afb4cd736430c946d2856..fafae15e55ade379e16106241d1b5d6b5715fc4c 100644 (file)
@@ -47,11 +47,16 @@ copyright = u'2012, MIT'
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
-#
+execfile("version.py")
 # The short X.Y version.
-version = '0.0.1'
+r_list = [r_major, r_minor]
+if r_patch:
+    r_list += [r_patch]
+version = '.'.join(map(str, r_list))
 # The full version, including alpha/beta/rc tags.
-release = '0.0.1'
+release = version
+if r_tail:
+    release += '-' + r_tail
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
index 4fcbb67a0966882b6eeae3331fd4c077b9fbb943..2413068645662fb7e82f74720ccec80cc960f7b7 100644 (file)
@@ -57,7 +57,7 @@ NOTICE: notice.txt
 # Use doxygen to generate API documentation, translate it into RST
 # format, and then create a composite of $(docsrc)'s RST and the
 # generated files in rst_composite.  Used by the html and substhtml targets.
-composite: Doxyfile
+composite: Doxyfile $(docsrc)/version.py
        rm -rf doxy rst_apiref rst_composite
        $(DOXYGEN)
        cwd=`pwd`; cd $(docsrc)/tools && \
@@ -70,15 +70,17 @@ composite: Doxyfile
        cp rst_apiref/*.rst rst_composite/appldev/refs/api
        cp rst_apiref/types/*.rst rst_composite/appldev/refs/types
        cp rst_apiref/macros/*.rst rst_composite/appldev/refs/macros
+       cp $(docsrc)/version.py rst_composite
 
 # Must use a separate source dir for sphinx text builds, since the text
 # engine cannot handle the row spanning cells in fancy tables that we use
-rst_notice: $(docsrc)/notice.rst $(docsrc)/txt_conf.py
+rst_notice: $(docsrc)/notice.rst $(docsrc)/txt_conf.py $(docsrc)/version.py
        mkdir -p rst_notice
        # reST needs backslashes before parens in this macro definition.
        sed -e 's/include:: <isonum.txt>/|copy| replace:: \\(C\\)/' \
                < $(docsrc)/notice.rst > rst_notice/notice.rst
        cp $(docsrc)/txt_conf.py rst_notice/conf.py
+       cp $(docsrc)/version.py rst_notice
 
 Doxyfile: $(srcdir)/Doxyfile.in
        sed -e 's|@SRC@|$(top_srcdir)|g' \
@@ -95,6 +97,13 @@ paths.py:
        echo 'keytab = "``$(DEFKTNAME)``"' >> $@
        echo 'ckeytab = "``$(DEFCKTNAME)``"' >> $@
 
+# Dummy rule that man/Makefile can invoke
+version.py: $(docsrc)/version.py
+
+$(docsrc)/version.py: $(top_srcdir)/patchlevel.h $(srcdir)/version.py.in
+       $(RM) $@
+       $(CC) -E -I$(top_srcdir) - < $(srcdir)/version.py.in > $@
+
 clean::
        rm -rf doxy rst_apiref rst_composite rst_notice html_subst \
-               Doxyfile paths.py
+               Doxyfile paths.py $(docsrc)/version.py
diff --git a/src/doc/version.py.in b/src/doc/version.py.in
new file mode 100644 (file)
index 0000000..0a344a7
--- /dev/null
@@ -0,0 +1,21 @@
+#include "patchlevel.h"
+
+r_major = KRB5_MAJOR_RELEASE
+r_minor = KRB5_MINOR_RELEASE
+r_patch = KRB5_PATCHLEVEL
+
+#ifdef KRB5_RELTAIL
+r_tail = KRB5_RELTAIL
+#else
+r_tail = None
+#endif
+#ifdef KRB5_RELDATE
+r_date = KRB5_RELDATE
+#else
+r_date = None
+#endif
+#ifdef KRB5_RELTAG
+r_tag = KRB5_RELTAG
+#else
+r_date = None
+#endif
index 895b5c1ab65ed7bc1ba16676b36573c458722233..19617eee20c505b24adf15b6d7170dd23f2dc76f 100644 (file)
@@ -24,7 +24,7 @@ docsrc=$(top_srcdir)/../doc
 #     make -f Makefile.in clean
 # The sed command deletes some trailing whitespace that the docutils
 # manpage writer outputs near the end of its output files.
-man:
+man: $(docsrc)/version.py
        rm -rf rst_man
        $(SPHINX_BUILD) -q -t mansubs -b man $(docsrc) rst_man
        for f in rst_man/*.[0-9]; do \
@@ -32,6 +32,9 @@ man:
                sed -e '/^\.\\" $$/d' $$f > $(srcdir)/$$name.man; \
        done
 
+$(docsrc)/version.py: $(top_srcdir)/patchlevel.h
+       (cd $(BUILDTOP)/doc && make version.py)
+
 .SUFFIXES: .man .sub
 
 .man.sub: