On Sat, Jun 11, 2016 at 02:09:54AM +0200, gregor herrmann wrote: > Control: fixed -1 0.16-1 > Control: forwarded -1 https://rt.cpan.org/Public/Bug/Display.html?id=107221 > Control: tag -1 + upstream fixed-upstream patch > > On Sat, 11 Jun 2016 00:31:51 +0100, Dominic Hargreaves wrote: > > > Source: libcss-dom-perl > > Version: 0.15-1 > > Severity: serious > > Justification: FTBFS > > > > This package FTBFS on stable: > > > > # "utf-16" is encoded in UCS-2-LE but is not UCS-2-LE-based > > Can't call method "cssText" on an undefined value at t/charset.t line 144. > > # Looks like you planned 23 tests but ran 9. > > # Looks like your test exited with 2 just after 9. > > t/charset.t .......................... > > Dubious, test returned 2 (wstat 512, 0x200) > > Failed 14/23 subtests > > > > The full build log can be found here: > > > > http://perl.debian.net/rebuild-logs/jessie/libcss-dom-perl_0.15-1/libcss-dom-perl_0.15-1_amd64-20160610-0308.build > > Some quick tests show: > - 0.15-1 fails in stable, testing, and unstable chroots > - 0.16-1 passes in stable, testing, and unstable chroots > > The diff between 0.15 and 0.16 shows: > > +0.16 29 November, 2015 > + • Work around an incompatible change in Encode 2.77 (RT > + #107221, #107043). > > diff --git a/lib/CSS/DOM/Parser.pm b/lib/CSS/DOM/Parser.pm > index 7c2156e..8eb5c1d 100644 > --- a/lib/CSS/DOM/Parser.pm > +++ b/lib/CSS/DOM/Parser.pm > @@ -1,6 +1,6 @@ > package CSS::DOM::Parser; > > -$VERSION = '0.15'; > +$VERSION = '0.16'; > > use strict; use warnings; no warnings qw 'utf8 parenthesis'; > use re 'taint'; > @@ -578,7 +578,7 @@ sub _decode { my $at; for(''.shift) { > ) { > my $origenc = my $enc = Encode::decode('utf16le', $2); > my $dec = eval{Encode::decode($enc, $1, 9)}; > - defined $dec or $dec > + !defined $dec || $dec !~ /^\@/ and $dec > = eval{Encode::decode($enc.='-le', $1, 9)}; > if(defined $dec) { > $dec eq "\@charset \"$origenc\";" > @@ -638,7 +638,7 @@ sub _decode { my $at; for(''.shift) { > ) { > my $origenc = my $enc = Encode::decode('utf32le', $2); > my $dec = eval{Encode::decode($enc, $1, 9)}; > - defined $dec or $dec > + !defined $dec || $dec !~ /^\@/ and $dec > = eval{Encode::decode($enc.='-le', $1, 9)}; > if(defined $dec) { > $dec eq "\@charset \"$origenc\";" > > > With this change, the tests pass in stable. > (Unsurprisingly, since this is the only difference between 0.15 and 0.16.) > > > (What surprises me is how a fix for Encode 2.77 works, if perl 5.20.2 > ships Encode 2.60. And libencode-perl isn't installed; but that would > be 2.63 in stable.)
Right, but Encode in core is patched and that does indeed introduce the breakage in CSS::DOM: https://sources.debian.net/src/perl/5.20.2-3%2Bdeb8u5/debian/patches/fixes/encode-unicode-bom.diff/ https://rt.cpan.org/Ticket/Display.html?id=107043#txn-1563760 This appeared in 5.20.2-3+deb8u3 in January. The same patch is in the separate package: https://sources.debian.net/src/libencode-perl/2.63-1%2Bdeb8u1/debian/patches/dont-die-without-bom.patch/ which appeared in December. Dominic.