https://bugzilla.redhat.com/show_bug.cgi?id=1084399
Bug ID: 1084399 Summary: t/comp/parser.t loads modules from system instead from build directory Product: Fedora Version: rawhide Component: perl Assignee: jplesnik@redhat.com Reporter: ppisar@redhat.com QA Contact: extras-qa@fedoraproject.org CC: cweyl@alumni.drew.edu, iarnell@gmail.com, jplesnik@redhat.com, kasal@ucw.cz, perl-devel@lists.fedoraproject.org, ppisar@redhat.com, psabata@redhat.com, rc040203@freenet.de, tcallawa@redhat.com
perl-5.18.2-296.fc21 loads modules from system instead from build directory at some tests. E.g. t/comp/parser.t:
$ LD_PRELOAD=../libperl.so strace -fq -eopen,execve ./perl harness comp/parser.t 2>&1 |grep '"/usr/lib64/perl5/' [pid 13545] open("/usr/lib64/perl5/re.pm", O_RDONLY) = 5 [pid 13545] open("/usr/lib64/perl5/auto/re/re.so", O_RDONLY|O_CLOEXEC) = 5
This is caused by a bug in t/TEST where _cmd() functions forgets to emit "-I" arguments if requested. The _cmd() is called with:
$VAR1 = { 'return_dir' => undef, 'testswitch' => '', 'perl' => './perl', 'file' => '', 'utf8' => '', 'lib' => '../lib', 'run_dir' => undef, 'switch' => '', 'test' => 'comp/parser.t' }; $VAR2 = 'perl';
but it returns:
$VAR1 = './perl comp/parser.t ';
while it should return:
$VAR1 = './perl -I../lib comp/parser.t ';
The fix is to change line:
$cmd = $perl . _quote_args($args) . " $test $redir";
into: my $lib = ($options->{lib} eq '') ? '' : " -I$options->{lib}"; $cmd = $perl . $lib . _quote_args($args) . " $test $redir";