Hi! On Wed, 2024-06-12 at 15:42:57 +0200, Guillem Jover wrote: > On Wed, 2024-06-12 at 10:36:52 +0200, Martin Quinson wrote: > > Le mercredi 12 juin 2024 à 04:47 +0200, Guillem Jover a écrit : > > > Package: po4a > > > Version: 0.70 > > > Severity: serious
> > Could you please do the following steps, please? > > > * Try whether the failure still happens with the latest po4a > > * Try whether the attached patch applied to the latest po4a helps > > * Tell me more details about how to reproduce the failure > > > > Thanks in advance, and sorry for the inconvenience. To me, this part of po4a > > code was not changed in years, so I need help to understand the issue. > > It looked like at least the initial regression was introduced in po4a > commit b2333d54845976f4804f024b5cea61db16fb4f36. Ah, and missed that the later error I got was precisely the one being emitted by that commit, which if you do not trigger then you'd not see the earlier undefined symbol errors. > > diff --git a/lib/Locale/Po4a/Pod.pm b/lib/Locale/Po4a/Pod.pm > > index 4b3dc042..bd3d5c1a 100644 > > --- a/lib/Locale/Po4a/Pod.pm > > +++ b/lib/Locale/Po4a/Pod.pm > > @@ -27,6 +27,8 @@ use vars qw(@ISA); > > > > use Carp qw(croak confess); > > > > +use Locale::Po4a::Common qw(dgettext); > > + > > sub initialize { } > > > > sub translate { > > I hot-edited this in my installed system and then got: > > ,--- > PO4A man.stamp > Undefined subroutine &Locale::Po4a::Pod::wrap_mod called at > /usr/share/perl5/Locale/Po4a/Pod.pm line 96, <$fh> line 21. > make[2]: *** [Makefile:902: man.stamp] Error 255 > `--- > > I then instead removed the import restrictions and simply added: > > ,--- > use Locale::Po4a::Common; > `--- > > That fixed that issue but then it fails with: > > ,--- > PO4A man.stamp > po4a::pod: The file deb-buildinfo.pod declares utf8 as encoding, but you > provided UTF-8 as master charset. Please change either setting. > at /usr/bin/po4a line 1663. > make[2]: *** [Makefile:902: man.stamp] Error 255 > `--- I think the charset comparison is too naive though, and does not cover for example any aliases listed in «man Encode::Supported». I think a better comparison logic could look like this: ,--- use Encode; my $enc_charset = Encode::find_encoding($charset); my $enc_master_charset = Encode::find_encoding($master_charset); say 'match' if $enc_charset->mime_name eq $enc_master_charset->mime_name; `--- Unfortunately neither Encode::find_encoding()->name nor Encode::resolve_alias() seem helpful here because they return "utf-8-strict" for "UTF-8" which will not match against "utf-8" for the canonical "utf8". I'm not sure whether lib/Locale/Po4a/Xml.pod might need a similar treatment, because that might depend on what encodings are supported in there, against what is supported in po4a I guess. Thanks, Guillem