diff mbox

Script for generating libstdc++ web docs for releases

Message ID 20140530111224.GG6953@redhat.com
State New
Headers show

Commit Message

Jonathan Wakely May 30, 2014, 11:12 a.m. UTC
This script automates the process of creating the libstdc++ release
docs in various formats. I didn't try to integrate it with the
update_web_docs_svn script because there are a lot of dependencies
which aren't installed on sourceware.org anyway, so it needs to be run
on another machine (but at least it's just one script now).

There's a small kluge needed for the 4.7 branch which I'll remove once
that branch is closed.

Tested on trunk, 4.9, 4.8 and 4.7, committed to trunk.

The wwwdocs patch for releasing.html is also attached.
Index: htdocs/releasing.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/releasing.html,v
retrieving revision 1.41
diff -u -r1.41 releasing.html
--- htdocs/releasing.html	22 Mar 2013 14:54:01 -0000	1.41
+++ htdocs/releasing.html	30 May 2014 10:18:53 -0000
@@ -86,6 +86,15 @@
 <code>onlinedocs/<em>version-number</em>/index.html</code> by copying it
 from a previous release and adjust it.</li>
 
+<li>Generate online libstdc++ documentation with the
+<code>maintainer-scripts/generate_libstdcxx_web_docs</code> script on trunk.
+That currently can't be done on sourceware.org due to dependencies on a
+number of DocBook and LaTeX packages. The script takes two arguments, the
+root of the GCC sources (for the new release) and the output directory
+for the generated files.  All the output that gets created should be placed
+in the same <code>onlinedocs/<em>version-number</em>/</code> directory
+as the other documentation for the release.</li>
+
 <li>Update the online-documentation links in <code>changes.html</code>
 to point to the online-documentation for the branch.</li>
diff mbox

Patch

commit 32a0c3ecbf8fee5c17f7fb89f6d755967f8d00b8
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 29 16:53:52 2014 +0100

    	* generate_libstdcxx_web_docs: New script.

diff --git a/maintainer-scripts/generate_libstdcxx_web_docs b/maintainer-scripts/generate_libstdcxx_web_docs
new file mode 100644
index 0000000..700e522
--- /dev/null
+++ b/maintainer-scripts/generate_libstdcxx_web_docs
@@ -0,0 +1,56 @@ 
+#!/bin/bash
+# Generate the libstdc++ onlinedocs for a GCC release
+# i.e. http://gcc.gnu.org/onlinedocs/gcc-x.y.z/libstdc++*
+
+SRCDIR=${1}
+DOCSDIR=${2}
+
+if ! [ $# -eq 2 -a -x "${SRCDIR}/configure" -a -d "${DOCSDIR}" ]
+then
+  echo "Usage: $0 <gcc src dir> <doc output dir>" >&2
+  exit 1
+fi
+
+set -e
+
+# Check we have some of the required tools
+for i in doxygen dot dblatex pdflatex makeindex
+do
+  echo -n "Checking for $i... "
+  which $i
+done
+
+start=$PWD
+WORKDIR=`mktemp -d $PWD/build.XXXXXX`
+DESTDIR=`mktemp -d $PWD/dest.XXXXXX`
+cd $WORKDIR
+disabled_libs=
+for dir in ${SRCDIR}/lib*
+do
+  dir="${dir##*/}"
+  [ $dir == 'libstdc++-v3' ] || disabled_libs="$disabled_libs --disable-$dir"
+done
+set -x
+${SRCDIR}/configure --enable-languages=c,c++ --disable-gcc $disabled_libs --docdir=/docs
+eval `grep '^target=' config.log`
+make configure-target
+make -C $target/libstdc++-v3 doc-install-html doc-install-xml doc-install-pdf DESTDIR=$DESTDIR
+cd $DESTDIR/docs
+mkdir libstdc++
+for which in api manual
+do
+  if [ -f libstdc++-$which-single.xml ] # Only needed for GCC 4.7.x
+  then
+    mv libstdc++-$which-single.xml libstdc++-$which.xml
+  fi
+  gzip --best libstdc++-$which.xml
+  gzip --best libstdc++-$which.pdf
+  mv libstdc++-$which{.html,-html}
+  tar czf libstdc++-$which-html.tar.gz libstdc++-$which-html
+  mv libstdc++-$which-html libstdc++/$which
+done
+mv *.gz libstdc++ $DOCSDIR/
+cd $start
+rm -r $WORKDIR
+rm -r $DESTDIR
+