Blame build-aux/gendocs.sh

Packit Service fdd496
#!/bin/sh -e
Packit Service fdd496
# gendocs.sh -- generate a GNU manual in many formats.  This script is
Packit Service fdd496
#   mentioned in maintain.texi.  See the help message below for usage details.
Packit Service fdd496
Packit Service fdd496
scriptversion=2016-12-31.18
Packit Service fdd496
Packit Service fdd496
# Copyright 2003-2017 Free Software Foundation, Inc.
Packit Service fdd496
#
Packit Service fdd496
# This program is free software: you can redistribute it and/or modify
Packit Service fdd496
# it under the terms of the GNU General Public License as published by
Packit Service fdd496
# the Free Software Foundation; either version 3 of the License, or
Packit Service fdd496
# (at your option) any later version.
Packit Service fdd496
#
Packit Service fdd496
# This program is distributed in the hope that it will be useful,
Packit Service fdd496
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fdd496
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service fdd496
# GNU General Public License for more details.
Packit Service fdd496
#
Packit Service fdd496
# You should have received a copy of the GNU General Public License
Packit Service fdd496
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service fdd496
#
Packit Service fdd496
# Original author: Mohit Agarwal.
Packit Service fdd496
# Send bug reports and any other correspondence to bug-gnulib@gnu.org.
Packit Service fdd496
#
Packit Service fdd496
# The latest version of this script, and the companion template, is
Packit Service fdd496
# available from the Gnulib repository:
Packit Service fdd496
#
Packit Service fdd496
# http://git.savannah.gnu.org/cgit/gnulib.git/tree/build-aux/gendocs.sh
Packit Service fdd496
# http://git.savannah.gnu.org/cgit/gnulib.git/tree/doc/gendocs_template
Packit Service fdd496
Packit Service fdd496
# TODO:
Packit Service fdd496
# - image importing was only implemented for HTML generated by
Packit Service fdd496
#   makeinfo.  But it should be simple enough to adjust.
Packit Service fdd496
# - images are not imported in the source tarball.  All the needed
Packit Service fdd496
#   formats (PDF, PNG, etc.) should be included.
Packit Service fdd496
Packit Service fdd496
prog=`basename "$0"`
Packit Service fdd496
srcdir=`pwd`
Packit Service fdd496
Packit Service fdd496
scripturl="http://git.savannah.gnu.org/cgit/gnulib.git/plain/build-aux/gendocs.sh"
Packit Service fdd496
templateurl="http://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/gendocs_template"
Packit Service fdd496
Packit Service fdd496
: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}
Packit Service fdd496
: ${MAKEINFO="makeinfo"}
Packit Service fdd496
: ${TEXI2DVI="texi2dvi"}
Packit Service fdd496
: ${DOCBOOK2HTML="docbook2html"}
Packit Service fdd496
: ${DOCBOOK2PDF="docbook2pdf"}
Packit Service fdd496
: ${DOCBOOK2TXT="docbook2txt"}
Packit Service fdd496
: ${GENDOCS_TEMPLATE_DIR="."}
Packit Service fdd496
: ${PERL='perl'}
Packit Service fdd496
: ${TEXI2HTML="texi2html"}
Packit Service fdd496
unset CDPATH
Packit Service fdd496
unset use_texi2html
Packit Service fdd496
Packit Service fdd496
MANUAL_TITLE=
Packit Service fdd496
PACKAGE=
Packit Service fdd496
EMAIL=webmasters@gnu.org  # please override with --email
Packit Service fdd496
commonarg= # passed to all makeinfo/texi2html invcations.
Packit Service fdd496
dirargs=   # passed to all tools (-I dir).
Packit Service fdd496
dirs=      # -I directories.
Packit Service fdd496
htmlarg="--css-ref=/software/gnulib/manual.css -c TOP_NODE_UP_URL=/manual"
Packit Service fdd496
infoarg=--no-split
Packit Service fdd496
generate_ascii=true
Packit Service fdd496
generate_html=true
Packit Service fdd496
generate_info=true
Packit Service fdd496
generate_tex=true
Packit Service fdd496
outdir=manual
Packit Service fdd496
source_extra=
Packit Service fdd496
split=node
Packit Service fdd496
srcfile=
Packit Service fdd496
texarg="-t @finalout"
Packit Service fdd496
Packit Service fdd496
version="gendocs.sh $scriptversion
Packit Service fdd496
Packit Service fdd496
Copyright 2017 Free Software Foundation, Inc.
Packit Service fdd496
There is NO warranty.  You may redistribute this software
Packit Service fdd496
under the terms of the GNU General Public License.
Packit Service fdd496
For more information about these matters, see the files named COPYING."
Packit Service fdd496
Packit Service fdd496
usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE
Packit Service fdd496
Packit Service fdd496
Generate output in various formats from PACKAGE.texinfo (or .texi or
Packit Service fdd496
.txi) source.  See the GNU Maintainers document for a more extensive
Packit Service fdd496
discussion:
Packit Service fdd496
  http://www.gnu.org/prep/maintain_toc.html
Packit Service fdd496
Packit Service fdd496
Options:
Packit Service fdd496
  --email ADR use ADR as contact in generated web pages; always give this.
Packit Service fdd496
Packit Service fdd496
  -s SRCFILE   read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi}
Packit Service fdd496
  -o OUTDIR    write files into OUTDIR, instead of manual/.
Packit Service fdd496
  -I DIR       append DIR to the Texinfo search path.
Packit Service fdd496
  --common ARG pass ARG in all invocations.
Packit Service fdd496
  --html ARG   pass ARG to makeinfo or texi2html for HTML targets,
Packit Service fdd496
                 instead of '$htmlarg'.
Packit Service fdd496
  --info ARG   pass ARG to makeinfo for Info, instead of --no-split.
Packit Service fdd496
  --no-ascii   skip generating the plain text output.
Packit Service fdd496
  --no-html    skip generating the html output.
Packit Service fdd496
  --no-info    skip generating the info output.
Packit Service fdd496
  --no-tex     skip generating the dvi and pdf output.
Packit Service fdd496
  --source ARG include ARG in tar archive of sources.
Packit Service fdd496
  --split HOW  make split HTML by node, section, chapter; default node.
Packit Service fdd496
  --tex ARG    pass ARG to texi2dvi for DVI and PDF, instead of -t @finalout.
Packit Service fdd496
Packit Service fdd496
  --texi2html  use texi2html to make HTML target, with all split versions.
Packit Service fdd496
  --docbook    convert through DocBook too (xml, txt, html, pdf).
Packit Service fdd496
Packit Service fdd496
  --help       display this help and exit successfully.
Packit Service fdd496
  --version    display version information and exit successfully.
Packit Service fdd496
Packit Service fdd496
Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\"
Packit Service fdd496
Packit Service fdd496
Typical sequence:
Packit Service fdd496
  cd PACKAGESOURCE/doc
Packit Service fdd496
  wget \"$scripturl\"
Packit Service fdd496
  wget \"$templateurl\"
Packit Service fdd496
  $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\"
Packit Service fdd496
Packit Service fdd496
Output will be in a new subdirectory \"manual\" (by default;
Packit Service fdd496
use -o OUTDIR to override).  Move all the new files into your web CVS
Packit Service fdd496
tree, as explained in the Web Pages node of maintain.texi.
Packit Service fdd496
Packit Service fdd496
Please use the --email ADDRESS option so your own bug-reporting
Packit Service fdd496
address will be used in the generated HTML pages.
Packit Service fdd496
Packit Service fdd496
MANUAL-TITLE is included as part of the HTML <title> of the overall
Packit Service fdd496
manual/index.html file.  It should include the name of the package being
Packit Service fdd496
documented.  manual/index.html is created by substitution from the file
Packit Service fdd496
$GENDOCS_TEMPLATE_DIR/gendocs_template.  (Feel free to modify the
Packit Service fdd496
generic template for your own purposes.)
Packit Service fdd496
Packit Service fdd496
If you have several manuals, you'll need to run this script several
Packit Service fdd496
times with different MANUAL values, specifying a different output
Packit Service fdd496
directory with -o each time.  Then write (by hand) an overall index.html
Packit Service fdd496
with links to them all.
Packit Service fdd496
Packit Service fdd496
If a manual's Texinfo sources are spread across several directories,
Packit Service fdd496
first copy or symlink all Texinfo sources into a single directory.
Packit Service fdd496
(Part of the script's work is to make a tar.gz of the sources.)
Packit Service fdd496
Packit Service fdd496
As implied above, by default monolithic Info files are generated.
Packit Service fdd496
If you want split Info, or other Info options, use --info to override.
Packit Service fdd496
Packit Service fdd496
You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML,
Packit Service fdd496
and PERL to control the programs that get executed, and
Packit Service fdd496
GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is
Packit Service fdd496
looked for.  With --docbook, the environment variables DOCBOOK2HTML,
Packit Service fdd496
DOCBOOK2PDF, and DOCBOOK2TXT are also consulted.
Packit Service fdd496
Packit Service fdd496
By default, makeinfo and texi2dvi are run in the default (English)
Packit Service fdd496
locale, since that's the language of most Texinfo manuals.  If you
Packit Service fdd496
happen to have a non-English manual and non-English web site, see the
Packit Service fdd496
SETLANG setting in the source.
Packit Service fdd496
Packit Service fdd496
Email bug reports or enhancement requests to bug-gnulib@gnu.org.
Packit Service fdd496
"
Packit Service fdd496
Packit Service fdd496
while test $# -gt 0; do
Packit Service fdd496
  case $1 in
Packit Service fdd496
    -s)          shift; srcfile=$1;;
Packit Service fdd496
    -o)          shift; outdir=$1;;
Packit Service fdd496
    -I)          shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";;
Packit Service fdd496
    --common)    shift; commonarg=$1;;
Packit Service fdd496
    --docbook)   docbook=yes;;
Packit Service fdd496
    --email)     shift; EMAIL=$1;;
Packit Service fdd496
    --html)      shift; htmlarg=$1;;
Packit Service fdd496
    --info)      shift; infoarg=$1;;
Packit Service fdd496
    --no-ascii)  generate_ascii=false;;
Packit Service fdd496
    --no-html)   generate_ascii=false;;
Packit Service fdd496
    --no-info)   generate_info=false;;
Packit Service fdd496
    --no-tex)    generate_tex=false;;
Packit Service fdd496
    --source)    shift; source_extra=$1;;
Packit Service fdd496
    --split)     shift; split=$1;;
Packit Service fdd496
    --tex)       shift; texarg=$1;;
Packit Service fdd496
    --texi2html) use_texi2html=1;;
Packit Service fdd496
Packit Service fdd496
    --help)      echo "$usage"; exit 0;;
Packit Service fdd496
    --version)   echo "$version"; exit 0;;
Packit Service fdd496
    -*)
Packit Service fdd496
      echo "$0: Unknown option \`$1'." >&2
Packit Service fdd496
      echo "$0: Try \`--help' for more information." >&2
Packit Service fdd496
      exit 1;;
Packit Service fdd496
    *)
Packit Service fdd496
      if test -z "$PACKAGE"; then
Packit Service fdd496
        PACKAGE=$1
Packit Service fdd496
      elif test -z "$MANUAL_TITLE"; then
Packit Service fdd496
        MANUAL_TITLE=$1
Packit Service fdd496
      else
Packit Service fdd496
        echo "$0: extra non-option argument \`$1'." >&2
Packit Service fdd496
        exit 1
Packit Service fdd496
      fi;;
Packit Service fdd496
  esac
Packit Service fdd496
  shift
Packit Service fdd496
done
Packit Service fdd496
Packit Service fdd496
# makeinfo uses the dirargs, but texi2dvi doesn't.
Packit Service fdd496
commonarg=" $dirargs $commonarg"
Packit Service fdd496
Packit Service fdd496
# For most of the following, the base name is just $PACKAGE
Packit Service fdd496
base=$PACKAGE
Packit Service fdd496
Packit Service fdd496
if test -n "$srcfile"; then
Packit Service fdd496
  # but here, we use the basename of $srcfile
Packit Service fdd496
  base=`basename "$srcfile"`
Packit Service fdd496
  case $base in
Packit Service fdd496
    *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;;
Packit Service fdd496
  esac
Packit Service fdd496
  PACKAGE=$base
Packit Service fdd496
elif test -s "$srcdir/$PACKAGE.texinfo"; then
Packit Service fdd496
  srcfile=$srcdir/$PACKAGE.texinfo
Packit Service fdd496
elif test -s "$srcdir/$PACKAGE.texi"; then
Packit Service fdd496
  srcfile=$srcdir/$PACKAGE.texi
Packit Service fdd496
elif test -s "$srcdir/$PACKAGE.txi"; then
Packit Service fdd496
  srcfile=$srcdir/$PACKAGE.txi
Packit Service fdd496
else
Packit Service fdd496
  echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2
Packit Service fdd496
  exit 1
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then
Packit Service fdd496
  echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2
Packit Service fdd496
  echo "$0: it is available from $templateurl." >&2
Packit Service fdd496
  exit 1
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Function to return size of $1 in something resembling kilobytes.
Packit Service fdd496
calcsize()
Packit Service fdd496
{
Packit Service fdd496
  size=`ls -ksl $1 | awk '{print $1}'`
Packit Service fdd496
  echo $size
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# copy_images OUTDIR HTML-FILE...
Packit Service fdd496
# -------------------------------
Packit Service fdd496
# Copy all the images needed by the HTML-FILEs into OUTDIR.
Packit Service fdd496
# Look for them in . and the -I directories; this is simpler than what
Packit Service fdd496
# makeinfo supports with -I, but hopefully it will suffice.
Packit Service fdd496
copy_images()
Packit Service fdd496
{
Packit Service fdd496
  local odir
Packit Service fdd496
  odir=$1
Packit Service fdd496
  shift
Packit Service fdd496
  $PERL -n -e "
Packit Service fdd496
BEGIN {
Packit Service fdd496
  \$me = '$prog';
Packit Service fdd496
  \$odir = '$odir';
Packit Service fdd496
  @dirs = qw(. $dirs);
Packit Service fdd496
}
Packit Service fdd496
" -e '
Packit Service fdd496
/
Packit Service fdd496
Packit Service fdd496
END {
Packit Service fdd496
  #print "$me: @{[keys %need]}\n";  # for debugging, show images found.
Packit Service fdd496
  FILE: for my $f (keys %need) {
Packit Service fdd496
    for my $d (@dirs) {
Packit Service fdd496
      if (-f "$d/$f") {
Packit Service fdd496
        use File::Basename;
Packit Service fdd496
        my $dest = dirname ("$odir/$f");
Packit Service fdd496
        #
Packit Service fdd496
        use File::Path;
Packit Service fdd496
        -d $dest || mkpath ($dest)
Packit Service fdd496
          || die "$me: cannot mkdir $dest: $!\n";
Packit Service fdd496
        #
Packit Service fdd496
        use File::Copy;
Packit Service fdd496
        copy ("$d/$f", $dest)
Packit Service fdd496
          || die "$me: cannot copy $d/$f to $dest: $!\n";
Packit Service fdd496
        next FILE;
Packit Service fdd496
      }
Packit Service fdd496
    }
Packit Service fdd496
    die "$me: $ARGV: cannot find image $f\n";
Packit Service fdd496
  }
Packit Service fdd496
}
Packit Service fdd496
' -- "$@" || exit 1
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
case $outdir in
Packit Service fdd496
  /*) abs_outdir=$outdir;;
Packit Service fdd496
  *)  abs_outdir=$srcdir/$outdir;;
Packit Service fdd496
esac
Packit Service fdd496
Packit Service fdd496
echo "Making output for $srcfile"
Packit Service fdd496
echo " in `pwd`"
Packit Service fdd496
mkdir -p "$outdir/"
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
if $generate_info; then
Packit Service fdd496
  cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\""
Packit Service fdd496
  echo "Generating info... ($cmd)"
Packit Service fdd496
  rm -f $PACKAGE.info* # get rid of any strays
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info*
Packit Service fdd496
  ls -l "$outdir/$PACKAGE.info.tar.gz"
Packit Service fdd496
  info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"`
Packit Service fdd496
  # do not mv the info files, there's no point in having them available
Packit Service fdd496
  # separately on the web.
Packit Service fdd496
fi  # end info
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
if $generate_tex; then
Packit Service fdd496
  cmd="$SETLANG $TEXI2DVI $dirargs $texarg \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating dvi... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  # compress/finish dvi:
Packit Service fdd496
  gzip -f -9 $PACKAGE.dvi
Packit Service fdd496
  dvi_gz_size=`calcsize $PACKAGE.dvi.gz`
Packit Service fdd496
  mv $PACKAGE.dvi.gz "$outdir/"
Packit Service fdd496
  ls -l "$outdir/$PACKAGE.dvi.gz"
Packit Service fdd496
Packit Service fdd496
  cmd="$SETLANG $TEXI2DVI --pdf $dirargs $texarg \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating pdf... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  pdf_size=`calcsize $PACKAGE.pdf`
Packit Service fdd496
  mv $PACKAGE.pdf "$outdir/"
Packit Service fdd496
  ls -l "$outdir/$PACKAGE.pdf"
Packit Service fdd496
fi # end tex (dvi + pdf)
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
if $generate_ascii; then
Packit Service fdd496
  opt="-o $PACKAGE.txt --no-split --no-headers $commonarg"
Packit Service fdd496
  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating ascii... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  ascii_size=`calcsize $PACKAGE.txt`
Packit Service fdd496
  gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz"
Packit Service fdd496
  ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"`
Packit Service fdd496
  mv $PACKAGE.txt "$outdir/"
Packit Service fdd496
  ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz"
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
Packit Service fdd496
if $generate_html; then
Packit Service fdd496
# Split HTML at level $1.  Used for texi2html.
Packit Service fdd496
html_split()
Packit Service fdd496
{
Packit Service fdd496
  opt="--split=$1 --node-files $commonarg $htmlarg"
Packit Service fdd496
  cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating html by $1... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  split_html_dir=$PACKAGE.html
Packit Service fdd496
  (
Packit Service fdd496
    cd ${split_html_dir} || exit 1
Packit Service fdd496
    ln -sf ${PACKAGE}.html index.html
Packit Service fdd496
    tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html
Packit Service fdd496
  )
Packit Service fdd496
  eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"`
Packit Service fdd496
  rm -f "$outdir"/html_$1/*.html
Packit Service fdd496
  mkdir -p "$outdir/html_$1/"
Packit Service fdd496
  mv ${split_html_dir}/*.html "$outdir/html_$1/"
Packit Service fdd496
  rmdir ${split_html_dir}
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
if test -z "$use_texi2html"; then
Packit Service fdd496
  opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg"
Packit Service fdd496
  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating monolithic html... ($cmd)\n"
Packit Service fdd496
  rm -rf $PACKAGE.html  # in case a directory is left over
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  html_mono_size=`calcsize $PACKAGE.html`
Packit Service fdd496
  gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
Packit Service fdd496
  html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
Packit Service fdd496
  copy_images "$outdir/" $PACKAGE.html
Packit Service fdd496
  mv $PACKAGE.html "$outdir/"
Packit Service fdd496
  ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz"
Packit Service fdd496
Packit Service fdd496
  # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option,
Packit Service fdd496
  # it just always split by node.  So if we're splitting by node anyway,
Packit Service fdd496
  # leave it out.
Packit Service fdd496
  if test "x$split" = xnode; then
Packit Service fdd496
    split_arg=
Packit Service fdd496
  else
Packit Service fdd496
    split_arg=--split=$split
Packit Service fdd496
  fi
Packit Service fdd496
  #
Packit Service fdd496
  opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg"
Packit Service fdd496
  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating html by $split... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  split_html_dir=$PACKAGE.html
Packit Service fdd496
  copy_images $split_html_dir/ $split_html_dir/*.html
Packit Service fdd496
  (
Packit Service fdd496
    cd $split_html_dir || exit 1
Packit Service fdd496
    tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- *
Packit Service fdd496
  )
Packit Service fdd496
  eval \
Packit Service fdd496
    html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"`
Packit Service fdd496
  rm -rf "$outdir/html_$split/"
Packit Service fdd496
  mv $split_html_dir "$outdir/html_$split/"
Packit Service fdd496
  du -s "$outdir/html_$split/"
Packit Service fdd496
  ls -l "$outdir/$PACKAGE.html_$split.tar.gz"
Packit Service fdd496
Packit Service fdd496
else # use texi2html:
Packit Service fdd496
  opt="--output $PACKAGE.html $commonarg $htmlarg"
Packit Service fdd496
  cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\""
Packit Service fdd496
  printf "\nGenerating monolithic html with texi2html... ($cmd)\n"
Packit Service fdd496
  rm -rf $PACKAGE.html  # in case a directory is left over
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  html_mono_size=`calcsize $PACKAGE.html`
Packit Service fdd496
  gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
Packit Service fdd496
  html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
Packit Service fdd496
  mv $PACKAGE.html "$outdir/"
Packit Service fdd496
Packit Service fdd496
  html_split node
Packit Service fdd496
  html_split chapter
Packit Service fdd496
  html_split section
Packit Service fdd496
fi
Packit Service fdd496
fi # end html
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
printf "\nMaking .tar.gz for sources...\n"
Packit Service fdd496
d=`dirname $srcfile`
Packit Service fdd496
(
Packit Service fdd496
  cd "$d"
Packit Service fdd496
  srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true
Packit Service fdd496
  tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles
Packit Service fdd496
  ls -l "$abs_outdir/$PACKAGE.texi.tar.gz"
Packit Service fdd496
)
Packit Service fdd496
texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"`
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
# Do everything again through docbook.
Packit Service fdd496
if test -n "$docbook"; then
Packit Service fdd496
  opt="-o - --docbook $commonarg"
Packit Service fdd496
  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml"
Packit Service fdd496
  printf "\nGenerating docbook XML... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  docbook_xml_size=`calcsize $PACKAGE-db.xml`
Packit Service fdd496
  gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz"
Packit Service fdd496
  docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"`
Packit Service fdd496
  mv $PACKAGE-db.xml "$outdir/"
Packit Service fdd496
Packit Service fdd496
  split_html_db_dir=html_node_db
Packit Service fdd496
  opt="$commonarg -o $split_html_db_dir"
Packit Service fdd496
  cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\""
Packit Service fdd496
  printf "\nGenerating docbook HTML... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  (
Packit Service fdd496
    cd ${split_html_db_dir} || exit 1
Packit Service fdd496
    tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html
Packit Service fdd496
  )
Packit Service fdd496
  html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"`
Packit Service fdd496
  rm -f "$outdir"/html_node_db/*.html
Packit Service fdd496
  mkdir -p "$outdir/html_node_db"
Packit Service fdd496
  mv ${split_html_db_dir}/*.html "$outdir/html_node_db/"
Packit Service fdd496
  rmdir ${split_html_db_dir}
Packit Service fdd496
Packit Service fdd496
  cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\""
Packit Service fdd496
  printf "\nGenerating docbook ASCII... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  docbook_ascii_size=`calcsize $PACKAGE-db.txt`
Packit Service fdd496
  mv $PACKAGE-db.txt "$outdir/"
Packit Service fdd496
Packit Service fdd496
  cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\""
Packit Service fdd496
  printf "\nGenerating docbook PDF... ($cmd)\n"
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
  docbook_pdf_size=`calcsize $PACKAGE-db.pdf`
Packit Service fdd496
  mv $PACKAGE-db.pdf "$outdir/"
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# 
Packit Service fdd496
printf "\nMaking index.html for $PACKAGE...\n"
Packit Service fdd496
if test -z "$use_texi2html"; then
Packit Service fdd496
  CONDS="/%%IF  *HTML_SECTION%%/,/%%ENDIF  *HTML_SECTION%%/d;\
Packit Service fdd496
         /%%IF  *HTML_CHAPTER%%/,/%%ENDIF  *HTML_CHAPTER%%/d"
Packit Service fdd496
else
Packit Service fdd496
  # should take account of --split here.
Packit Service fdd496
  CONDS="/%%ENDIF.*%%/d;/%%IF  *HTML_SECTION%%/d;/%%IF  *HTML_CHAPTER%%/d"
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
curdate=`$SETLANG date '+%B %d, %Y'`
Packit Service fdd496
sed \
Packit Service fdd496
   -e "s!%%TITLE%%!$MANUAL_TITLE!g" \
Packit Service fdd496
   -e "s!%%EMAIL%%!$EMAIL!g" \
Packit Service fdd496
   -e "s!%%PACKAGE%%!$PACKAGE!g" \
Packit Service fdd496
   -e "s!%%DATE%%!$curdate!g" \
Packit Service fdd496
   -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \
Packit Service fdd496
   -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \
Packit Service fdd496
   -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \
Packit Service fdd496
   -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \
Packit Service fdd496
   -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \
Packit Service fdd496
   -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \
Packit Service fdd496
   -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \
Packit Service fdd496
   -e "s!%%PDF_SIZE%%!$pdf_size!g" \
Packit Service fdd496
   -e "s!%%ASCII_SIZE%%!$ascii_size!g" \
Packit Service fdd496
   -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \
Packit Service fdd496
   -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \
Packit Service fdd496
   -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \
Packit Service fdd496
   -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \
Packit Service fdd496
   -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \
Packit Service fdd496
   -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \
Packit Service fdd496
   -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \
Packit Service fdd496
   -e "s,%%SCRIPTURL%%,$scripturl,g" \
Packit Service fdd496
   -e "s!%%SCRIPTNAME%%!$prog!g" \
Packit Service fdd496
   -e "$CONDS" \
Packit Service fdd496
$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html"
Packit Service fdd496
Packit Service fdd496
echo "Done, see $outdir/ subdirectory for new files."
Packit Service fdd496
Packit Service fdd496
# Local variables:
Packit Service fdd496
# eval: (add-hook 'write-file-hooks 'time-stamp)
Packit Service fdd496
# time-stamp-start: "scriptversion="
Packit Service fdd496
# time-stamp-format: "%:y-%02m-%02d.%02H"
Packit Service fdd496
# time-stamp-end: "$"
Packit Service fdd496
# End: