#!/usr/bin/perl
my
(
$fr
,
$fw
,
$s
);
open
$fr
,
"<"
,
"lib/B/C/Config.pm"
or
die
"lib/B/C/Config.pm does not exist $!"
;
while
(<
$fr
>) {
if
(/\
$have_byteloader
=
undef
;/) {
open
$fw
,
">"
,
"lib/B/C/Config.tmp"
or
die
"cannot write lib/B/C/Config.tmp $!"
;
my
$check
= probe_byteloader();
s/\
$have_byteloader
=
undef
;/\
$have_byteloader
=
$check
;/;
print
$fw
$s
;
}
if
(
$fw
) {
print
$fw
$_
;
}
else
{
$s
.=
$_
;
}
}
close
$fr
;
if
(
$fw
) {
close
$fw
;
unlink
"lib/B/C/Config.bak"
if
-e
"lib/B/C/Config.bak"
;
rename
"lib/B/C/Config.pm"
,
"lib/B/C/Config.bak"
;
rename
"lib/B/C/Config.tmp"
,
"lib/B/C/Config.pm"
;
}
sub
probe_byteloader {
my
$out
=
"probe.plc"
;
if
($] > 5.021) {
system
"$Config::Config{make} linkext"
;
}
system
"$^X -Mblib -MO=-qq,Bytecode,-H,-o$out -e\"print q(ok)\""
;
return
"0"
unless
-s
$out
;
my
$ret
= `$^X -Mblib
$out
`;
unlink
$out
;
if
(
$ret
ne
"ok"
) {
warn
"Warning: Broken perl5.22, unpatched for ByteLoader.\n"
.
" Try 'cpan App::perlall; perlall build 5.22.0 --patches=Compiler'\n"
.
" or try cperl\n"
;
return
"0"
;
}
return
"1"
;
}