Blame build-aux/gendocs.sh

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