diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/.gitignore | 1 | ||||
-rw-r--r-- | doc/Makefile.am | 13 | ||||
-rw-r--r-- | doc/gendocs.pl | 480 | ||||
-rwxr-xr-x | doc/gendocs.sh | 490 | ||||
-rw-r--r-- | doc/html.init | 164 | ||||
-rw-r--r-- | doc/otherdoc.texi.in | 9 | ||||
-rw-r--r-- | doc/pies.texi | 13 | ||||
-rw-r--r-- | doc/webdoc.init | 8 |
8 files changed, 516 insertions, 662 deletions
diff --git a/doc/.gitignore b/doc/.gitignore index 94d867b..70f58bc 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -3,6 +3,7 @@ Makefile.in pies.info* stamp-vti version.texi +otherdoc.texi pies.aux pies.cp pies.cps diff --git a/doc/Makefile.am b/doc/Makefile.am index 5283a88..a3b0563 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -75,8 +75,8 @@ master-menu: imprimatur-master-menu untabify: imprimatur-untabify final: imprimatur-final -GENDOCS=$(srcdir)/gendocs.sh --no-copy-images --html --init-file='$(abs_srcdir)/html.init' -EXTRA_DIST += gendocs.sh +GENDOCS = perl gendocs.pl +EXTRA_DIST += gendocs.pl TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -I $(top_srcdir)/imprimatur @@ -88,9 +88,6 @@ manual: TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \ MAKEINFO="$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS)" \ TEXI2DVI="$(TEXI2DVI) -t @finalout" \ - $(GENDOCS) $(PACKAGE) '$(PACKAGE_NAME) manual' - -manual.tar.bz2: manual - tar cfj manual.tar.bz2 manual - -man-tar: manual.tar.bz2 + $(GENDOCS) -C manual -o otherdoc.texi $(PACKAGE) otherdoc.texi.in + $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -DWEBDOC \ + --html --init-file=webdoc.init $(info_TEXINFOS) -o manual diff --git a/doc/gendocs.pl b/doc/gendocs.pl new file mode 100644 index 0000000..8c9c197 --- /dev/null +++ b/doc/gendocs.pl @@ -0,0 +1,480 @@ +# This file is part of GNU Pies. +# Copyright (C) 2020 Sergey Poznyakoff +# +# GNU Pies is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Pies is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Pies. If not, see <http://www.gnu.org/licenses/>. + +use strict; +use warnings; +use Getopt::Long qw(:config gnu_getopt no_ignore_case); +use File::Basename; +use File::Spec; +use File::Path qw(make_path); +use Pod::Usage; + +my $dirname = '.'; +my $pkgname; +my $srcname; +my $output_name; +my @includes; + +GetOptions("h" => sub { + pod2usage(-message => "$0: generate docs", + -exitstatus => 0); + }, + "help" => sub { + pod2usage(-exitstatus => 0, -verbose => 2); + }, + "usage" => sub { + pod2usage(-exitstatus => 0, -verbose => 0); + }, + 'source|s=s' => \$srcname, + 'directory|C=s' => \$dirname, + 'output|o=s' => \$output_name, + 'include|I=s@' => \@includes + ) or exit(1); + +$pkgname = shift @ARGV or pod2usage(-exitstatus => 1, -verbose => 0); +$srcname //= "${pkgname}.texi"; +my $template_name = shift @ARGV or pod2usage(-exitstatus => 1, -verbose => 0); + +unless (-d $dirname) { + make_path($dirname); +} + +unless ($output_name) { + $output_name = File::Spec->catfile($dirname, (fileparse($template_name, qr/\.[^.]*/))[0]); +} + +if (@includes) { + @includes = map { '-I '.$_} @includes; + # FIXME: Not used yet +} + +sub template_scan { + my $file = shift; + open(FH, '<', $file) or die "can't open $file: $!\n"; + my $line = 0; + while (<FH>) { + chomp; + ++$line; + s{ \$ ((?:BASE)?FILE|SIZE) \( ([a-z_]+) \) }{ + eval { Gendocs->instance($2, $pkgname, $srcname) }; + if ($@) { + if ($@ =~ m{Can't locate object method "new"}) { + die "$file:$line: unknown format: $2\n"; + } else { + die $@; + } + } + }gex; + } + close FH +} + +sub template_expand { + my ($infile, $outfile) = @_; + open(IFH, '<', $infile) or die "can't open $infile: $!\n"; + open(OFH, '>', $outfile) or die "can't open $outfile: $!\n"; + while (<IFH>) { + chomp; + s{ \$ ((?:BASE)?FILE|SIZE) \( ([a-z_]+) \) }{ + if ($1 eq 'FILE') { + Gendocs->instance($2)->output; + } elsif ($1 eq 'BASEFILE') { + basename(Gendocs->instance($2)->output); + } else { + Gendocs->instance($2)->size; + } + }gex; + print OFH "$_\n"; + } +} + +template_scan $template_name; +Gendocs->generate(); +template_expand($template_name, $output_name); +Gendocs->sweep(); + +package Gendocs; +use strict; +use warnings; + +my %registry; + +sub generate { + my ($class) = @_; + my @keys = keys %registry; + foreach my $k (@keys) { + $registry{$k}->build(); + $registry{$k}->mark(); + } +} + +sub sweep { + my ($class) = @_; + my @keys = keys %registry; + foreach my $k (@keys) { + unless ($registry{$k}->has_mark) { + $registry{$k}->remove; + delete $registry{$k}; + } + } +} + +sub new { + my ($class, $pkgname, $name) = @_; + unless (exists($registry{$class})){ + $registry{$class} = bless { pkgname => $pkgname, input => $name }, $class; + } + return $registry{$class} +} +sub instance { + my ($class, $fmt, @args) = @_; + my $subclass = "Gendocs::".ucfirst($fmt); + unless (exists($registry{$subclass})) { + $registry{$subclass} = $subclass->new(@args); + } + return $registry{$subclass}; +} + +sub runcom { + my $self = shift; + system @_; + if ($? == -1) { + die "failed to execute $_[0]: $!"; + } elsif ($? & 127) { + die sprintf("$_[0] died with signal %d\n", $? & 127); + } elsif ($? >> 8) { + warn sprintf("$_[0] exited with value %d\n", $? >> 8); + } +} + +sub mark { shift->{mark} = 1 } +sub has_mark { shift->{mark} } +sub remove { + my ($self) = @_; + if ($self->{output}) { + unlink $self->{output}; + delete $self->{output}; + } +} +sub size { + my ($self) = @_; + my $s = (stat($self->output))[7]; + if ($s > 1048576) { + $s = int($s / 1048576) . 'M'; + } elsif ($s > 1024) { + $s = int($s / 1024) . 'K'; + } + return $s; +} + +sub pkgname { shift->{pkgname} } +sub input { shift->{input} } +sub output { shift->{output} } + +package Gendocs::Makeinfo; +use strict; +use warnings; +use base 'Gendocs'; + +sub new { + my $class = shift; + my $self = $class->SUPER::new(@_); + $self->{makeinfo} = $ENV{'MAKEINFO'} || 'makeinfo'; + return $self; +} + +package Gendocs::Info; +use strict; +use warnings; +use base 'Gendocs::Makeinfo'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $output = File::Spec->catfile($dirname, $self->pkgname . '.info'); + print "Generating info file: " . $self->input . " -> $output\n"; + $self->runcom("$self->{makeinfo} -o $output " . $self->input); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Info_gz; +use strict; +use warnings; +use base 'Gendocs'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $input = Gendocs->instance('info', $self->pkgname, $self->input)->build(); + my $output = "$input.gz"; + print "Compressing info file: $input -> $output\n"; + $self->runcom("gzip -f -9 -c $input > $output"); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Ascii; +use strict; +use warnings; +use base 'Gendocs::Makeinfo'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $output = File::Spec->catfile($dirname, $self->pkgname . '.txt'); + print "Generating ascii file: " . $self->input . " -> $output\n"; + $self->runcom("$self->{makeinfo} -o $output --no-split --no-headers " . $self->input); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Ascii_gz; +use strict; +use warnings; +use base 'Gendocs'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $input = Gendocs->instance('ascii', $self->pkgname, $self->input)->build(); + my $output = "$input.gz"; + print "Compressing ascii file: $input -> $output\n"; + $self->runcom("gzip -f -9 -c $input > $output"); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Texinfo_gz; +use strict; +use warnings; +use base 'Gendocs'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $output = File::Spec->catfile($dirname, $self->pkgname . '.tar.gz'); + print "Creating compressed sources: $output\n"; + $self->runcom("tar czfh $output *.texinfo *.texi *.txi *.eps 2>/dev/null || /bin/true"); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Dvi; +use strict; +use warnings; +use base 'Gendocs'; + +sub new { + my $class = shift; + my $self = $class->SUPER::new(@_); + $self->{texi2dvi} = $ENV{'TEXI2DVI'} || 'texi2dvi --build=tidy -t @finalout'; + return $self; +} + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $output = File::Spec->catfile($dirname, $self->pkgname . '.dvi'); + my $cmd = "$self->{texi2dvi} -o $output $self->{input}"; + print "Creating dvi: $cmd\n"; + $self->runcom($cmd); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Dvi_gz; +use strict; +use warnings; +use base 'Gendocs'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $input = Gendocs->instance('dvi', $self->pkgname, $self->input)->build(); + my $output = "$input.gz"; + print "Compressing dvi file: $input -> $output\n"; + $self->runcom("gzip -f -9 -c $input > $output"); + $self->{output} = $output; + } + return $self->{output}; +} + +package Gendocs::Pdf; +use strict; +use warnings; +use base 'Gendocs::Dvi'; + +sub build { + my ($self) = @_; + unless ($self->{output}) { + my $output = File::Spec->catfile($dirname, $self->pkgname . '.pdf'); + my $cmd = "$self->{texi2dvi} -o $output --pdf $self->{input}"; + print "Creating pdf: $cmd\n"; + $self->runcom($cmd); + $self->{output} = $output; + } + return $self->{output}; +} +__END__ +=head1 NAME + +gendocs.pl - generate documentation in various formats + +=head1 SYNOPSIS + +B<gendocs.pl> +[B<-C> I<DIR>] +[B<-s> I<SOURCE>] +[B<-o> I<OUTPUT-FILE>] +[B<-I> I<INCLUDE-DIR>] +[B<--directory=>I<DIR>] +[B<--include=>I<INCLUDE-DIR>] +[B<--output=>I<OUTPUT-FILE>] +[B<--source=>I<SOURCE>] +I<PACKAGE> I<TEMPLATE> + +B<gendocs.pl> B<-h> | B<--help> | B<--usage> + +=head1 DESCRIPTION + +Generates documentation for the I<PACKAGE> in various formats. I<TEMPLATE> +is a template file for the index page. When processing I<TEMPLATE> the +following I<macros> inform B<gendocs.pl> about the desired documentation +formats and are expanded on output: + +=over 4 + +=item B<$FILE(I<FORMAT>)> + +Full pathname of the documentation file in format I<FORMAT>. + +=item B<$BASEFILE(I<FORMAT>)> + +Base name of the documentation file for format I<FORMAT>. + +=item B<$SIZE(I<FORMAT>)> + +Size of the documentation file in format I<FORMAT>. Proper size suffix +(B<K> or B<M>) is appended, as needed. + +=back + +The file is processed twice. On the first pass, the program collects the +mentioned I<FORMAT>s. Then the requested files are generated. On the +second pass, the macros are replaced with the actual values and the output +index file is generated. The name of the index file can be supplied using +the B<-o> (B<--output>) option. If it is not given, the name is obtained +by removing last suffix (a substring beginning with a dot and containing +one or more characters, excepting dots) from the I<TEMPLATE> argument. + +Unless the B<-C> (B<--directory>) option is given, the output will be +generated in the current working directory. If the B<-C> option is +given, all output files, including index file, will be generated in +the supplied directory. + +The following output formats are supported: + +=over 4 + +=item B<info> + +Monolithic info file. + +=item B<info_gz> + +Monolithic info file, compressed with B<gzip> + +=item B<ascii> + +Monolithic ASCII file. + +=item B<ascii_gz> + +Monolithic ASCII file, compressed with B<gzip> + +=item B<texinfo_gz> + +A tar archive with the Texinfo documentation sources, compressed with B<gzip>. + +=item B<dvi> + +TeX B<dvi> file. + +=item B<dvi_gz> + +TeX B<dvi> file, compressed with B<gzip> + +=item B<pdf> + +A B<PDF> file. + +=back + +=head1 OPTIONS + +=over 4 + +=item B<-C>, B<--directory=>I<DIR> + +Create all output files in the directory I<DIR>. + +=item B<-s>, B<--source=>I<SOURCE> + +Name of the main Texinfo source file. By default F<I<PACKAGE>.texi> is +used. + +=item B<-o>, B<--output=>I<OUTPUT-FILE> + +Name of the output index file. By default it is constructed by removing +the last filename suffix from I<TEMPLATE>. E.g. F<index.texi.in> produces +F<index.texi>. + +=item B<-I>, B<--include=>I<INCLUDE-DIR> + +Name of the directory with Texinfo include files. This option is not +actually used. It is reserved for future use. + +=back + +=head1 ENVIRONMENT + +The following environment variables affect the behavior of B<gendocs.pl>: + +=over 4 + +=item B<MAKEINFO> + +Name and initial options of the B<makeinfo> program. + +=item B<TEXI2DVI> + +Name and initial options of the B<texi2dvi> program. The default is +F<texi2dvi --build=tidy -t @finalout>. + +=item B<TEXINPUTS> + +Used by F<texi2dvi>. Colon-separated list of Texinfo input directories. + +=back + +=cut diff --git a/doc/gendocs.sh b/doc/gendocs.sh deleted file mode 100755 index 8ac3a06..0000000 --- a/doc/gendocs.sh +++ /dev/null @@ -1,490 +0,0 @@ -#!/bin/sh -e -# gendocs.sh -- generate a GNU manual in many formats. This script is -# mentioned in maintain.texi. See the help message below for usage details. - -scriptversion=2015-02-28.17 - -# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 -# Free Software Foundation, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -# Original author: Mohit Agarwal. -# Send bug reports and any other correspondence to bug-texinfo@gnu.org. -# -# The latest version of this script, and the companion template, is -# available from Texinfo CVS: -# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh -# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template -# -# An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib). - -# TODO: -# - image importation was only implemented for HTML generated by -# makeinfo. But it should be simple enough to adjust. -# - images are not imported in the source tarball. All the needed -# formats (PDF, PNG, etc.) should be included. - -prog=`basename "$0"` -srcdir=`pwd` - -scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh" -templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template" - -: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} -: ${MAKEINFO="makeinfo"} -: ${TEXI2DVI="texi2dvi -t @finalout"} -: ${DOCBOOK2HTML="docbook2html"} -: ${DOCBOOK2PDF="docbook2pdf"} -: ${DOCBOOK2TXT="docbook2txt"} -: ${GENDOCS_TEMPLATE_DIR="."} -: ${PERL='perl'} -: ${TEXI2HTML="texi2html"} -unset CDPATH -unset use_texi2html - -version="gendocs.sh $scriptversion - -Copyright 2013 Free Software Foundation, Inc. -There is NO warranty. You may redistribute this software -under the terms of the GNU General Public License. -For more information about these matters, see the files named COPYING." - -usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE - -Generate output in various formats from PACKAGE.texinfo (or .texi or -.txi) source. See the GNU Maintainers document for a more extensive -discussion: - http://www.gnu.org/prep/maintain_toc.html - -Options: - --email ADR use ADR as contact in generated web pages; always give this. - - -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} - -o OUTDIR write files into OUTDIR, instead of manual/. - -I DIR append DIR to the Texinfo search path. - --common ARG pass ARG in all invocations. - --html ARG pass ARG to makeinfo or texi2html for HTML targets. - --info ARG pass ARG to makeinfo for Info, instead of --no-split. - --no-ascii skip generating the plain text output. - --no-copy-images - don't try to copy images referenced by img HTML tags, - --source ARG include ARG in tar archive of sources. - --split HOW make split HTML by node, section, chapter; default node. - - --texi2html use texi2html to make HTML target, with all split versions. - --docbook convert through DocBook too (xml, txt, html, pdf). - - --help display this help and exit successfully. - --version display version information and exit successfully. - -Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" - -Typical sequence: - cd PACKAGESOURCE/doc - wget \"$scripturl\" - wget \"$templateurl\" - $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" - -Output will be in a new subdirectory \"manual\" (by default; -use -o OUTDIR to override). Move all the new files into your web CVS -tree, as explained in the Web Pages node of maintain.texi. - -Please use the --email ADDRESS option so your own bug-reporting -address will be used in the generated HTML pages. - -MANUAL-TITLE is included as part of the HTML <title> of the overall -manual/index.html file. It should include the name of the package being -documented. manual/index.html is created by substitution from the file -$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the -generic template for your own purposes.) - -If you have several manuals, you'll need to run this script several -times with different MANUAL values, specifying a different output -directory with -o each time. Then write (by hand) an overall index.html -with links to them all. - -If a manual's Texinfo sources are spread across several directories, -first copy or symlink all Texinfo sources into a single directory. -(Part of the script's work is to make a tar.gz of the sources.) - -As implied above, by default monolithic Info files are generated. -If you want split Info, or other Info options, use --info to override. - -You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, -and PERL to control the programs that get executed, and -GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is -looked for. With --docbook, the environment variables DOCBOOK2HTML, -DOCBOOK2PDF, and DOCBOOK2TXT are also consulted. - -By default, makeinfo and texi2dvi are run in the default (English) -locale, since that's the language of most Texinfo manuals. If you -happen to have a non-English manual and non-English web site, see the -SETLANG setting in the source. - -Email bug reports or enhancement requests to bug-texinfo@gnu.org. -" - -MANUAL_TITLE= -PACKAGE= -EMAIL=webmasters@gnu.org # please override with --email -commonarg= # passed to all makeinfo/texi2html invcations. -dirargs= # passed to all tools (-I dir). -dirs= # -I's directories. -htmlarg= -infoarg=--no-split -generate_ascii=true -outdir=manual -source_extra= -split=default -srcfile= -no_copy_images= - -while test $# -gt 0; do - case $1 in - -s) shift; srcfile=$1;; - -o) shift; outdir=$1;; - -I) shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";; - --common) shift; commonarg=$1;; - --docbook) docbook=yes;; - --email) shift; EMAIL=$1;; - --html) shift; htmlarg=$1;; - --info) shift; infoarg=$1;; - --no-ascii) generate_ascii=false;; - --source) shift; source_extra=$1;; - --split) shift; split=$1;; - --texi2html) use_texi2html=1;; - --no-copy-images) no_copy_images=1;; - --help) echo "$usage"; exit 0;; - --version) echo "$version"; exit 0;; - -*) - echo "$0: Unknown option \`$1'." >&2 - echo "$0: Try \`--help' for more information." >&2 - exit 1;; - *) - if test -z "$PACKAGE"; then - PACKAGE=$1 - elif test -z "$MANUAL_TITLE"; then - MANUAL_TITLE=$1 - else - echo "$0: extra non-option argument \`$1'." >&2 - exit 1 - fi;; - esac - shift -done - -# makeinfo uses the dirargs, but texi2dvi doesn't. -commonarg=" $dirargs $commonarg" - -# For most of the following, the base name is just $PACKAGE -base=$PACKAGE - -if test -n "$srcfile"; then - # but here, we use the basename of $srcfile - base=`basename "$srcfile"` - case $base in - *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;; - esac - PACKAGE=$base -elif test -s "$srcdir/$PACKAGE.texinfo"; then - srcfile=$srcdir/$PACKAGE.texinfo -elif test -s "$srcdir/$PACKAGE.texi"; then - srcfile=$srcdir/$PACKAGE.texi -elif test -s "$srcdir/$PACKAGE.txi"; then - srcfile=$srcdir/$PACKAGE.txi -else - echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 - exit 1 -fi - -if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then - echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 - echo "$0: it is available from $templateurl." >&2 - exit 1 -fi - -# Function to return size of $1 in something resembling kilobytes. -calcsize() -{ - size=`ls -ksl $1 | awk '{print $1}'` - echo $size -} - -# copy_images OUTDIR HTML-FILE... -# ------------------------------- -# Copy all the images needed by the HTML-FILEs into OUTDIR. Look -# for them in the -I directories. -copy_images() -{ - test -n "$no_copy_images" && return - local odir - odir=$1 - shift - $PERL -n -e " -BEGIN { - \$me = '$prog'; - \$odir = '$odir'; - @dirs = qw($dirs); -} -" -e ' -/<img src="(.*?)"/g && ++$need{$1}; - -END { - #print "$me: @{[keys %need]}\n"; # for debugging, show images found. - FILE: for my $f (keys %need) { - for my $d (@dirs) { - if (-f "$d/$f") { - use File::Basename; - my $dest = dirname ("$odir/$f"); - # - use File::Path; - -d $dest || mkpath ($dest) - || die "$me: cannot mkdir $dest: $!\n"; - # - use File::Copy; - copy ("$d/$f", $dest) - || die "$me: cannot copy $d/$f to $dest: $!\n"; - next FILE; - } - } - die "$me: $ARGV: cannot find image $f\n"; - } -} -' -- "$@" || exit 1 -} - -case $outdir in - /*) abs_outdir=$outdir;; - *) abs_outdir=$srcdir/$outdir;; -esac - -echo "Making output for $srcfile" -echo " in `pwd`" -mkdir -p "$outdir/" - -cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" -echo "Generating info... ($cmd)" -rm -f $PACKAGE.info* # get rid of any strays -eval "$cmd" -tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info* -ls -l "$outdir/$PACKAGE.info.tar.gz" -info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` -# do not mv the info files, there's no point in having them available -# separately on the web. - -cmd="$SETLANG $TEXI2DVI $dirargs \"$srcfile\"" -printf "\nGenerating dvi... ($cmd)\n" -eval "$cmd" -# compress/finish dvi: -gzip -f -9 $PACKAGE.dvi -dvi_gz_size=`calcsize $PACKAGE.dvi.gz` -mv $PACKAGE.dvi.gz "$outdir/" -ls -l "$outdir/$PACKAGE.dvi.gz" - -cmd="$SETLANG $TEXI2DVI --pdf $dirargs \"$srcfile\"" -printf "\nGenerating pdf... ($cmd)\n" -eval "$cmd" -pdf_size=`calcsize $PACKAGE.pdf` -mv $PACKAGE.pdf "$outdir/" -ls -l "$outdir/$PACKAGE.pdf" - -if $generate_ascii; then - opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating ascii... ($cmd)\n" - eval "$cmd" - ascii_size=`calcsize $PACKAGE.txt` - gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz" - ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"` - mv $PACKAGE.txt "$outdir/" - ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz" -fi - -# Split HTML at level $2 using program $1. Used for texi2html. -html_split() -{ - opt="--split=$2 --node-files $commonarg $htmlarg" - cmd="$SETLANG $1 --output $PACKAGE.html $opt \"$srcfile\"" - printf "\nGenerating html by $2... ($cmd)\n" - eval "$cmd" - split_html_dir=$PACKAGE.html - ( - cd ${split_html_dir} || exit 1 - if test ! -e index.html; then - if test -f ${PACKAGE}.html; then - ln -sf ${PACKAGE}.html index.html - else - echo >&2 "$0: ${split_html_dir}/${PACKAGE}.html does not exist" - fi - fi - tar -czf "$abs_outdir/${PACKAGE}.html_$2.tar.gz" -- *.html - ) - eval html_$2_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$2.tar.gz"` - rm -f "$outdir"/html_$2/*.html - mkdir -p "$outdir/html_$2/" - mv ${split_html_dir}/*.html "$outdir/html_$2/" - rmdir ${split_html_dir} -} - -if test -z "$use_texi2html"; then - opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating monolithic html... ($cmd)\n" - rm -rf $PACKAGE.html # in case a directory is left over - eval "$cmd" - html_mono_size=`calcsize $PACKAGE.html` - gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" - html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` - copy_images "$outdir/" $PACKAGE.html - mv $PACKAGE.html "$outdir/" - ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz" - - version=`makeinfo --version|sed -n '1s/.* \([0-9][0-9]*\)\.[0-9.]*/\1/p'` - case $version in - [0-9]*) ;; - *) version=4;; - esac - # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option, - # it just always split by node. So if we're splitting by node anyway, - # leave it out. - if test $version -lt 5 -o "x$split" != xdefault; then - split_arg=--split=$split - opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating html by $split... ($cmd)\n" - eval "$cmd" - split_html_dir=$PACKAGE.html - copy_images $split_html_dir/ $split_html_dir/*.html - ( - cd $split_html_dir || exit 1 - tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- * - ) - eval \ - html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"` - rm -rf "$outdir/html_$split/" - mv $split_html_dir "$outdir/html_$split/" - du -s "$outdir/html_$split/" - ls -l "$outdir/$PACKAGE.html_$split.tar.gz" - CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ - /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" - else - html_split "$MAKEINFO --html" node - html_split "$MAKEINFO --html" chapter - html_split "$MAKEINFO --html" section - # should take account of --split here. - CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" - fi -else # use texi2html: - opt="--output $PACKAGE.html $commonarg $htmlarg" - cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" - printf "\nGenerating monolithic html with texi2html... ($cmd)\n" - rm -rf $PACKAGE.html # in case a directory is left over - eval "$cmd" - html_mono_size=`calcsize $PACKAGE.html` - gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" - html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` - mv $PACKAGE.html "$outdir/" - - html_split "$TEXI2HTML" node - html_split "$TEXI2HTML" chapter - html_split "$TEXI2HTML" section - CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" -fi - -printf "\nMaking .tar.gz for sources...\n" -d=`dirname $srcfile` -( - cd "$d" - srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true - tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles - ls -l "$abs_outdir/$PACKAGE.texi.tar.gz" -) -texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` - -if test -n "$docbook"; then - opt="-o - --docbook $commonarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" - printf "\nGenerating docbook XML... ($cmd)\n" - eval "$cmd" - docbook_xml_size=`calcsize $PACKAGE-db.xml` - gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz" - docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"` - mv $PACKAGE-db.xml "$outdir/" - - split_html_db_dir=html_node_db - opt="$commonarg -o $split_html_db_dir" - cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook HTML... ($cmd)\n" - eval "$cmd" - ( - cd ${split_html_db_dir} || exit 1 - tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html - ) - html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"` - rm -f "$outdir"/html_node_db/*.html - mkdir -p "$outdir/html_node_db" - mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" - rmdir ${split_html_db_dir} - - cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook ASCII... ($cmd)\n" - eval "$cmd" - docbook_ascii_size=`calcsize $PACKAGE-db.txt` - mv $PACKAGE-db.txt "$outdir/" - - cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook PDF... ($cmd)\n" - eval "$cmd" - docbook_pdf_size=`calcsize $PACKAGE-db.pdf` - mv $PACKAGE-db.pdf "$outdir/" -fi - -printf "\nMaking index file...\n" - -curdate=`$SETLANG date '+%B %d, %Y'` -sed \ - -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ - -e "s!%%EMAIL%%!$EMAIL!g" \ - -e "s!%%PACKAGE%%!$PACKAGE!g" \ - -e "s!%%DATE%%!$curdate!g" \ - -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ - -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ - -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ - -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ - -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ - -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ - -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ - -e "s!%%PDF_SIZE%%!$pdf_size!g" \ - -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ - -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ - -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ - -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ - -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ - -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ - -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ - -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ - -e "s,%%SCRIPTURL%%,$scripturl,g" \ - -e "s!%%SCRIPTNAME%%!$prog!g" \ - -e "$CONDS" \ -$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html" - -echo "Done, see $outdir/ subdirectory for new files." - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/doc/html.init b/doc/html.init deleted file mode 100644 index a61082e..0000000 --- a/doc/html.init +++ /dev/null @@ -1,164 +0,0 @@ -# Texi2any configuration for pies documentation. -*- perl -*- -# Copyright (C) 2009-2020 Sergey Poznyakoff -# -# GNU Pies is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GNU Pies is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Pies. If not, see <http://www.gnu.org/licenses/>. -use strict; - -my $top_html_dir="/software/pies"; -my $graphics_dir="$top_html_dir/graphics"; - -# Show TOC in place of the @contents directive. -set_from_init_file('INLINE_CONTENTS', 1); -# Do not show Texinfo menus. -set_from_init_file('SHOW_MENU', 0); -# Inhibit output of CSS lines in page headers. -set_from_init_file('CSS_LINES', ''); - -set_from_init_file('BODYTEXT', ""); - -set_from_init_file('EXTRA_HEAD', qq{ - <link rev="made" href="mailto:gray\@gnu.org.ua"> - <link rel="stylesheet" type="text/css" href="${top_html_dir}/gray.css"> - <lin |