#!/bin/sh # Script to check for catalogs, stylesheets, XSL processors and all # the other stuff necessary to convert the XML documentation. _xsltwrapper="xsltproc.sh" _xmllintwrapper="xmllint.sh" for _try_catalog in /etc/sgml/catalog /usr/share/sgml/docbook/xml-dtd-4.1.2/xmlcatalog /usr/share/apps/ksgmltools2/customization/en/catalog /usr/share/sgml/catalog /usr/local/share/sgml/catalog /usr/lib/sgml/catalog /usr/local/lib/sgml/catalog do if test -f "$_try_catalog" then _catalog=$_try_catalog break fi done if test -n "$_catalog" then echo "Found SGML catalog at $_catalog" _sgmlcatalog="export SGML_CATALOG_FILES=$_catalog" else echo "No SGML catalog found." fi echo "Searching for stylesheet..." for _try_chunk_xsl in /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl /usr/share/sgml/docbook/yelp/docbook/html/chunk.xsl /usr/local/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl /usr/local/share/sgml/docbook/yelp/docbook/html/chunk.xsl do if test -f "$_try_chunk_xsl" then _chunk_xsl=$_try_chunk_xsl break fi done if test -z "$_chunk_xsl" then _chunk_xsl=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl echo "Not found. Using default ($_chunk_xsl)" _fake_chunk_xsl=yes else echo "Found chunk.xsl at $_chunk_xsl" fi cat > html.xsl << EOF EOF echo "Looking for a valid XSLT processor..." # Checks for xsltproc, then checks for the Saxon processor (it needs Java). # Also checks for Jade/OpenJade. #FIXME: Add support for the xalan/xalan2 XSLT processors. if xsltproc --version &> /dev/null then if test -z "$_fake_chunk_xsl" then echo "Found xsltproc. If it works, it's probably the best choice." if test -n "$_catalog" then _xsltcommand="xsltproc --catalogs -o \$1 \$2 \$3" else _xsltcommand="xsltproc -o \$1 \$2 \$3" fi else echo "Found xsltproc but no stylesheets on your system." echo "xsltproc is unusable without stylesheets." fi fi # xsltproc not found. # Now try to find a good Java virtual machine. # FIXME: We need more checks for Java virtual machines. if test -z "$_xsltcommand" then #FIXME: Add more suitable machines!!! for _try_java in java gij-3.3 gij-3.2 gij-3.1 gij-3.0 gij do if $_try_java --version > /dev/null 2>&1 || $_try_java -version > /dev/null 2>&1 then _java=$_try_java break fi done if test -z "$_java" then echo "Java VM not found." else # Try to find the right jar files for classpath. # This must not trigger on something like saxon-fop-6.4.4.jar. for _try_saxon_jar in /usr/share/java/saxon-[0-9]*.jar /usr/local/share/java/saxon-[0-9]*.jar /usr/share/java/saxon.jar /usr/local/share/java/saxon.jar do if test -f "$_try_saxon_jar" then _saxon_jar=$_try_saxon_jar #Don't break to find the _latest_ saxon.jar. fi done if test -n "$_saxon_jar" then if test -z "$_fake_chunk_xsl" then _xsltcommand="cd \$1 && if test \"\`dirname \$2 | head -c 1\`\" = \".\" ; then $_java -classpath $_saxon_jar com.icl.saxon.StyleSheet \$_IN_DIR/\$3 \$_IN_DIR/\$2 ; else $_java -classpath $_saxon_jar com.icl.saxon.StyleSheet \$_IN_DIR/\$3 \$2 ;fi" echo "Found the Saxon XSLT Processor ($_saxon_jar), using Java VM '$_java'." else echo "Found the Saxon XSLT processor but no stylesheets on your system." echo "Saxon is unusable without stylesheets." fi fi fi fi if test -z "$_xsltcommand" then # Java not found. # now try openjade/jade. for _try_jade in jade openjade do if command -v $_try_jade > /dev/null then _jade=$_try_jade break fi done if test -n "$_jade" then echo "xsltproc and Saxon XSLT processors not found." echo "I will try to use OpenJade or Jade (using '$_jade')." echo "They aren't (currently) fully supported, however." for _try_docbook_dsl in /usr/share/sgml/docbook/stylesheet/dsssl/modular/html/docbook.dsl /usr/local/share/sgml/docbook/stylesheet/dsssl/modular/html/docbook.dsl do if test -f "$_try_docbook_dsl" then _docbook_dsl=$_try_docbook_dsl break fi done for _try_xml_dcl in /usr/share/sgml/declaration/xml.dcl /usr/local/share/sgml/declaration/xml.dcl do if test -f "$_try_xml_dcl" then _xml_dcl=$_try_xml_dcl break fi done if test "x$_docbook_dsl" = "x" -o "x$_xml_dcl" = "x" then echo "One of the files docbook.dsl and xml.dcl or both of them weren't found." echo "Bailing out." exit 1 fi _xsltcommand="cd \$1 && $_jade -t xml -d $_docbook_dsl $_xml_dcl \$_IN_DIR/\$3" else echo "No valid XSLT processor found." echo "Bailing out." exit 1 fi fi cat > $_xsltwrapper << EOF #!/bin/sh # ************************************************** # This file is generated automatically. DO NOT EDIT. # ************************************************** # This is a small wrapper script around many ways to call the XSLT processor. # It accepts 3 arguments:
_IN_DIR=\`pwd\` $_sgmlcatalog $_xsltcommand EOF chmod +x $_xsltwrapper for _try_xmllint in xmllint do if command -v $_try_xmllint then if test -n "$_catalog" then _xmllint_command="$_try_xmllint --noout --noent --postvalid --catalogs \$*" else _xmllint_command="$_try_xmllint --noout --noent --postvalid \$*" fi break fi done if test -z "$_xmllint_command" then _xmllint_command=true fi cat > $_xmllintwrapper << EOF #!/bin/sh # ************************************************** # This file is generated automatically. DO NOT EDIT. # ************************************************** # This is a small wrapper for XML lintian programs. $_sgmlcatalog $_xmllint_command EOF chmod +x $_xmllintwrapper