view release on metacpan or search on metacpan
lib/Devel/PatchPerl.pm view on Meta::CPAN
{
my($patch) = @_;
my %mode;
for my $file ($patch =~ /^\+{3}\s+(\S+)/gm) {
print "patching $file\n";
# some filesystems (e.g., Lustre) will kill this process if there
# is an attempt to write to a file that is 0444, so make these
# files writable for the duration of the patch
if (-r $file and not -w _) {
my $mode = (stat $file)[2];
$mode{$file} = $mode; # save for chmod back
chmod $mode | 0200, $file;
}
}
my $diff = 'tmp.diff';
_write_or_die($diff, $patch);
die "No patch utility found\n" unless $patch_exe;
local $ENV{PATCH_GET} = 0; # I can't reproduce this at all, but meh.
_run_or_die("$patch_exe -f -s -p0 <$diff");
unlink $diff or die "unlink $diff: $!\n";
# put back ro to 0444
for my $file (sort keys %mode) {
chmod $mode{$file}, $file;
}
}
sub _write_b64_or_die {
my($file, $base64) = @_;
my $data = decode_base64($base64);
_write_or_die($file, $data);
}
sub _write_or_die
lib/Devel/PatchPerl.pm view on Meta::CPAN
sub _patch_hints {
my @os;
push @os, $^O;
push @os, 'linux' if $^O eq 'gnukfreebsd'; # kfreebsd uses linux hints
foreach my $os ( @os ) {
return unless my ($file,$data) = hint_file( $os );
my $path = File::Spec->catfile( 'hints', $file );
warn "Patching '$path'\n";
if ( -e $path ) {
chmod 0644, $path or die "$!\n";
}
open my $fh, '>', $path or die "$!\n";
print $fh $data;
close $fh;
}
return 1;
}
sub _patch_db
{
lib/Devel/PatchPerl.pm view on Meta::CPAN
$cp $mf $mf.old
$rm -f $mf
$cp $mf.new $mf
$rm $mf.new
$echo "# WARNING: Put nothing here or make depend will gobble it up!" >> $mf
$rm -rf .deptmp UU .clist .hlist .hsed .cout .cerr
rmdir .depending
!NO!SUBS!
$eunicefix makedepend
chmod +x makedepend
END
}
sub _patch_5_005_02 {
_patch(<<'END');
--- Configure
+++ Configure
@@ -21,7 +21,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
lib/Devel/PatchPerl.pm view on Meta::CPAN
osvers="$3" ;;
@@ -3442,7 +3445,11 @@ cat <<'EOT' >testcpp.c
ABC.XYZ
EOT
cd ..
+if test ! -f cppstdin; then
echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+else
+ echo "Keeping your $hint cppstdin wrapper."
+fi
chmod 755 cppstdin
wrapper=`pwd`/cppstdin
ok='false'
@@ -3693,7 +3700,8 @@ case "$libswanted" in
esac
for thislib in $libswanted; do
- if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+ if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
+ $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
echo "Found -l$thislib (shared)."
lib/Devel/PatchPerl.pm view on Meta::CPAN
END { printf "0\n" }' signal.lst`
- sig_num=`$awk 'BEGIN { printf "0, " }
+ sig_num=`$awk '{printf "%d ", $2}' signal.lst`
+ sig_num="0 $sig_num"
+ sig_num_init=`$awk 'BEGIN { printf "0, " }
{ printf "%d, ", $2}
END { printf "0\n"}' signal.lst`
;;
@@ -10830,7 +10983,13 @@ $rm -f try.c
EOS
chmod +x ccsym
$eunicefix ccsym
-./ccsym | $sort | $uniq >ccsym.raw
+./ccsym > ccsym1.raw
+if $test -s ccsym1.raw; then
+ $sort ccsym1.raw | $uniq >ccsym.raw
+else
+ mv ccsym1.raw ccsym.raw
+fi
+
$awk '/\=/ { print $0; next }
lib/Devel/PatchPerl.pm view on Meta::CPAN
-$define)
- xxx=''
- echo "This is an EBCDIC system, checking if any parser files need regenerating." >&4
- rm -f y.tab.c y.tab.h
- yacc -d perly.y >/dev/null 2>&1
- if cmp -s y.tab.c perly.c; then
- rm -f y.tab.c
- else
- echo "perly.y -> perly.c" >&4
- mv -f y.tab.c perly.c
- chmod u+w perly.c
- sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
- -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c
- xxx="$xxx perly.c"
- fi
- if cmp -s y.tab.h perly.h; then
- rm -f y.tab.h
- else
- echo "perly.y -> perly.h" >&4
- mv -f y.tab.h perly.h
- xxx="$xxx perly.h"
lib/Devel/PatchPerl.pm view on Meta::CPAN
- echo "x2p/a2p.y" >&4
- cd x2p
- rm -f y.tab.c
- yacc a2p.y >/dev/null 2>&1
- if cmp -s y.tab.c a2p.c
- then
- rm -f y.tab.c
- else
- echo "a2p.y -> a2p.c" >&4
- mv -f y.tab.c a2p.c
- chmod u+w a2p.c
- sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
- -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp && mv a2p.tmp a2p.c
- xxx="$xxx a2p.c"
- fi
- cd ..
- case "$xxx" in
- '') echo "No parser files were regenerated. That's okay." >&4 ;;
- esac
- ;;
-esac
lib/Devel/PatchPerl.pm view on Meta::CPAN
+ echo "This is an EBCDIC system, checking if any parser files need regenerating." >&4
+case "$osname" in
+os390)
+ rm -f y.tab.c y.tab.h
+ yacc -d perly.y >/dev/null 2>&1
+ if cmp -s y.tab.c perly.c; then
+ rm -f y.tab.c
+ else
+ echo "perly.y -> perly.c" >&2
+ mv -f y.tab.c perly.c
+ chmod u+w perly.c
+ sed -e '/^#include "perl\.h"/a\
+\
+#define yydebug PL_yydebug\
+#define yynerrs PL_yynerrs\
+#define yyerrflag PL_yyerrflag\
+#define yychar PL_yychar\
+#define yyval PL_yyval\
+#define yylval PL_yylval' \
+ -e '/YYSTYPE *yyval;/D' \
+ -e '/YYSTYPE *yylval;/D' \
lib/Devel/PatchPerl.pm view on Meta::CPAN
+ if cd x2p
+ then
+ rm -f y.tab.c y.tab.h
+ yacc a2p.y >/dev/null 2>&1
+ if cmp -s y.tab.c a2p.c
+ then
+ rm -f y.tab.c
+ else
+ echo "a2p.y -> a2p.c" >&2
+ mv -f y.tab.c a2p.c
+ chmod u+w a2p.c
+ sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
+ -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp && mv a2p.tmp a2p.c
+ xxx="$xxx a2p.c"
+ fi
+ # In case somebody yacc -d:ed the a2p.y.
+ if test -f y.tab.h
+ then
+ if cmp -s y.tab.h a2p.h
+ then
+ rm -f y.tab.h
lib/Devel/PatchPerl.pm view on Meta::CPAN
osvers="$3" ;;
@@ -3454,7 +3457,11 @@ cat <<'EOT' >testcpp.c
ABC.XYZ
EOT
cd ..
+if test ! -f cppstdin; then
echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+else
+ echo "Keeping your $hint cppstdin wrapper."
+fi
chmod 755 cppstdin
wrapper=`pwd`/cppstdin
ok='false'
@@ -3705,7 +3712,8 @@ case "$libswanted" in
esac
for thislib in $libswanted; do
- if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+ if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
+ $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
echo "Found -l$thislib (shared)."
lib/Devel/PatchPerl.pm view on Meta::CPAN
END { printf "0\n" }' signal.lst`
- sig_num=`$awk 'BEGIN { printf "0, " }
+ sig_num=`$awk '{printf "%d ", $2}' signal.lst`
+ sig_num="0 $sig_num"
+ sig_num_init=`$awk 'BEGIN { printf "0, " }
{ printf "%d, ", $2}
END { printf "0\n"}' signal.lst`
;;
@@ -10787,7 +11001,13 @@ $rm -f try.c
EOS
chmod +x ccsym
$eunicefix ccsym
-./ccsym | $sort | $uniq >ccsym.raw
+./ccsym > ccsym1.raw
+if $test -s ccsym1.raw; then
+ $sort ccsym1.raw | $uniq >ccsym.raw
+else
+ mv ccsym1.raw ccsym.raw
+fi
+
$awk '/\=/ { print $0; next }
lib/Devel/PatchPerl.pm view on Meta::CPAN
+ echo "This is an EBCDIC system, checking if any parser files need regenerating." >&4
+case "$osname" in
+os390)
+ rm -f y.tab.c y.tab.h
+ yacc -d perly.y >/dev/null 2>&1
+ if cmp -s y.tab.c perly.c; then
+ rm -f y.tab.c
+ else
+ echo "perly.y -> perly.c" >&2
+ mv -f y.tab.c perly.c
+ chmod u+w perly.c
+ sed -e '/^#include "perl\.h"/a\
+\
+#define yydebug PL_yydebug\
+#define yynerrs PL_yynerrs\
+#define yyerrflag PL_yyerrflag\
+#define yychar PL_yychar\
+#define yyval PL_yyval\
+#define yylval PL_yylval' \
+ -e '/YYSTYPE *yyval;/D' \
+ -e '/YYSTYPE *yylval;/D' \
lib/Devel/PatchPerl.pm view on Meta::CPAN
+ if cd x2p
+ then
+ rm -f y.tab.c y.tab.h
+ yacc a2p.y >/dev/null 2>&1
+ if cmp -s y.tab.c a2p.c
+ then
+ rm -f y.tab.c
+ else
+ echo "a2p.y -> a2p.c" >&2
+ mv -f y.tab.c a2p.c
+ chmod u+w a2p.c
+ sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
+ -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp && mv a2p.tmp a2p.c
+ xxx="$xxx a2p.c"
+ fi
+ # In case somebody yacc -d:ed the a2p.y.
+ if test -f y.tab.h
+ then
+ if cmp -s y.tab.h a2p.h
+ then
+ rm -f y.tab.h
lib/Devel/PatchPerl.pm view on Meta::CPAN
osvers="$3" ;;
@@ -3454,7 +3457,11 @@ cat <<'EOT' >testcpp.c
ABC.XYZ
EOT
cd ..
+if test ! -f cppstdin; then
echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+else
+ echo "Keeping your $hint cppstdin wrapper."
+fi
chmod 755 cppstdin
wrapper=`pwd`/cppstdin
ok='false'
@@ -3705,7 +3712,8 @@ case "$libswanted" in
esac
for thislib in $libswanted; do
- if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+ if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
+ $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
echo "Found -l$thislib (shared)."
lib/Devel/PatchPerl.pm view on Meta::CPAN
END { printf "0\n" }' signal.lst`
- sig_num=`$awk 'BEGIN { printf "0, " }
+ sig_num=`$awk '{printf "%d ", $2}' signal.lst`
+ sig_num="0 $sig_num"
+ sig_num_init=`$awk 'BEGIN { printf "0, " }
{ printf "%d, ", $2}
END { printf "0\n"}' signal.lst`
;;
@@ -10787,7 +11001,13 @@ $rm -f try.c
EOS
chmod +x ccsym
$eunicefix ccsym
-./ccsym | $sort | $uniq >ccsym.raw
+./ccsym > ccsym1.raw
+if $test -s ccsym1.raw; then
+ $sort ccsym1.raw | $uniq >ccsym.raw
+else
+ mv ccsym1.raw ccsym.raw
+fi
+
$awk '/\=/ { print $0; next }
lib/Devel/PatchPerl.pm view on Meta::CPAN
+ echo "This is an EBCDIC system, checking if any parser files need regenerating." >&4
+case "$osname" in
+os390)
+ rm -f y.tab.c y.tab.h
+ yacc -d perly.y >/dev/null 2>&1
+ if cmp -s y.tab.c perly.c; then
+ rm -f y.tab.c
+ else
+ echo "perly.y -> perly.c" >&2
+ mv -f y.tab.c perly.c
+ chmod u+w perly.c
+ sed -e '/^#include "perl\.h"/a\
+\
+#define yydebug PL_yydebug\
+#define yynerrs PL_yynerrs\
+#define yyerrflag PL_yyerrflag\
+#define yychar PL_yychar\
+#define yyval PL_yyval\
+#define yylval PL_yylval' \
+ -e '/YYSTYPE *yyval;/D' \
+ -e '/YYSTYPE *yylval;/D' \
lib/Devel/PatchPerl.pm view on Meta::CPAN
+ if cd x2p
+ then
+ rm -f y.tab.c y.tab.h
+ yacc a2p.y >/dev/null 2>&1
+ if cmp -s y.tab.c a2p.c
+ then
+ rm -f y.tab.c
+ else
+ echo "a2p.y -> a2p.c" >&2
+ mv -f y.tab.c a2p.c
+ chmod u+w a2p.c
+ sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
+ -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp && mv a2p.tmp a2p.c
+ xxx="$xxx a2p.c"
+ fi
+ # In case somebody yacc -d:ed the a2p.y.
+ if test -f y.tab.h
+ then
+ if cmp -s y.tab.h a2p.h
+ then
+ rm -f y.tab.h
lib/Devel/PatchPerl.pm view on Meta::CPAN
aCIKLSNlbmRpZgorI2luY2x1ZGUgInBwcG9ydC5oIgogCiAvKiBNZW50aW9uIERCX1ZFUlNJT05f
TUFKT1JfQ0ZHLCBEQl9WRVJTSU9OX01JTk9SX0NGRywgYW5kCiAgICBEQl9WRVJTSU9OX1BBVENI
X0NGRyBoZXJlIHNvIHRoYXQgQ29uZmlndXJlIHB1bGxzIHRoZW0gYWxsIGluLiAqLwo=
DBFILE002
# Overwrite ext/DB_File/Makefile.PL
{
my $file = File::Spec->catfile('ext','DB_File','Makefile.PL');
my $mode;
if (-r $file and not -w _) {
$mode = (stat $file)[2];
chmod $mode | 0200, $file;
}
_write_b64_or_die($file,<<'DBFILE003');
IyEgcGVybCAtdwoKdXNlIHN0cmljdCA7CnVzZSBFeHRVdGlsczo6TWFrZU1ha2VyIDUuMTYgOwp1
c2UgQ29uZmlnIDsKCmRpZSAiREJfRmlsZSBuZWVkcyBQZXJsIDUuMDA0XzA1IG9yIGJldHRlci4g
VGhpcyBpcyAkXVxuIiAKICAgIGlmICRdIDw9IDUuMDA0MDQ7IAoKbXkgJFZFUl9JTkZPIDsKbXkg
JExJQl9ESVIgOwpteSAkSU5DX0RJUiA7Cm15ICREQl9OQU1FIDsKbXkgJExJQlMgOwpteSAkQ09N
UEFUMTg1ID0gIiIgOwoKUGFyc2VDT05GSUcoKSA7CgpteSBAZmlsZXMgPSAoJ0RCX0ZpbGUucG0n
LCBnbG9iICJ0LyoudCIpIDsKVXBEb3duZ3JhZGUoQGZpbGVzKTsKCmlmIChkZWZpbmVkICREQl9O
QU1FKQogIHsgJExJQlMgPSAkREJfTkFNRSB9CmVsc2UgewogICAgaWYgKCReTyBlcSAnTVNXaW4z
MicpCiAgICAgIHsgJExJQlMgPSAkQ29uZmlne2NjfSA9fiAvZ2NjLyA/ICctbGRiJyA6ICctbGxp
lib/Devel/PatchPerl.pm view on Meta::CPAN
ICAgICAgICBteSAkdmFycyA9IGpvaW4gJywgJywgc3BsaXQgJyAnLCAkMjsKICAgICAgICAgICAg
ICAgICRfID0gIiR7aW5kZW50fW91ciAoJHZhcnMpO1xuIjsKICAgICAgICAgICAgfQogICAgICAg
ICAgfTsKICAgIH0KCiAgICBmb3JlYWNoIChAZmlsZXMpCiAgICAgIHsgZG9VcERvd24oJG91cl9z
dWIsICR3YXJuX3N1YiwgJF8pIH0KfQoKCnN1YiBkb1VwRG93bgp7CiAgICBteSAkb3VyX3N1YiA9
IHNoaWZ0OwogICAgbXkgJHdhcm5fc3ViID0gc2hpZnQ7CgogICAgbG9jYWwgKCReSSkgPSAiLmJh
ayIgOwogICAgbG9jYWwgKEBBUkdWKSA9IHNoaWZ0OwoKICAgIHdoaWxlICg8PikKICAgIHsKCXBy
aW50LCBsYXN0IGlmIC9eX18oRU5EfERBVEEpX18vIDsKCgkmeyAkb3VyX3N1YiB9KCk7CgkmeyAk
d2Fybl9zdWIgfSgpOwoJcHJpbnQgOwogICAgfQoKICAgIHJldHVybiBpZiBlb2YgOwoKICAgIHdo
aWxlICg8PikKICAgICAgeyBwcmludCB9Cn0KCiMgZW5kIG9mIGZpbGUgTWFrZWZpbGUuUEwK
DBFILE003
chmod $mode, $file if $mode;
}
# Create ext/DB_File/config.in
{
my $file = File::Spec->catfile('ext','DB_File','config.in');
_write_b64_or_die($file,<<'DBFILE004');
IyBGaWxlbmFtZToJY29uZmlnLmluCiMKIyB3cml0dGVuIGJ5IFBhdWwgTWFycXVlc3MgPFBhdWwu
TWFycXVlc3NAYnRpbnRlcm5ldC5jb20+CiMgbGFzdCBtb2RpZmllZCA5dGggU2VwdCAxOTk3CiMg
dmVyc2lvbiAxLjU1CgojIDEuIFdoZXJlIGlzIHRoZSBmaWxlIGRiLmg/CiMKIyAgICBDaGFuZ2Ug
dGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBkYi5oIGlzCiMg
ICAgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLgoKSU5DTFVERQk9IC91c3IvbG9jYWwvQmVya2Vs
lib/Devel/PatchPerl.pm view on Meta::CPAN
!NO!SUBS!
diff --git a/installperl b/installperl
index 3bf79d2d6fc..6cd65a09238 100755
--- installperl
+++ installperl
@@ -304,6 +304,7 @@ elsif ($^O ne 'dos') {
safe_unlink("$installbin/$perl_verbase$ver$exe_ext");
copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext");
strip("$installbin/$perl_verbase$ver$exe_ext");
+ fix_dep_names("$installbin/$perl_verbase$ver$exe_ext");
chmod(0755, "$installbin/$perl_verbase$ver$exe_ext");
}
else {
@@ -388,6 +389,7 @@ foreach my $file (@corefiles) {
if (copy_if_diff($file,"$installarchlib/CORE/$file")) {
if ($file =~ /\.(\Q$so\E|\Q$dlext\E)$/) {
strip("-S", "$installarchlib/CORE/$file") if $^O eq 'darwin';
+ fix_dep_names("$installarchlib/CORE/$file");
chmod($SO_MODE, "$installarchlib/CORE/$file");
} else {
chmod($NON_SO_MODE, "$installarchlib/CORE/$file");
@@ -791,4 +793,27 @@ sub strip
}
}
+sub fix_dep_names {
+ my $file = shift;
+
+ $^O eq "darwin" && $Config{osvers} =~ /^(1[5-9]|[2-9])/
+ && $Config{useshrplib}
+ or return;
lib/Devel/PatchPerl/Hints.pm view on Meta::CPAN
=head1 VERSION
version 2.14
=head1 SYNOPSIS
use Devel::PatchPerl::Hints;
if ( my $content = Devel::PatchPerl::Hints->hint_file() ) {
chmod 0644, 'hints/netbsd.sh' or die "$!";
open my $hints, '>', 'hints/netbsd.sh' or die "$!";
print $hints $content;
close $hints;
}
# Get a list of OS for which we have hints
my @os = Devel::PatchPerl::Hints->hints();
=head1 DESCRIPTION