# HG changeset patch # User diego # Date 1055957856 0 # Node ID 3c0e1b182fbc641f6b0a26b9f8a84c237ec5f341 # Parent b27f7db9bccb46ab464f1e7ff8105012cdbb7a1a XML autoconfiguration by Dmitry Baryshkov with some modifications and improvements by me. diff -r b27f7db9bccb -r 3c0e1b182fbc DOCS/xml/.cvsignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/xml/.cvsignore Wed Jun 18 17:37:36 2003 +0000 @@ -0,0 +1,3 @@ +html.xsl +xsltproc.sh +xmllint.sh diff -r b27f7db9bccb -r 3c0e1b182fbc DOCS/xml/Makefile --- a/DOCS/xml/Makefile Wed Jun 18 16:12:29 2003 +0000 +++ b/DOCS/xml/Makefile Wed Jun 18 17:37:36 2003 +0000 @@ -1,67 +1,26 @@ # Makefile for generating the HTML documentation -#####[ Configuration ]################################################## - -# The xsltproc program. -XSLTPROC = xsltproc - -# Another xslt converter. -# If you want to use it, change also USE_SAXON to 1 (below) -# Probably you must also change the path to saxon.jar. -USE_SAXON = 0 -SAXON_COMMAND = java -cp /usr/share/java/saxon.jar com.icl.saxon.StyleSheet - -# The xmllint program. -XMLLINT = xmllint - -# A colon separated list of catalog entry files. -# Without this properly set up, xmllint and xsltproc might be unable -# to find the DTDs for the system identifiers specified in the XML files. -# If the SGML_CATALOG_FILES environment variable is not set, list one -# or more catalogs here. -# -# on debian (potato?) systems, maybe others -#SGML_CATALOG_FILES ?= /etc/sgml/catalog -# -# on Mandrake (9.0?) systems, maybe others -SGML_CATALOG_FILES ?= /usr/share/sgml/docbook/xml-dtd-4.1.2/xmlcatalog -#SGML_CATALOG_FILES ?= /usr/share/apps/ksgmltools2/customization/en/catalog - -# Full path of the "chunker" DocBook XSL stylesheet used to generate -# the HTML files. -# -# on debian (potato?) -#CHUNK_XSL = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl -# -# on Mandrake (9.0?) systems, maybe others -CHUNK_XSL = /usr/share/sgml/docbook/yelp/docbook/html/chunk.xsl - # List of subdirectories to be processed. SUBDIRS = en fr -# Here all generated html's go +# Generated HTML files go here. HTML_TOP = ../HTML -#####[ End of configuration ]########################################### -export CHUNK_XSL SGML_CATALOG_FILES XMLLINT XSLTPROC SAXON_COMMAND USE_SAXON +.PHONY: all +all: build-html -.PHONY: no-target -no-target: - @echo "What to make?" - @echo - @echo "Targets" - @echo "*******" +.PHONY: help +help: + @echo "Targets:" + @echo "********" @echo "all : Build everything (same as build-html for now)." @echo "build-html: Build HTML documentation." @echo "clean-html: Purge the 'HTML' directory." @echo "distclean : Remove ALL generated files." -.PHONY: all -all: build-html - .PHONY: build-html -build-html: +build-html: xsltproc.sh test -d $(HTML_TOP) || mkdir $(HTML_TOP) for d in $(SUBDIRS); do\ test -f $$d/Makefile &&\ @@ -69,17 +28,13 @@ if $(MAKE) HTMLDIR=../$(HTML_TOP)/$$d -C $$d; then :; else exit 1; fi;\ done -.PHONY: test -test: - @if command -v $(XSLTPROC) >/dev/null; then :; else exit 1; fi - @if command -v $(XMLLINT) >/dev/null; then :; else exit 1; fi - @test -f $(CHUNK_XSL) || (echo "file not found: $(CHUNK_XSL)"; exit 1) - @echo "All tests passed." - .PHONY: clean-html clean-html: -rm -rf $(HTML_TOP) .PHONY: distclean distclean: clean-html - -rm -f html.xsl + -rm -f html.xsl xsltproc.sh xmllint.sh + +xsltproc.sh: configure + ./configure diff -r b27f7db9bccb -r 3c0e1b182fbc DOCS/xml/Makefile.inc --- a/DOCS/xml/Makefile.inc Wed Jun 18 16:12:29 2003 +0000 +++ b/DOCS/xml/Makefile.inc Wed Jun 18 17:37:36 2003 +0000 @@ -1,10 +1,8 @@ # -# Makefile.inc for Makefiles in sub-directories. +# Makefile.inc for Makefiles in subdirectories. # -export SGML_CATALOG_FILES - -# Use customized html.xsl file if exists... +# Use customized html.xsl file if it exists... ifeq (html.xsl,$(wildcard html.xsl)) HTML_XSL := html.xsl XSL_DEPS := $(HTML_XSL) ../html.xsl ../html-common.xsl @@ -13,19 +11,15 @@ XSL_DEPS := $(HTML_XSL) ../html-common.xsl endif -# Fall back to the default HTML stylesheet if not specified. +# Fall back to the default HTML stylesheet if none is specified. HTML_STYLESHEET ?= ../default.css # This is the main target... $(HTMLDIR)/index.html: documentation.xml $(XSL_DEPS) -rm -f $(HTMLDIR)/* - $(XMLLINT) --noout --noent --postvalid --catalogs $< + ../xmllint.sh $< cp $(HTML_STYLESHEET) $(HTMLDIR)/ -ifeq (0,$(USE_SAXON)) - $(XSLTPROC) --catalogs -o $(HTMLDIR)/ $(HTML_XSL) $< -else - cd $(HTMLDIR) && $(SAXON_COMMAND) $(CURDIR)/$< $(CURDIR)/$(HTML_XSL) -endif + ../xsltproc.sh $(HTMLDIR)/ $(HTML_XSL) $< ../html.xsl: - sh ../gen-html.xsl.sh $(CHUNK_XSL) > $@ + cd .. && sh configure diff -r b27f7db9bccb -r 3c0e1b182fbc DOCS/xml/configure --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/xml/configure Wed Jun 18 17:37:36 2003 +0000 @@ -0,0 +1,220 @@ +#!/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 + echo "Not found." + _chunk_xsl=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl +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 -n "$_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 + 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.jar /usr/local/share/java/saxon.jar /usr/share/java/saxon-[0-9]*.jar /usr/local/share/java/saxon-[0-9]*.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 -n "$_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 ; mv book1.html index.html" + 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 diff -r b27f7db9bccb -r 3c0e1b182fbc DOCS/xml/gen-html.xsl.sh --- a/DOCS/xml/gen-html.xsl.sh Wed Jun 18 16:12:29 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# -# Helper script to generate html.xsl. -# - -if test $# -ne 1; then - echo "Usage: $0 " - exit 1 -fi - -if test -f "$1"; then :; else - echo "$0: file not found: \"$1\"" - exit 1 -fi - -cat << EOF - - - - - - - - -EOF