On Mon, Nov 06, 2023 at 06:04:23PM +0000, Gavin Smith wrote:
> On Mon, Nov 06, 2023 at 12:21:40PM +0100, Arsen Arsenović wrote:
> > Thanks for the review, I've fixed those up.  I'll see about sending it
> > upstream in when I have enough time to thoroughly test.
> > 
> > Have a lovely day!
> 
> Thanks for working on this.  It seems to me that a customization API
> could easily break between releases and is a hard thing to maintain.

https://lists.gnu.org/archive/html/bug-texinfo/2023-11/msg00044.html

In this thread, we were discussing an ffmpeg build failure after Texinfo
7.1 was released.

Now, after the Texinfo 7.2 release, there has been a report from Slackware
users that the ffmpeg build is broken:

https://www.linuxquestions.org/questions/slackware-14/texinfo-7-2-looks-to-have-broken-texinfo-convert-html-4175745581/

    "texinfo-7.2 looks to have broken Texinfo::Convert::HTML"

    Seems I can no longer build ffmpeg on -current as the documentation step
    fails after the texinfo upgrade.

    Can't locate object method "gdt" via package "Texinfo::Convert::HTML" at 
./doc/t2h.pm line 255.
    make: *** [doc/Makefile:71: doc/ffmpeg.html] Error 25
    Can't locate object method "gdt" via package "Texinfo::Convert::HTML" at 
./doc/t2h.pm line 255.
    make: *** [doc/Makefile:71: doc/ffmpeg-scaler.html] Error 25
    Can't locate object method "gdt" via package "Texinfo::Convert::HTML" at 
./doc/t2h.pm line 255.
    make: *** [doc/Makefile:71: doc/ffmpeg-utils.html] Error 25
    Can't locate object method "gdt" via package "Texinfo::Convert::HTML" at 
./doc/t2h.pm line 255.
    make: *** [doc/Makefile:71: doc/ffmpeg-resampler.html] Error 25

    Downgrading to texinfo-7.1.1 restores working behaviour.

    Andrew.

The relevant code in the ffmpeg file t2h.pm seems to be:

sub ffmpeg_program_string($)
{
  my $self = shift;
  if (defined($self->get_conf('PROGRAM'))
      and $self->get_conf('PROGRAM') ne ''
      and defined($self->get_conf('PACKAGE_URL'))) {
    return $self->convert_tree(
      $self->gdt('This document was generated using @uref{{program_homepage}, 
@emph{{program}}}.',
         { 'program_homepage' => $self->get_conf('PACKAGE_URL'),
           'program' => $self->get_conf('PROGRAM') }));
  } else {
    return $self->convert_tree(
      $self->gdt('This document was generated automatically.'));
  }
}

Evidently the 'gdt' method is no longer defined on the class of $self.

I expect the 'gdt' issue would be easy to fix in this case, although
it is possible there would be other problems afterwards.

Such breakages seem inevitable as extension code could rely on many
details of internal texi2any code.  The new version of Texinfo is
then flagged as responsible for breaking compatibility.

This only stays manageable as long as the number of packages relying
on the Perl customization API stays low.

Reply via email to