krb5 commit: Make glue for building PDFs

Benjamin Kaduk kaduk at MIT.EDU
Wed Nov 14 15:58:29 EST 2012


https://github.com/krb5/krb5/commit/f06725b7a98c16630f80d8cc1dd6386a7d21a058
commit f06725b7a98c16630f80d8cc1dd6386a7d21a058
Author: Ben Kaduk <kaduk at mit.edu>
Date:   Tue Oct 16 20:11:14 2012 -0400

    Make glue for building PDFs
    
    sphinx-build's latex output engine creates a subdirectory with
    various latex files, and a Makefile.  The generated Makefile assumes
    gmake, which we do not.  The logic needed in this makefile is rather
    simple, so we just include it in src/doc/Makefile.in, even if we
    do need a rather complicated shell expression to work in the subdirectory.
    
    ticket: 7433
    tags: pullup

 .gitignore          |    1 +
 src/doc/Makefile.in |   26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore
index 36c4f1a..8ec785d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,7 @@ testlog
 /doc/version.py
 
 /doc/html/
+/doc/pdf/
 
 /src/config.log
 /src/config.status
diff --git a/src/doc/Makefile.in b/src/doc/Makefile.in
index 913a50a..3c5d3f3 100644
--- a/src/doc/Makefile.in
+++ b/src/doc/Makefile.in
@@ -28,6 +28,10 @@ RST_SOURCES= _static \
 	relay \
 	resources.rst
 
+PDFDIR=$(docsrc)/pdf
+PDFDOCS= admin appdev basic build plugindev user
+LATEXOPTS=
+
 # Create HTML documentation in $(docsrc)/html suitable for a
 # release tarball or the web site (that is, without substitutions for
 # configured paths).  This can be done in an unconfigured source tree
@@ -53,6 +57,28 @@ notice.txt: $(docsrc)/conf.py $(docsrc)/notice.rst
 NOTICE: notice.txt
 	cp notice.txt $(top_srcdir)/../NOTICE
 
+$(PDFDIR): composite
+	$(SPHINX_BUILD) -b latex -q rst_composite $(PDFDIR)
+	# sphinx-build generates a gmake-specific Makefile that we don't use
+	mv $(PDFDIR)/Makefile $(PDFDIR)/GMakefile
+
+# Not pretty.  Can't use a suffix rule .tex.pdf without a Makefile in
+# $(PDFDIR) because pdflatex looks for include files in the current
+# working directory.  The sphinx-build Makefile is quite conservative
+# and runs pdflatex five times; we can be slightly less conservative.
+pdf: $(PDFDIR)
+	(cd $(PDFDIR) && \
+	 for i in $(PDFDOCS); do \
+		texfile=`echo $${i}.tex` && \
+		idxfile=`echo $${i}.idx` && \
+		pdflatex $(LATEXOPTS) $$texfile && \
+		pdflatex $(LATEXOPTS) $$texfile && \
+		makeindex -s python.ist $$idxfile || true; \
+		pdflatex $(LATEXOPTS) $$texfile && \
+		pdflatex $(LATEXOPTS) $$texfile; done && \
+	 rm -f *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla \
+	)
+
 # 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.


More information about the cvs-krb5 mailing list