The following reply was made to PR pkg/32812; it has been noted by GNATS.
From: Anne Bennett <anne@porcupine.montreal.qc.ca>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: pkg/32812: Perl broken in 2005Q4: open with shell metas fails
Date: Mon, 13 Feb 2006 18:40:56 -0500
>>> Synopsis: Perl broken in 2005Q4: open with shell metas fails
>
> Here's some additional information. [...] there seem to be quite a few
> differences between the two, but the most striking ones are that
> mine did not use threads, nor does it have the SPRINTF0 patch. I
> wonder if this is somehow thread-related.
Further notes:
I tried a "make test", and one test fails (results appended), but
that seems to be a red herring. That is, I can cause "make test"
to succeed by commenting these three lines out of the Makefile:
PATCHFILES= sprintf-5.8.7.patch
PATCH_SITES= ${MASTER_SITE_PERL_CPAN:=../../authors/id/N/NW/NWCLARK/}
PATCH_DIST_STRIP= -p1
... but this has no effect on my little test, so the vendor patch
is not the cause of the shell metacharacter problem.
I tried very hard to make a version without thread support, but I
could not figure out how to do this (I tried setting PKG_OPTIONS.perl
in /etc/mk.conf, but I can't find the right setting to turn threads
off). During the course of this, I sometimes got versions that
passed my "minitest". At the moment, it looks as though the
newly-installed perl works until I do "make clean" in the source
tree, and then it starts failing. There must be some unexpected
dependency, or I'm not testing properly. I'll have to try to trace it.
I'll keep you posted if I find anything useful.
Anne.
--
Ms. Anne Bennett, as a private citizen: anne@porcupine.montreal.qc.ca
Also reachable more officially at work: anne@encs.concordia.ca
----------------------------------------------------------------------
lib/warnings..............................PROG:
# sv.c
use warnings 'printf' ;
open F, ">".($^O eq 'VMS'? 'NL:' : '/dev/null') ;
printf F "%z\n" ;
my $a = sprintf "%z" ;
printf F "%" ;
$a = sprintf "%" ;
printf F "%\x02" ;
$a = sprintf "%\x02" ;
no warnings 'printf' ;
printf F "%z\n" ;
$a = sprintf "%z" ;
printf F "%" ;
$a = sprintf "%" ;
printf F "%\x02" ;
$a = sprintf "%\x02" ;
EXPECTED:
Invalid conversion in sprintf: "%z" at - line 5.
Invalid conversion in sprintf: end of string at - line 7.
Invalid conversion in sprintf: "%\002" at - line 9.
Invalid conversion in printf: "%z" at - line 4.
Invalid conversion in printf: end of string at - line 6.
Invalid conversion in printf: "%\002" at - line 8.
GOT:
Invalid conversion in printf: "%z" at - line 4.
Invalid conversion in sprintf: "%z" at - line 5.
Invalid conversion in printf: end of string at - line 6.
Invalid conversion in sprintf: end of string at - line 7.
Invalid conversion in printf: "%\002" at - line 8.
Invalid conversion in sprintf: "%\002" at - line 9.
# Failed at ../lib/warnings.t line 186
FAILED at test 443
----------------------------------------------------------------------