On Sun, Jul 20, 2014 at 2:26 PM, Timothy Gu <timothyg...@gmail.com> wrote: > texi2html is deprecated by upstream in favor of makeinfo/texi2any. See: > > - https://www.gnu.org/software/texinfo/manual/texinfo/html_node/texi2html.html > - https://wiki.debian.org/Texi2htmlTransition > - https://lists.debian.org/debian-devel/2013/05/msg01516.html > > This is actually two separate changes. But as makeinfo and texi2html > adopt 2 (very) different init file syntaxes, it is easier to do the two > transitions at once. > > Based on a patch by Andreas Cadhalpun <andreas.cadhal...@googlemail.com>. > > Fixes Trac ticket #3232. > > Signed-off-by: Timothy Gu <timothyg...@gmail.com> > --- > > Removed some now-extraneous settings. > > configure | 5 +- > doc/Makefile | 8 +- > doc/platform.texi | 2 +- > doc/t2h.init | 123 ------------------------------ > doc/t2h.pm | 220 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 5 files changed, 226 insertions(+), 132 deletions(-) > delete mode 100644 doc/t2h.init > create mode 100644 doc/t2h.pm
Ping > > diff --git a/configure b/configure > index 742dfe1..6b3a850 100755 > --- a/configure > +++ b/configure > @@ -1789,7 +1789,6 @@ HAVE_LIST=" > perl > pod2man > sdl > - texi2html > threads > vdpau_x11 > xlib > @@ -2607,7 +2606,7 @@ ffserver_select="ffm_muxer rtp_protocol rtsp_demuxer" > # documentation > podpages_deps="perl" > manpages_deps="perl pod2man" > -htmlpages_deps="perl texi2html" > +htmlpages_deps="perl makeinfo" > txtpages_deps="perl makeinfo" > doc_deps_any="manpages htmlpages podpages txtpages" > > @@ -4844,7 +4843,6 @@ else > fi > enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs > > -texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || > disable texi2html > makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo > perl -v > /dev/null 2>&1 && enable perl || disable perl > pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man > @@ -5323,7 +5321,6 @@ echo "threading support ${thread_type-no}" > echo "safe bitstream reader ${safe_bitstream_reader-no}" > echo "SDL support ${sdl-no}" > echo "opencl enabled ${opencl-no}" > -echo "texi2html enabled ${texi2html-no}" > echo "perl enabled ${perl-no}" > echo "pod2man enabled ${pod2man-no}" > echo "makeinfo enabled ${makeinfo-no}" > diff --git a/doc/Makefile b/doc/Makefile > index 99f588a..8eb1d5d 100644 > --- a/doc/Makefile > +++ b/doc/Makefile > @@ -80,14 +80,14 @@ $(GENTEXI): doc/avoptions_%.texi: > doc/print_options$(HOSTEXESUF) > $(M)doc/print_options $* > $@ > > doc/%.html: TAG = HTML > -doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI) > +doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.pm $(GENTEXI) > $(Q)$(TEXIDEP) > - $(M)texi2html -I doc -monolithic --D=config-not-all --init-file > $(SRC_PATH)/doc/t2h.init --output $@ $< > + $(M)makeinfo --html -I doc --no-split -D config-not-all > --init-file=$(SRC_PATH)/doc/t2h.pm --output $@ $< > > doc/%-all.html: TAG = HTML > -doc/%-all.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI) > +doc/%-all.html: doc/%.texi $(SRC_PATH)/doc/t2h.pm $(GENTEXI) > $(Q)$(TEXIDEP) > - $(M)texi2html -I doc -monolithic --D=config-all --init-file > $(SRC_PATH)/doc/t2h.init --output $@ $< > + $(M)makeinfo --html -I doc --no-split -D config-all > --init-file=$(SRC_PATH)/doc/t2h.pm --output $@ $< > > doc/%.pod: TAG = POD > doc/%.pod: doc/%.texi $(SRC_PATH)/doc/texi2pod.pl $(GENTEXI) > diff --git a/doc/platform.texi b/doc/platform.texi > index c71121f..b529500 100644 > --- a/doc/platform.texi > +++ b/doc/platform.texi > @@ -275,7 +275,7 @@ llrint() in its C library. > Install your Cygwin with all the "Base" packages, plus the > following "Devel" ones: > @example > -binutils, gcc4-core, make, git, mingw-runtime, texi2html > +binutils, gcc4-core, make, git, mingw-runtime, texinfo > @end example > > In order to run FATE you will also need the following "Utils" packages: > diff --git a/doc/t2h.init b/doc/t2h.init > deleted file mode 100644 > index 9dd8f91..0000000 > --- a/doc/t2h.init > +++ /dev/null > @@ -1,123 +0,0 @@ > -# no horiz rules between sections > -$end_section = \&FFmpeg_end_section; > -sub FFmpeg_end_section($$) > -{ > -} > - > -my $TEMPLATE_HEADER1 = $ENV{"FFMPEG_HEADER1"} || <<EOT; > -<!DOCTYPE html> > -<html lang="en"> > - <head> > - <meta charset="utf-8" /> > - <meta http-equiv="X-UA-Compatible" content="IE=edge" /> > - <title>FFmpeg documentation</title> > - <link rel="stylesheet" href="style.min.css" /> > -EOT > - > -my $TEMPLATE_HEADER2 = $ENV{"FFMPEG_HEADER2"} || <<EOT; > - </head> > - <body> > - <div style="width: 95%; margin: auto"> > -EOT > - > -my $TEMPLATE_FOOTER = $ENV{"FFMPEG_FOOTER"} || <<EOT; > - </div> > - </body> > -</html> > -EOT > - > -$SMALL_RULE = ''; > -$BODYTEXT = ''; > - > -$print_page_foot = \&FFmpeg_print_page_foot; > -sub FFmpeg_print_page_foot($$) > -{ > - my $fh = shift; > - my $program_string = defined &T2H_DEFAULT_program_string ? > - T2H_DEFAULT_program_string() : program_string(); > - print $fh '<footer class="footer pagination-right">' . "\n"; > - print $fh '<span class="label label-info">' . $program_string; > - print $fh "</span></footer></div></div></body>\n"; > -} > - > -$float = \&FFmpeg_float; > - > -sub FFmpeg_float($$$$) > -{ > - my $text = shift; > - my $float = shift; > - my $caption = shift; > - my $shortcaption = shift; > - > - my $label = ''; > - if (exists($float->{'id'})) > - { > - $label = &$anchor($float->{'id'}); > - } > - my $class = ''; > - my $subject = ''; > - > - if ($caption =~ /NOTE/) > - { > - $class = "alert alert-info"; > - } > - elsif ($caption =~ /IMPORTANT/) > - { > - $class = "alert alert-warning"; > - } > - > - return '<div class="float ' . $class . '">' . "$label\n" . $text . > '</div>'; > -} > - > -$print_page_head = \&FFmpeg_print_page_head; > -sub FFmpeg_print_page_head($$) > -{ > - my $fh = shift; > - my $longtitle = "$Texi2HTML::THISDOC{'fulltitle_no_texi'}"; > - $longtitle .= ": $Texi2HTML::NO_TEXI{'This'}" if exists > $Texi2HTML::NO_TEXI{'This'}; > - my $description = $DOCUMENT_DESCRIPTION; > - $description = $longtitle if (!defined($description)); > - $description = "<meta name=\"description\" content=\"$description\">" if > - ($description ne ''); > - $description = $Texi2HTML::THISDOC{'documentdescription'} if > (defined($Texi2HTML::THISDOC{'documentdescription'})); > - my $encoding = ''; > - $encoding = "<meta http-equiv=\"Content-Type\" content=\"text/html; > charset=$ENCODING\">" if (defined($ENCODING) and ($ENCODING ne '')); > - $longtitle =~ s/Documentation.*//g; > - $longtitle = "FFmpeg documentation : " . $longtitle; > - > - print $fh <<EOT; > -$TEMPLATE_HEADER1 > -$description > -<meta name="keywords" content="$longtitle"> > -<meta name="Generator" content="$Texi2HTML::THISDOC{program}"> > -$Texi2HTML::THISDOC{'copying'}<!-- Created on $Texi2HTML::THISDOC{today} by > $Texi2HTML::THISDOC{program} --> > -<!-- > -$Texi2HTML::THISDOC{program_authors} > ---> > -$encoding > -$TEMPLATE_HEADER2 > -EOT > -} > - > -$print_page_foot = \&FFmpeg_print_page_foot; > -sub FFmpeg_print_page_foot($$) > -{ > - my $fh = shift; > - print $fh <<EOT; > -$TEMPLATE_FOOTER > -EOT > -} > - > -# declare encoding in header > -$IN_ENCODING = $ENCODING = "utf-8"; > - > -# no navigation elements > -$SECTION_NAVIGATION = 0; > -# the same for texi2html 5.0 > -$HEADERS = 0; > - > -# TOC and Chapter headings link > -$TOC_LINKS = 1; > - > -# print the TOC where @contents is used > -$INLINE_CONTENTS = 1; > diff --git a/doc/t2h.pm b/doc/t2h.pm > new file mode 100644 > index 0000000..923e062 > --- /dev/null > +++ b/doc/t2h.pm > @@ -0,0 +1,220 @@ > +# makeinfo HTML output init file > +# > +# Copyright (c) 2011, 2012 Free Software Foundation, Inc. > +# Copyright (c) 2014 Andreas Cadhalpun > +# Copyright (c) 2014 Tiancheng "Timothy" Gu > +# > +# This file is part of FFmpeg. > +# > +# FFmpeg 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. > +# > +# FFmpeg 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 > +# Lesser General Public License for more details. > +# > +# You should have received a copy of the GNU Lesser General Public > +# License along with FFmpeg; if not, write to the Free Software > +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > + > +# no navigation elements > +set_from_init_file('HEADERS', 0); > + > +# TOC and Chapter headings link > +set_from_init_file('TOC_LINKS', 1); > + > +# print the TOC where @contents is used > +set_from_init_file('INLINE_CONTENTS', 1); > + > +# make chapters <h2> > +set_from_init_file('CHAPTER_HEADER_LEVEL', 2); > + > +# Do not add <hr> > +set_from_init_file('DEFAULT_RULE', ''); > +set_from_init_file('BIG_RULE', ''); > + > +# Customized file beginning > +sub ffmpeg_begin_file($$$) > +{ > + my $self = shift; > + my $filename = shift; > + my $element = shift; > + > + my $command; > + if ($element and $self->get_conf('SPLIT')) { > + $command = $self->element_command($element); > + } > + > + my ($title, $description, $encoding, $date, $css_lines, > + $doctype, $bodytext, $copying_comment, $after_body_open, > + $extra_head, $program_and_version, $program_homepage, > + $program, $generator) = $self->_file_header_informations($command); > + > + my $links = $self->_get_links ($filename, $element); > + > + my $head1 = $ENV{"FFMPEG_HEADER1"} || <<EOT; > +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > "http://www.w3.org/TR/html4/loose.dtd"> > +<html> > +<!-- Created by $program_and_version, $program_homepage --> > + <head> > + <meta charset="utf-8"> > + <title> > +EOT > + my $head_title = <<EOT; > + $title > +EOT > + > + my $head2 = $ENV{"FFMPEG_HEADER2"} || <<EOT; > + </title> > + <link rel="stylesheet" type="text/css" href="style.min.css"> > + </head> > + <body> > + <div style="width: 95%; margin: auto"> > + <h1> > +EOT > + > + my $head3 = $ENV{"FFMPEG_HEADER3"} || <<EOT; > + </h1> > +EOT > + > + return $head1 . $head_title . $head2 . $head_title . $head3; > +} > +texinfo_register_formatting_function('begin_file', \&ffmpeg_begin_file); > + > +# Customized file ending > +sub ffmpeg_end_file($) > +{ > + my $self = shift; > + my $program_string = &{$self->{'format_program_string'}}($self); > + my $program_text = <<EOT; > + <p style="font-size: small;"> > + $program_string > + </p> > +EOT > + my $footer = $ENV{FFMPEG_FOOTER} || <<EOT; > + </div> > + </body> > +</html> > +EOT > + return $program_text . $footer; > +} > +texinfo_register_formatting_function('end_file', \&ffmpeg_end_file); > + > +# Dummy title command > +# Ignore title. Title is handled through ffmpeg_begin_file(). > +set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1); > +sub ffmpeg_title($$$$) > +{ > + return ''; > +} > + > +texinfo_register_command_formatting('titlefont', > + \&ffmpeg_title); > + > +# Customized float command. Part of code borrowed from GNU Texinfo. > +sub ffmpeg_float($$$$$) > +{ > + my $self = shift; > + my $cmdname = shift; > + my $command = shift; > + my $args = shift; > + my $content = shift; > + > + my ($caption, $prepended) = Texinfo::Common::float_name_caption($self, > + $command); > + my $caption_text = ''; > + my $prepended_text; > + my $prepended_save = ''; > + > + if ($self->in_string()) { > + if ($prepended) { > + $prepended_text = $self->convert_tree_new_formatting_context( > + $prepended, 'float prepended'); > + } else { > + $prepended_text = ''; > + } > + if ($caption) { > + $caption_text = $self->convert_tree_new_formatting_context( > + {'contents' => $caption->{'args'}->[0]->{'contents'}}, > + 'float caption'); > + } > + return $prepended.$content.$caption_text; > + } > + > + my $id = $self->command_id($command); > + my $label; > + if (defined($id) and $id ne '') { > + $label = "<a name=\"$id\"></a>"; > + } else { > + $label = ''; > + } > + > + if ($prepended) { > + if ($caption) { > + # prepend the prepended tree to the first paragraph > + my @caption_original_contents = > @{$caption->{'args'}->[0]->{'contents'}}; > + my @caption_contents; > + my $new_paragraph; > + while (@caption_original_contents) { > + my $content = shift @caption_original_contents; > + if ($content->{'type'} and $content->{'type'} eq > 'paragraph') { > + %{$new_paragraph} = %{$content}; > + $new_paragraph->{'contents'} = > [@{$content->{'contents'}}]; > + unshift (@{$new_paragraph->{'contents'}}, {'cmdname' => > 'strong', > + 'args' => [{'type' => 'brace_command_arg', > + 'contents' => > [$prepended]}]}); > + push @caption_contents, $new_paragraph; > + last; > + } else { > + push @caption_contents, $content; > + } > + } > + push @caption_contents, @caption_original_contents; > + if ($new_paragraph) { > + $caption_text = $self->convert_tree_new_formatting_context( > + {'contents' => \@caption_contents}, 'float caption'); > + $prepended_text = ''; > + } > + } > + if ($caption_text eq '') { > + $prepended_text = $self->convert_tree_new_formatting_context( > + $prepended, 'float prepended'); > + if ($prepended_text ne '') { > + $prepended_save = $prepended_text; > + $prepended_text = > '<p><strong>'.$prepended_text.'</strong></p>'; > + } > + } > + } else { > + $prepended_text = ''; > + } > + > + if ($caption and $caption_text eq '') { > + $caption_text = $self->convert_tree_new_formatting_context( > + $caption->{'args'}->[0], 'float caption'); > + } > + if ($prepended_text.$caption_text ne '') { > + $prepended_text = $self->_attribute_class('div','float-caption'). '>' > + . $prepended_text; > + $caption_text .= '</div>'; > + } > + my $html_class = ''; > + if ($prepended_save =~ /NOTE/) { > + $html_class = 'info'; > + $prepended_text = ''; > + $caption_text = ''; > + } elsif ($prepended_save =~ /IMPORTANT/) { > + $html_class = 'warning'; > + $prepended_text = ''; > + $caption_text = ''; > + } > + return $self->_attribute_class('div', $html_class). '>' . "\n" . > + $prepended_text . $caption_text . $content . '</div>'; > +} > + > +texinfo_register_command_formatting('float', > + \&ffmpeg_float); > + > +1; > \ No newline at end of file > -- > 1.9.1 > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel