summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2002-05-17 06:56:40 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2002-05-17 06:56:40 +0000
commitd6240823f336ddd3e33fedd974418b05bff3ad24 (patch)
tree5e0540f60883dbc81ec4643883864d31c151e30f
parent0cff2cf3dc85787c2786f644ac6406c6b5148dad (diff)
parent9972c7afa298c7672cee8abcd659c49c40cda99b (diff)
downloadperl-d6240823f336ddd3e33fedd974418b05bff3ad24.tar.gz
Integrate mainline
p4raw-id: //depot/perlio@16645
-rwxr-xr-xConfigure7
-rw-r--r--MANIFEST2
-rw-r--r--README.dos2
-rw-r--r--djgpp/djgppsed.sh1
-rw-r--r--ext/Encode/Byte/Makefile.PL1
-rw-r--r--ext/Encode/CN/Makefile.PL1
-rw-r--r--ext/Encode/EBCDIC/Makefile.PL1
-rw-r--r--ext/Encode/JP/Makefile.PL1
-rw-r--r--ext/Encode/KR/Makefile.PL1
-rw-r--r--ext/Encode/Symbol/Makefile.PL1
-rw-r--r--ext/Encode/TW/Makefile.PL1
-rw-r--r--ext/PerlIO/t/fail.t15
-rw-r--r--ext/Socket/socketpair.t3
-rw-r--r--ext/Storable/MANIFEST2
-rw-r--r--ext/Storable/Storable.pm5
-rw-r--r--ext/Storable/Storable.xs8
-rw-r--r--ext/Storable/t/downgrade.t31
-rw-r--r--ext/Storable/t/make_downgrade.pl13
-rw-r--r--ext/Storable/t/st-dump.pl169
-rw-r--r--ext/Sys/Syslog/Syslog.pm5
-rwxr-xr-xext/threads/threads.xs2
-rw-r--r--hints/aix.sh28
-rw-r--r--hints/dec_osf.sh9
-rw-r--r--hints/hpux.sh2
-rw-r--r--hints/svr5.sh7
-rw-r--r--hints/vos.sh7
-rw-r--r--lib/File/stat.t1
-rw-r--r--lib/Pod/Html.pm8
-rw-r--r--lib/Pod/t/eol.t19
-rw-r--r--lib/Tie/File/t/21_win32.t2
-rw-r--r--pod/perldelta.pod22
-rw-r--r--pod/perlhack.pod10
-rw-r--r--t/lib/st-dump.pl5
-rw-r--r--t/op/alarm.t2
-rw-r--r--utf8.c9
-rw-r--r--win32/buildext.pl28
-rw-r--r--wince/FindExt.pm66
-rw-r--r--wince/Makefile.ce25
-rw-r--r--wince/config.ce2
-rw-r--r--wince/config_H.ce2
40 files changed, 364 insertions, 162 deletions
diff --git a/Configure b/Configure
index 31763593a5..fa59b5f42e 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Sat May 11 22:27:01 EET DST 2002 [metaconfig 3.0 PL70]
+# Generated on Thu May 16 17:03:39 EET DST 2002 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
@@ -1858,6 +1858,11 @@ if test X"$trnl" = X; then
esac
fi
if test X"$trnl" = X; then
+ case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
+ fooxy) trnl='\n\r' ;;
+ esac
+fi
+if test X"$trnl" = X; then
cat <<EOM >&2
$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
diff --git a/MANIFEST b/MANIFEST
index b907782a66..39cd432153 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -616,6 +616,7 @@ ext/Storable/t/overload.t See if Storable works
ext/Storable/t/recurse.t See if Storable works
ext/Storable/t/restrict.t See if Storable works
ext/Storable/t/retrieve.t See if Storable works
+ext/Storable/t/st-dump.pl See if Storable works
ext/Storable/t/store.t See if Storable works
ext/Storable/t/tied.t See if Storable works
ext/Storable/t/tied_hook.t See if Storable works
@@ -2753,7 +2754,6 @@ wince/config_H.ce WinCE port
wince/config_h.PL WinCE port
wince/config_sh.PL WinCE port
wince/dl_win32.xs WinCE port
-wince/FindExt.pm WinCE port
wince/include/arpa/inet.h WinCE port
wince/include/netdb.h WinCE port
wince/include/sys/socket.h WinCE port
diff --git a/README.dos b/README.dos
index 50dedd5428..564d54f482 100644
--- a/README.dos
+++ b/README.dos
@@ -103,7 +103,7 @@ sockets
=item *
-Unpack the source package F<perl5.6*.tar.gz> with djtarx. If you want
+Unpack the source package F<perl5.8*.tar.gz> with djtarx. If you want
to use long file names under w95 and also to get Perl to pass all its
tests, don't forget to use
diff --git a/djgpp/djgppsed.sh b/djgpp/djgppsed.sh
index 6401681dbd..02c4416966 100644
--- a/djgpp/djgppsed.sh
+++ b/djgpp/djgppsed.sh
@@ -46,3 +46,4 @@ sed -e $SPACKLIST lib/ExtUtils/Installed.pm >s; mv -f s lib/ExtUtils/Installed.p
sed -e $SPACKLIST lib/ExtUtils/Packlist.pm >s; mv -f s lib/ExtUtils/Packlist.pm
sed -e $SABC t/io/iprefix.t >s; mv -f s t/io/iprefix.t
sed -e 's=L_ctermid==g' ext/POSIX/Makefile.PL >s; mv -f s ext/POSIX/Makefile.PL
+sed -e $SPACKLIST lib/ExtUtils/t/Installed.t >s; mv -f s lib/ExtUtils/t/Installed.t
diff --git a/ext/Encode/Byte/Makefile.PL b/ext/Encode/Byte/Makefile.PL
index 5f67d8bd6c..3fe7345ead 100644
--- a/ext/Encode/Byte/Makefile.PL
+++ b/ext/Encode/Byte/Makefile.PL
@@ -172,6 +172,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q" -"O"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/Encode/CN/Makefile.PL b/ext/Encode/CN/Makefile.PL
index 775a8f5b38..1dd713a193 100644
--- a/ext/Encode/CN/Makefile.PL
+++ b/ext/Encode/CN/Makefile.PL
@@ -149,6 +149,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/Encode/EBCDIC/Makefile.PL b/ext/Encode/EBCDIC/Makefile.PL
index f2113fa738..73152ee2f9 100644
--- a/ext/Encode/EBCDIC/Makefile.PL
+++ b/ext/Encode/EBCDIC/Makefile.PL
@@ -130,6 +130,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q" -"O"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/Encode/JP/Makefile.PL b/ext/Encode/JP/Makefile.PL
index a1df35d169..b4a4ed0c4e 100644
--- a/ext/Encode/JP/Makefile.PL
+++ b/ext/Encode/JP/Makefile.PL
@@ -149,6 +149,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/Encode/KR/Makefile.PL b/ext/Encode/KR/Makefile.PL
index 4ba99ab82d..88fce2437a 100644
--- a/ext/Encode/KR/Makefile.PL
+++ b/ext/Encode/KR/Makefile.PL
@@ -147,6 +147,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/Encode/Symbol/Makefile.PL b/ext/Encode/Symbol/Makefile.PL
index a436b4d655..e1fa906e24 100644
--- a/ext/Encode/Symbol/Makefile.PL
+++ b/ext/Encode/Symbol/Makefile.PL
@@ -135,6 +135,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q" -"O"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/Encode/TW/Makefile.PL b/ext/Encode/TW/Makefile.PL
index 8f12a81aee..65cc22486e 100644
--- a/ext/Encode/TW/Makefile.PL
+++ b/ext/Encode/TW/Makefile.PL
@@ -145,6 +145,7 @@ sub postamble
}
}
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+ $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
my $ucopts = '-"Q"';
$str .=
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
diff --git a/ext/PerlIO/t/fail.t b/ext/PerlIO/t/fail.t
index 87d27642da..801793de80 100644
--- a/ext/PerlIO/t/fail.t
+++ b/ext/PerlIO/t/fail.t
@@ -5,7 +5,7 @@ BEGIN {
@INC = '../lib';
require "../t/test.pl";
skip_all("No perlio") unless (find PerlIO::Layer 'perlio');
- plan (16);
+ plan (15);
}
use warnings 'layer';
@@ -21,24 +21,27 @@ ok(open(FH,"<",$file),"Normal open works");
$warn = ''; $! = 0;
ok(!binmode(FH,":-)"),"All punctuation fails binmode");
-like($!,'Invalid',"Got errno");
+print "# $!\n";
+isnt($!,0,"Got errno");
like($warn,qr/in layer/,"Got warning");
$warn = ''; $! = 0;
ok(!binmode(FH,":nonesuch"),"Bad package fails binmode");
-like($!,'No such',"Got errno");
+print "# $!\n";
+isnt($!,0,"Got errno");
like($warn,qr/nonesuch/,"Got warning");
close(FH);
$warn = ''; $! = 0;
ok(!open(FH,"<:-)",$file),"All punctuation fails open");
-like($!,"Invalid","Got errno");
-like($warn,qr/in layer/,"Got warning");
+print "# $!\n";
isnt($!,"","Got errno");
+like($warn,qr/in layer/,"Got warning");
$warn = ''; $! = 0;
ok(!open(FH,"<:nonesuch",$file),"Bad package fails open");
-like($!,"No such","Got errno");
+print "# $!\n";
+isnt($!,0,"Got errno");
like($warn,qr/nonesuch/,"Got warning");
ok(open(FH,"<",$file),"Normal open (still) works");
diff --git a/ext/Socket/socketpair.t b/ext/Socket/socketpair.t
index c5b72e4d8c..be64dfb70c 100644
--- a/ext/Socket/socketpair.t
+++ b/ext/Socket/socketpair.t
@@ -117,8 +117,7 @@ ok (shutdown(LEFT, SHUT_WR), "shutdown left for writing");
{
local $SIG{ALRM} = sub { warn "EOF on right took over 3 seconds" };
local $TODO = "Known problems with unix sockets on $^O"
- if $^O eq 'hpux' || $^O eq 'unicosmk' ||
- $^O eq 'unicos' || $^O eq 'super-ux';
+ if $^O eq 'hpux' || $^O eq 'super-ux';
alarm 3;
$! = 0;
ok (eof RIGHT, "right is at EOF");
diff --git a/ext/Storable/MANIFEST b/ext/Storable/MANIFEST
index 1cdb74ca9e..f946927c87 100644
--- a/ext/Storable/MANIFEST
+++ b/ext/Storable/MANIFEST
@@ -19,10 +19,10 @@ t/overload.t See if Storable works
t/recurse.t See if Storable works
t/restrict.t See if Storable works
t/retrieve.t See if Storable works
+t/st-dump.pl helper routines for tests
t/store.t See if Storable works
t/tied.t See if Storable works
t/tied_hook.t See if Storable works
t/tied_items.t See if Storable works
t/utf8.t See if Storable works
t/utf8hash.t See if Storable works
-lib/st-dump.pl helper routines for tests
diff --git a/ext/Storable/Storable.pm b/ext/Storable/Storable.pm
index 0224795392..664f6e7a6b 100644
--- a/ext/Storable/Storable.pm
+++ b/ext/Storable/Storable.pm
@@ -894,11 +894,6 @@ C<Storable::drop_utf8> is a blunt tool. There is no facility either to
return B<all> strings as utf8 sequences, or to attempt to convert utf8
data back to 8 bit and C<croak()> if the conversion fails.
-In EBCDIC platforms, restoring restricted hashes (a new perl 5.8
-feature) does not work (the contents of the hashes are restored
-but the read-onlyness of either the whole hash or particular
-elements is lost).
-
=head1 CREDITS
Thank you to (in chronological order):
diff --git a/ext/Storable/Storable.xs b/ext/Storable/Storable.xs
index 8b7c0cc0d1..1ab7a4c93f 100644
--- a/ext/Storable/Storable.xs
+++ b/ext/Storable/Storable.xs
@@ -2954,7 +2954,7 @@ static int store_other(stcxt_t *cxt, SV *sv)
len = strlen(buf);
STORE_SCALAR(buf, len);
- TRACEME(("ok (dummy \"%s\", length = %"IVdf")", buf, len));
+ TRACEME(("ok (dummy \"%s\", length = %"IVdf")", buf, (IV) len));
return 0;
}
@@ -3784,7 +3784,7 @@ static SV *retrieve_hook(stcxt_t *cxt, char *cname)
*/
TRACEME(("calling STORABLE_thaw on %s at 0x%"UVxf" (%"IVdf" args)",
- class, PTR2UV(sv), AvFILLp(av) + 1));
+ class, PTR2UV(sv), (IV) AvFILLp(av) + 1));
rv = newRV(sv);
(void) scalar_call(rv, hook, clone, av, G_SCALAR|G_DISCARD);
@@ -4125,7 +4125,7 @@ static SV *retrieve_lscalar(stcxt_t *cxt, char *cname)
SV *sv;
RLEN(len);
- TRACEME(("retrieve_lscalar (#%d), len = %"IVdf, cxt->tagnum, len));
+ TRACEME(("retrieve_lscalar (#%d), len = %"IVdf, cxt->tagnum, (IV) len));
/*
* Allocate an empty scalar of the suitable length.
@@ -4150,7 +4150,7 @@ static SV *retrieve_lscalar(stcxt_t *cxt, char *cname)
if (cxt->s_tainted) /* Is input source tainted? */
SvTAINT(sv); /* External data cannot be trusted */
- TRACEME(("large scalar len %"IVdf" '%s'", len, SvPVX(sv)));
+ TRACEME(("large scalar len %"IVdf" '%s'", (IV) len, SvPVX(sv)));
TRACEME(("ok (retrieve_lscalar at 0x%"UVxf")", PTR2UV(sv)));
return sv;
diff --git a/ext/Storable/t/downgrade.t b/ext/Storable/t/downgrade.t
index bbdf4dc74e..b560508eed 100644
--- a/ext/Storable/t/downgrade.t
+++ b/ext/Storable/t/downgrade.t
@@ -39,10 +39,21 @@ use vars qw(@RESTRICT_TESTS %R_HASH %U_HASH $UTF8_CROAK $RESTRICTED_CROAK);
%R_HASH = (perl => 'rules');
if ($] >= 5.007003) {
+ # This is cheating. "\xdf" in Latin 1 is beta S, so will match \w if it
+ # is stored in utf8, not bytes.
+ # "\xdf" is y diaresis in EBCDIC (except for cp875, but so far no-one seems
+ # to use that) which has exactly the same properties for \w
+ # So the tests happen to pass.
my $utf8 = "Schlo\xdf" . chr 256;
chop $utf8;
- %U_HASH = (map {$_, $_} 'castle', "ch\xe5teau", $utf8, chr 0x57CE);
+ # \xe5 is V in EBCDIC. That doesn't have the same properties w.r.t. \w as
+ # an a circumflex, so we need to be explicit.
+
+ # and its these very properties we're trying to test - an edge case
+ # involving whether scalars are being stored in bytes or in utf8.
+ my $a_circumflex = (ord ('A') == 193 ? "\x47" : "\xe5");
+ %U_HASH = (map {$_, $_} 'castle', "ch${a_circumflex}teau", $utf8, chr 0x57CE);
plan tests => 169;
} elsif ($] >= 5.006) {
plan tests => 59;
@@ -397,7 +408,7 @@ begin 301 Short 8 bit utf8 data as bytes
end
begin 301 Long 8 bit utf8 data
-M!04!```"`(MSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+M!048```"`(MSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
M<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
@@ -423,7 +434,7 @@ begin 301 Short 24 bit utf8 data as bytes
end
begin 301 Long 24 bit utf8 data
-M!04!```&`/M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M!048```&`/M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
@@ -467,25 +478,25 @@ begin 301 Hash with utf8 flag but no utf8 keys
end
begin 301 Hash with utf8 keys
-M!049``````0*!H.!HJ.3A0`````&@X&BHY.%%P3<9')5`0````3<9')5%P?B
-F@XB3EHMS`@````;B@XB3EM\*!X.(Y:.%@:0`````!X.(Y:.%@:0`
+M!049``````0*!X.(1Z.%@:0`````!X.(1Z.%@:0*!H.!HJ.3A0`````&@X&B
+FHY.%%P3<9')5`0````3<9')5%P?B@XB3EHMS`@````;B@XB3EM\`
end
begin 301 Locked hash with utf8 keys
-M!049`0````0*!H.!HJ.3A00````&@X&BHY.%%P3<9')5!0````3<9')5%P?B
-F@XB3EHMS!@````;B@XB3EM\*!X.(Y:.%@:0$````!X.(Y:.%@:0`
+M!049`0````0*!X.(1Z.%@:0$````!X.(1Z.%@:0*!H.!HJ.3A00````&@X&B
+FHY.%%P3<9')5!0````3<9')5%P?B@XB3EHMS!@````;B@XB3EM\`
end
begin 301 Hash with utf8 keys for pre 5.6
-M!049``````0*!H.!HJ.3A0`````&@X&BHY.%"@>#B.6CA8&D``````>#B.6C
-FA8&D"@?B@XB3EHMS`@````;B@XB3EM\*!-QD<E4`````!-QD<E4`
+M!049``````0*!H.!HJ.3A0`````&@X&BHY.%"@B#B(M&HX6!I``````'@XA'
+GHX6!I`H'XH.(DY:+<P(````&XH.(DY;?"@3<9')5``````3<9')5
end
begin 301 Hash with utf8 keys for 5.6
-M!049``````0*!H.!HJ.3A0`````&@X&BHY.%"@>#B.6CA8&D``````>#B.6C
+M!049``````0*!H.!HJ.3A0`````&@X&BHY.%"@>#B$>CA8&D``````>#B$>C
FA8&D%P?B@XB3EHMS`@````;B@XB3EM\7!-QD<E4`````!-QD<E4`
end
diff --git a/ext/Storable/t/make_downgrade.pl b/ext/Storable/t/make_downgrade.pl
index d806ebbaa1..fc801a4953 100644
--- a/ext/Storable/t/make_downgrade.pl
+++ b/ext/Storable/t/make_downgrade.pl
@@ -50,9 +50,10 @@ chop $utf8;
uuencode_it (\$utf8, "Short 8 bit utf8 data");
-utf8::encode ($utf8);
+my $utf8b = $utf8;
+utf8::encode ($utf8b);
-uuencode_it (\$utf8, "Short 8 bit utf8 data as bytes");
+uuencode_it (\$utf8b, "Short 8 bit utf8 data as bytes");
$utf8 x= 256;
@@ -62,9 +63,10 @@ $utf8 = "\x{C0FFEE}";
uuencode_it (\$utf8, "Short 24 bit utf8 data");
-utf8::encode ($utf8);
+$utf8b = $utf8;
+utf8::encode ($utf8b);
-uuencode_it (\$utf8, "Short 24 bit utf8 data as bytes");
+uuencode_it (\$utf8b, "Short 24 bit utf8 data as bytes");
$utf8 x= 256;
@@ -79,7 +81,8 @@ uuencode_it (\%uhash, "Hash with utf8 flag but no utf8 keys");
$utf8 = "Schlo\xdf" . chr 256;
chop $utf8;
-%uhash = (map {$_, $_} 'castle', "ch\xe5teau", $utf8, "\x{57CE}");
+my $a_circumflex = (ord ('A') == 193 ? "\x47" : "\xe5");
+%uhash = (map {$_, $_} 'castle', "ch${a_circumflex}teau", $utf8, "\x{57CE}");
uuencode_it (\%uhash, "Hash with utf8 keys");
diff --git a/ext/Storable/t/st-dump.pl b/ext/Storable/t/st-dump.pl
new file mode 100644
index 0000000000..6ce77f01ac
--- /dev/null
+++ b/ext/Storable/t/st-dump.pl
@@ -0,0 +1,169 @@
+;# $Id: dump.pl,v 1.0 2000/09/01 19:40:41 ram Exp $
+;#
+;# Copyright (c) 1995-2000, Raphael Manfredi
+;#
+;# You may redistribute only under the same terms as Perl 5, as specified
+;# in the README file that comes with the distribution.
+;#
+;# $Log: dump.pl,v $
+;# Revision 1.0 2000/09/01 19:40:41 ram
+;# Baseline for first official release.
+;#
+
+# NOTE THAT THIS FILE IS COPIED FROM ext/Storable/t/st-dump.pl
+# TO t/lib/st-dump.pl. One could also play games with
+# File::Spec->updir and catdir to get the st-dump.pl in
+# ext/Storable into @INC.
+
+sub ok {
+ my ($num, $ok, $name) = @_;
+ $num .= " - $name" if defined $name and length $name;
+ print $ok ? "ok $num\n" : "not ok $num\n";
+ $ok;
+}
+
+sub num_equal {
+ my ($num, $left, $right, $name) = @_;
+ my $ok = ((defined $left) ? $left == $right : undef);
+ unless (ok ($num, $ok, $name)) {
+ print "# Expected $right\n";
+ if (!defined $left) {
+ print "# Got undef\n";
+ } elsif ($left !~ tr/0-9//c) {
+ print "# Got $left\n";
+ } else {
+ $left =~ s/([^-a-zA-Z0-9_+])/sprintf "\\%03o", ord $1/ge;
+ print "# Got \"$left\"\n";
+ }
+ }
+ $ok;
+}
+
+package dump;
+use Carp;
+
+%dump = (
+ 'SCALAR' => 'dump_scalar',
+ 'ARRAY' => 'dump_array',
+ 'HASH' => 'dump_hash',
+ 'REF' => 'dump_ref',
+);
+
+# Given an object, dump its transitive data closure
+sub main'dump {
+ my ($object) = @_;
+ croak "Not a reference!" unless ref($object);
+ local %dumped;
+ local %object;
+ local $count = 0;
+ local $dumped = '';
+ &recursive_dump($object, 1);
+ return $dumped;
+}
+
+# This is the root recursive dumping routine that may indirectly be
+# called by one of the routine it calls...
+# The link parameter is set to false when the reference passed to
+# the routine is an internal temporay variable, implying the object's
+# address is not to be dumped in the %dumped table since it's not a
+# user-visible object.
+sub recursive_dump {
+ my ($object, $link) = @_;
+
+ # Get something like SCALAR(0x...) or TYPE=SCALAR(0x...).
+ # Then extract the bless, ref and address parts of that string.
+
+ my $what = "$object"; # Stringify
+ my ($bless, $ref, $addr) = $what =~ /^(\w+)=(\w+)\((0x.*)\)$/;
+ ($ref, $addr) = $what =~ /^(\w+)\((0x.*)\)$/ unless $bless;
+
+ # Special case for references to references. When stringified,
+ # they appear as being scalars. However, ref() correctly pinpoints
+ # them as being references indirections. And that's it.
+
+ $ref = 'REF' if ref($object) eq 'REF';
+
+ # Make sure the object has not been already dumped before.
+ # We don't want to duplicate data. Retrieval will know how to
+ # relink from the previously seen object.
+
+ if ($link && $dumped{$addr}++) {
+ my $num = $object{$addr};
+ $dumped .= "OBJECT #$num seen\n";
+ return;
+ }
+
+ my $objcount = $count++;
+ $object{$addr} = $objcount;
+
+ # Call the appropriate dumping routine based on the reference type.
+ # If the referenced was blessed, we bless it once the object is dumped.
+ # The retrieval code will perform the same on the last object retrieved.
+
+ croak "Unknown simple type '$ref'" unless defined $dump{$ref};
+
+ &{$dump{$ref}}($object); # Dump object
+ &bless($bless) if $bless; # Mark it as blessed, if necessary
+
+ $dumped .= "OBJECT $objcount\n";
+}
+
+# Indicate that current object is blessed
+sub bless {
+ my ($class) = @_;
+ $dumped .= "BLESS $class\n";
+}
+
+# Dump single scalar
+sub dump_scalar {
+ my ($sref) = @_;
+ my $scalar = $$sref;
+ unless (defined $scalar) {
+ $dumped .= "UNDEF\n";
+ return;
+ }
+ my $len = length($scalar);
+ $dumped .= "SCALAR len=$len $scalar\n";
+}
+
+# Dump array
+sub dump_array {
+ my ($aref) = @_;
+ my $items = 0 + @{$aref};
+ $dumped .= "ARRAY items=$items\n";
+ foreach $item (@{$aref}) {
+ unless (defined $item) {
+ $dumped .= 'ITEM_UNDEF' . "\n";
+ next;
+ }
+ $dumped .= 'ITEM ';
+ &recursive_dump(\$item, 1);
+ }
+}
+
+# Dump hash table
+sub dump_hash {
+ my ($href) = @_;
+ my $items = scalar(keys %{$href});
+ $dumped .= "HASH items=$items\n";
+ foreach $key (sort keys %{$href}) {
+ $dumped .= 'KEY ';
+ &recursive_dump(\$key, undef);
+ unless (defined $href->{$key}) {
+ $dumped .= 'VALUE_UNDEF' . "\n";
+ next;
+ }
+ $dumped .= 'VALUE ';
+ &recursive_dump(\$href->{$key}, 1);
+ }
+}
+
+# Dump reference to reference
+sub dump_ref {
+ my ($rref) = @_;
+ my $deref = $$rref; # Follow reference to reference
+ $dumped .= 'REF ';
+ &recursive_dump($deref, 1); # $dref is a reference
+}
+
+1;
diff --git a/ext/Sys/Syslog/Syslog.pm b/ext/Sys/Syslog/Syslog.pm
index edd813ad8a..a7fd2c93fc 100644
--- a/ext/Sys/Syslog/Syslog.pm
+++ b/ext/Sys/Syslog/Syslog.pm
@@ -13,6 +13,9 @@ $VERSION = '0.03';
# most efficient. However streams are dodgy - see _syslog_send_stream
#my @connectMethods = ( 'stream', 'unix', 'tcp', 'udp' );
my @connectMethods = ( 'tcp', 'udp', 'unix', 'stream', 'console' );
+if ($^O =~ /^(freebsd|linux)$/) {
+ @connectMethods = grep { $_ ne 'udp' } @connectMethods;
+}
my @defaultMethods = @connectMethods;
my $syslog_path = undef;
my $transmit_ok = 0;
@@ -557,7 +560,7 @@ sub connect_console {
# 'protocol' never provides anything for us to read. But with
# judicious use of select(), we can see if it would be readable...
sub connection_ok {
- return 1 if ($current_proto eq 'console');
+ return 1 if (defined $current_proto && $current_proto eq 'console');
my $rin = '';
vec($rin, fileno(SYSLOG), 1) = 1;
my $ret = select $rin, undef, $rin, 0;
diff --git a/ext/threads/threads.xs b/ext/threads/threads.xs
index f957a4a99b..cbe4e04b33 100755
--- a/ext/threads/threads.xs
+++ b/ext/threads/threads.xs
@@ -601,7 +601,7 @@ PPCODE:
}
void
-yield(thread = 'threads')
+yield(...)
CODE:
{
YIELD;
diff --git a/hints/aix.sh b/hints/aix.sh
index ef3ff0787b..da7a45619b 100644
--- a/hints/aix.sh
+++ b/hints/aix.sh
@@ -141,7 +141,12 @@ cc_type=xlc
case "$cc" in
*gcc*)
cc_type=gcc
- ccdlflags='-Xlinker' ;;
+ ccdlflags='-Xlinker'
+ if [ "X$gccversion" = "X" ]; then
+ # Done too late in Configure if hinted
+ gccversion=`$cc --version | sed 's/.*(GCC) *//`
+ fi
+ ;;
*) ccversion=`lslpp -L | grep 'C for AIX Compiler$' | awk '{print $2}'`
case "$ccversion" in
'') ccversion=`lslpp -L | grep 'IBM C and C++ Compilers LUM$' | awk '{print $2}'`
@@ -245,7 +250,20 @@ case "$usethreads" in
$define|true|[yY]*)
ccflags="$ccflags -DNEED_PTHREAD_INIT"
case "$cc" in
- gcc) ;;
+ *gcc*)
+echo "GCC $gccversion disabling some _r functions" >&4
+ case "$gccversion" in
+ 3*) d_drand48_r='undef'
+ d_endgrent_r='undef'
+ d_endpwent_r='undef'
+ d_getgrent_r='undef'
+ d_getpwent_r='undef'
+ d_random_r='undef'
+ d_srand48_r='undef'
+ d_strerror_r='undef'
+ ;;
+ esac
+ ;;
cc_r) ;;
cc|xl[cC]_r)
echo >&4 "Switching cc to cc_r because of POSIX threads."
@@ -254,9 +272,9 @@ $define|true|[yY]*)
# --jhi@iki.fi
cc=cc_r
- case "`oslevel`" in
- 4.2.1.*) i_crypt='undef' ;;
- esac
+ case "`oslevel`" in
+ 4.2.1.*) i_crypt='undef' ;;
+ esac
;;
'')
cc=cc_r
diff --git a/hints/dec_osf.sh b/hints/dec_osf.sh
index 7706141ff2..7c3569f70c 100644
--- a/hints/dec_osf.sh
+++ b/hints/dec_osf.sh
@@ -69,12 +69,15 @@ esac
# reset
_DEC_cc_style=
case "$isgcc" in
-gcc) _gcc_version=`$cc --version 2>&1 | tr . ' '`
- set $_gcc_version
+gcc) if [ "X$gccversion" = "X" ]; then
+ # Done too late in Configure if hinted
+ gccversion=`$cc --version | sed 's/.*(GCC) *//'`
+ fi
+ set $gcc_version
if test "$1" -lt 2 -o \( "$1" -eq 2 -a \( "$2" -lt 95 -o \( "$2" -eq 95 -a "$3" -lt 2 \) \) \); then
cat >&4 <<EOF
-*** Your cc seems to be gcc and its version ($_gcc_version) seems to be
+*** Your cc seems to be gcc and its version ($gcc_version) seems to be
*** less than 2.95.2. This is not a good idea since old versions of gcc
*** are known to produce buggy code when compiling Perl (and no doubt for
*** other programs, too).
diff --git a/hints/hpux.sh b/hints/hpux.sh
index a76c680c3b..c08cdf9e77 100644
--- a/hints/hpux.sh
+++ b/hints/hpux.sh
@@ -76,7 +76,7 @@ case `$cc -v 2>&1`"" in
ccflags="$cc_cppflags"
if [ "X$gccversion" = "X" ]; then
# Done too late in Configure if hinted
- gccversion=`$cc --version | sed 's/.*(GCC) *//`
+ gccversion=`$cc --version | sed 's/.*(GCC) *//'`
fi
case "$gccversion" in
[012]*) # HP-UX and gcc-2.* break UINT32_MAX :-(
diff --git a/hints/svr5.sh b/hints/svr5.sh
index 2ddcbb10ba..47f7aff2c1 100644
--- a/hints/svr5.sh
+++ b/hints/svr5.sh
@@ -10,8 +10,11 @@
case "$cc" in
*gcc*)
# "$gccversion" not set yet
- vers=`gcc -v 2>&1 | sed -n -e 's@.*version \([^ ][^ ]*\) .*@\1@p'`
- case $vers in
+ if [ "X$gccversion" = "X" ]; then
+ # Done too late in Configure if hinted
+ gccversion=`$cc --version | sed 's/.*(GCC) *//'`
+ fi
+ case $gccversion in
*2.95*)
ccflags='-fno-strict-aliasing'
# More optimisation provided in gcc-2.95 causes miniperl to segv.
diff --git a/hints/vos.sh b/hints/vos.sh
index 9860a6faac..62510ee0d1 100644
--- a/hints/vos.sh
+++ b/hints/vos.sh
@@ -108,9 +108,12 @@ echo "Testing whether bug gnu_g++-220 is fixed in your compiler..."
# Try compiling the test case.
if $cc -o t001 -O $ccflags $ldflags ../hints/t001.c; then
gccbug=`$run ./t001`
+ if [ "X$gccversion" = "X" ]; then
+ # Done too late in Configure if hinted
+ gccversion=`$cc --version | sed 's/.*(GCC) *//'`
+ fi
case "$gccbug" in
- *fails*) gccversion=`$cc --version`
- cat >&4 <<EOF
+ *fails*) cat >&4 <<EOF
This C compiler ($gccversion) is known to have optimizer
problems when compiling pp_pack.c. The Stratus bug number
for this problem is gnu_g++-220.
diff --git a/lib/File/stat.t b/lib/File/stat.t
index 7a114ce822..c29d9abecd 100644
--- a/lib/File/stat.t
+++ b/lib/File/stat.t
@@ -74,6 +74,7 @@ SKIP: {
}
main::skip("Win32: different stat-info on filehandle", 1) if $^O eq 'MSWin32';
+ main::skip("dos: inode number is fake on dos", 1) if $^O eq 'dos';
main::is( "@$stat", "@$stat3", '... and must match normal stat' );
}
diff --git a/lib/Pod/Html.pm b/lib/Pod/Html.pm
index 515ca4ebe9..e8f9ff3fa5 100644
--- a/lib/Pod/Html.pm
+++ b/lib/Pod/Html.pm
@@ -372,14 +372,14 @@ sub pod2html {
# be eol agnostic
for (@poddata) {
- if (/\x0D/) {
- if (/\x0D\x0A/) {
- @poddata = map { s/\x0D\x0A/\n/g;
+ if (/\r/) {
+ if (/\r\n/) {
+ @poddata = map { s/\r\n/\n/g;
/\n\n/ ?
map { "$_\n\n" } split /\n\n/ :
$_ } @poddata;
} else {
- @poddata = map { s/\x0D/\n/g;
+ @poddata = map { s/\r/\n/g;
/\n\n/ ?
map { "$_\n\n" } split /\n\n/ :
$_ } @poddata;
diff --git a/lib/Pod/t/eol.t b/lib/Pod/t/eol.t
index 331d27f167..b78ec63549 100644
--- a/lib/Pod/t/eol.t
+++ b/lib/Pod/t/eol.t
@@ -1,12 +1,5 @@
#!./perl -w
-BEGIN {
- if (ord("A") == 193) {
- print "1..0 \# Skip: EBCDIC\n";
- exit(0);
- }
-}
-
use Test::More tests => 3;
open(POD, ">$$.pod") or die "$$.pod: $!";
@@ -44,8 +37,8 @@ use Pod::Html;
open(POD, "<$$.pod") or die "$$.pod: $!";
open(IN, ">$$.in") or die "$$.in: $!";
while (<POD>) {
- tr/\x0D\x0A//d;
- print IN $_, "\x0D";
+ s/[\r\n]+/\r/gs;
+ print IN $_;
}
close(POD);
close(IN);
@@ -57,8 +50,8 @@ pod2html("--title=eol", "--infile=$$.in", "--outfile=$$.o1");
open(POD, "<$$.pod") or die "$$.pod: $!";
open(IN, ">$$.in") or die "$$.in: $!";
while (<POD>) {
- tr/\x0D\x0A//d;
- print IN $_, "\x0A";
+ s/[\r\n]+/\n/gs;
+ print IN $_;
}
close(POD);
close(IN);
@@ -70,8 +63,8 @@ pod2html("--title=eol", "--infile=$$.in", "--outfile=$$.o2");
open(POD, "<$$.pod") or die "$$.pod: $!";
open(IN, ">$$.in") or die "$$.in: $!";
while (<POD>) {
- tr/\x0D\x0A//d;
- print IN $_, "\x0D\x0A";
+ s/[\r\n]+/\r\n/gs;
+ print IN $_;
}
close(POD);
close(IN);
diff --git a/lib/Tie/File/t/21_win32.t b/lib/Tie/File/t/21_win32.t
index d06854441b..80d795a5d0 100644
--- a/lib/Tie/File/t/21_win32.t
+++ b/lib/Tie/File/t/21_win32.t
@@ -9,7 +9,7 @@
my $file = "tf$$.txt";
-unless ($^O =~ /^(MSWin32|dos)$/) {
+unless ($^O =~ /^(MSWin32)$/) {
print "1..0\n";
exit;
}
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index df5151dc10..51e24df9bf 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2873,20 +2873,24 @@ the 5.005 threading implementation. These are not new failures--Perl
../lib/autouse.t 10 1 10.00% 4
op/flip.t 15 1 6.67% 15
-These failures are unlikely to get fixed as the 5.005-style
-threads are considered fundamentally broken.
+These failures are unlikely to get fixed as the 5.005-style threads
+are considered fundamentally broken. (Basically what happens is that
+competing threads can corrupt shared global state.)
=head2 UNICOS
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------
- ../ext/Socket/socketpair.t 1 256 45 1 2.22% 12
../lib/Math/Trig.t 26 1 3.85% 25
../lib/warnings.t 460 1 0.22% 425
- io/fs.t 36 1 2.78% 31
op/numconvert.t 1440 13 0.90% 208 509-510
657-658 665-666 829-830 989-990 1149-1150
+The Trig and numconvert failures are caused by the slighly differing
+(from IEEE) floating point implementation of UNICOS. The warnings
+failure is also related: the test assumes a certain floating point
+output format, this assumption fails in UNICOS.
+
=head2 UNICOS/mk
=over 4
@@ -2957,8 +2961,7 @@ tests have been added.
331 333 337 339
../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5
../ext/Storable/t/downgrade.t 12 3072 169 12 7.10% 14-15 46-47 78-79
- 110-111 137 143
- 150 161
+ 110-111 150 161
../lib/ExtUtils/t/Constant.t 121 30976 48 48 100.00% 1-48
../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9
op/pat.t 910 7 0.77% 665 776 785 832-
@@ -2968,6 +2971,13 @@ tests have been added.
uni/fold.t 780 6 0.77% 61 169 196 661
710-711
+The dumper.t and downgrade.t are problems in the tests, the io_unix
+and sprintf are problems in the USS (UDP sockets and printf formats).
+The pat, tr, and fold are genuine Perl problems caused by EBCDIC (and
+in the pat and fold cases, combining that with Unicode). The Constant
+and Embed are probably problems in the tests (since they test Perl's
+ability to build extensions, and that seems to be working reasonably well.)
+
=head2 Localising Tied Arrays and Hashes Is Broken
local %tied_array;
diff --git a/pod/perlhack.pod b/pod/perlhack.pod
index 75d9241aac..08268022f4 100644
--- a/pod/perlhack.pod
+++ b/pod/perlhack.pod
@@ -2007,7 +2007,15 @@ standard Perl testset you would create and run Purify as:
which would instrument Perl in memory, run Perl on test.pl,
then finally report any memory problems.
-=head2 Compaq's/Digital's Third Degree
+B<NOTE>: as of Perl 5.8.0, the ext/Encode/t/Unicode.t takes
+extraordinarily long (hours?) to complete under Purify. It has been
+theorized that it would eventually finish, but nobody has so far been
+patient enough :-) (This same extreme slowdown has been seen also with
+the Third Degree tool, so the said test must be doing something that
+is quite unfriendly for memory debuggers.) It is suggested that you
+simply kill away that testing process.
+
+=head2 Compaq's/Digital's/HP's Third Degree
Third Degree is a tool for memory leak detection and memory access checks.
It is one of the many tools in the ATOM toolkit. The toolkit is only
diff --git a/t/lib/st-dump.pl b/t/lib/st-dump.pl
index 05028f30d8..6ce77f01ac 100644
--- a/t/lib/st-dump.pl
+++ b/t/lib/st-dump.pl
@@ -10,6 +10,11 @@
;# Baseline for first official release.
;#
+# NOTE THAT THIS FILE IS COPIED FROM ext/Storable/t/st-dump.pl
+# TO t/lib/st-dump.pl. One could also play games with
+# File::Spec->updir and catdir to get the st-dump.pl in
+# ext/Storable into @INC.
+
sub ok {
my ($num, $ok, $name) = @_;
$num .= " - $name" if defined $name and length $name;
diff --git a/t/op/alarm.t b/t/op/alarm.t
index 384ee1d028..8fb92964a3 100644
--- a/t/op/alarm.t
+++ b/t/op/alarm.t
@@ -46,6 +46,6 @@ is( $@, "ALARM!\n", 'alarm w/$SIG{ALRM} vs system()' );
{
local $TODO = "Why does system() block alarm() on $^O?"
- if $^O eq 'VMS' || $^O eq'MacOS';
+ if $^O eq 'VMS' || $^O eq'MacOS' || $^O eq 'dos';
ok( abs($diff - 3) <= 1, " right time (waited $diff secs for 3-sec alarm)" );
}
diff --git a/utf8.c b/utf8.c
index efcc602bb1..c2818c82fa 100644
--- a/utf8.c
+++ b/utf8.c
@@ -1348,15 +1348,6 @@ Perl_to_utf8_case(pTHX_ U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, char *norma
HE *he;
SV *val;
-#if defined(UNDER_CE)
-/*strange: compiler complaints that I redefine macro UVXf and points where
- it was first defined. I copied line from there without any changes.
- Nothing should change.
- But when I do not do this, there is an error on a line with
- Perl_newSVpvf(aTHX_ "%04"UVXf, uv1)
-*/
-#define UVXf "lX" /**/
-#endif
if ((hv = get_hv(special, FALSE)) &&
(keysv = sv_2mortal(Perl_newSVpvf(aTHX_ "%04"UVXf, uv1))) &&
(he = hv_fetch_ent(hv, keysv, FALSE, 0)) &&
diff --git a/win32/buildext.pl b/win32/buildext.pl
index 7125753709..65b79beb94 100644
--- a/win32/buildext.pl
+++ b/win32/buildext.pl
@@ -4,7 +4,7 @@ buildext.pl - build extensions
=head1 SYNOPSIS
- buildext.pl make [-make_opts] dep directory [target]
+ buildext.pl make [-make_opts] dep directory [target] !ext1 !ext2
E.g.
@@ -16,11 +16,19 @@ E.g.
buildext.pl dmake perldll.def ..\ext clean
+Will skip building extensions which are marked with an '!' char.
+Mostly because they still not ported to specified platform.
+
=cut
use File::Basename;
use Cwd;
use FindExt;
+
+# @ARGV with '!' at first position are exclusions
+my %excl = map {$_=>1} map {/^!(.*)$/} @ARGV;
+@ARGV = grep {!/^!/} @ARGV;
+
my $here = getcwd();
my $perl = $^X;
$here =~ s,/,\\,g;
@@ -36,7 +44,7 @@ my $pl2bat = "$topdir\\win32\\bin\\pl2bat";
unless (-f "$pl2bat.bat") {
my @args = ($perl, ("$pl2bat.pl") x 2);
print "@args\n";
- system(@args);
+ system(@args) unless defined $::Cross::platform;
}
my $make = shift;
$make .= " ".shift while $ARGV[0]=~/^-/;
@@ -46,12 +54,17 @@ my $dir = shift;
chdir($dir) || die "Cannot cd to $dir\n";
my $targ = shift;
(my $ext = getcwd()) =~ s,/,\\,g;
+my $code;
FindExt::scan_ext($ext);
my @ext = FindExt::extensions();
foreach my $dir (sort @ext)
{
+ if (exists $excl{$dir}) {
+ warn "Skipping extension $ext\\$dir, not ported to current platform";
+ next;
+ }
if (chdir("$ext\\$dir"))
{
my $mmod = -M 'Makefile';
@@ -60,8 +73,11 @@ foreach my $dir (sort @ext)
print "\nRunning Makefile.PL in $dir\n";
my @perl = ($perl, "-I$here\\..\\lib", 'Makefile.PL',
'INSTALLDIRS=perl', 'PERL_CORE=1');
+ if (defined $::Cross::platform) {
+ @perl = (@perl[0,1],"-MCross=$::Cross::platform",@perl[2..$#perl]);
+ }
print join(' ', @perl), "\n";
- my $code = system(@perl);
+ $code = system(@perl);
warn "$code from $dir's Makefile.PL" if $code;
$mmod = -M 'Makefile';
if ($mmod > $dmod)
@@ -72,12 +88,14 @@ foreach my $dir (sort @ext)
if ($targ)
{
print "Making $targ in $dir\n$make $targ\n";
- system("$make $targ");
+ $code = system("$make $targ");
+ die "Unsuccessful make($dir): code=$code" if $code!=0;
}
else
{
print "Making $dir\n$make\n";
- system($make);
+ $code = system($make);
+ die "Unsuccessful make($dir): code=$code" if $code!=0;
}
chdir($here) || die "Cannot cd to $here:$!";
}
diff --git a/wince/FindExt.pm b/wince/FindExt.pm
deleted file mode 100644
index 30392687d1..0000000000
--- a/wince/FindExt.pm
+++ /dev/null
@@ -1,66 +0,0 @@
-package FindExt;
-
-our $VERSION = '1.00';
-
-use strict;
-use File::Find;
-use File::Basename;
-use Cwd;
-
-my $no = join('|',qw(DynaLoader GDBM_File ODBM_File NDBM_File DB_File
- Syslog SysV Langinfo));
-$no = qr/^(?:$no)$/i;
-
-my %ext;
-my $ext;
-sub scan_ext
-{
- my $here = getcwd();
- my $dir = shift;
- chdir($dir) || die "Cannot cd to $dir\n";
- ($ext = getcwd()) =~ s,/,\\,g;
- find(\&find_ext,'.');
- chdir($here) || die "Cannot cd to $here\n";
- my @ext = extensions();
-}
-
-sub dynamic_extensions
-{
- return grep $ext{$_} eq 'dynamic',keys %ext;
-}
-
-sub noxs_extensions
-{
- return grep $ext{$_} eq 'nonxs',keys %ext;
-}
-
-sub extensions
-{
- return keys %ext;
-}
-
-sub find_ext
-{
- if (/^(.*)\.pm$/i || /^(.*)_pm\.PL$/i || /^(.*)\.xs$/i)
- {
- my $name = $1;
- return if $name =~ $no;
- my $dir = $File::Find::dir;
- $dir =~ s,./,,;
- return if exists $ext{$dir};
- return unless -f "$ext/$dir/Makefile.PL";
- if ($dir =~ /$name$/i)
- {
- if (-f "$ext/$dir/$name.xs")
- {
- $ext{$dir} = 'dynamic';
- }
- else
- {
- $ext{$dir} = 'nonxs';
- }
- }
- }
-}
-
-1;
diff --git a/wince/Makefile.ce b/wince/Makefile.ce
index 272769a53b..55f9dfea1d 100644
--- a/wince/Makefile.ce
+++ b/wince/Makefile.ce
@@ -526,6 +526,12 @@ PERLEXE = $(MACHINE)\perl.exe
CONFIGPM = ..\xlib\$(CROSS_NAME)\Config.pm
MINIMOD = ..\lib\ExtUtils\Miniperl.pm
+# Nominate a target which causes extensions to be re-built
+# This used to be $(PERLEXE), but at worst it is the .dll that they depend
+# on and really only the interface - i.e. the .def file used to export symbols
+# from the .dll
+PERLDEP = perldll.def
+
MAKE = nmake -nologo
CFGSH_TMPL = config.ce
@@ -534,7 +540,7 @@ CFGH_TMPL = config_H.ce
#
# filenames given to xsubpp must have forward slashes (since it puts
# full pathnames in #line strings)
-XSUBPP = $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) ...\$(EXTUTILSDIR)\xsubpp \
+XSUBPP = $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
-C++ -prototypes
MICROCORE_SRC = \
@@ -760,20 +766,21 @@ all: hostminiperl $(MINIMOD) $(CONFIGPM) $(PERLEXE)
$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
$(CONFIGPM): .\config.h ..\config.sh ..\minimod.pl
- cd .. && $(HPERL) configpm --cross=$(CROSS_NAME) --no-glossary
+ cd .. && $(HPERL) configpm --cross=$(CROSS_NAME) --no-glossary
-mkdir $(XCOREDIR)
$(XCOPY) ..\*.h $(XCOREDIR)\*.*
$(XCOPY) *.h $(XCOREDIR)\*.*
$(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
$(RCOPY) include $(XCOREDIR)\*.*
- $(HPERL) -I..\lib -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)"
+ -$(HPERL) -I..\lib -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)"
+ if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
.\config.h:
-del /f config.h
copy config_H.ce config.h
..\config.sh: config.ce config_sh.PL
- $(HPERL) -I..\lib config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
+ $(HPERL) -I..\lib -I..\win32 config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
$(MINIMOD) : ..\minimod.pl
cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
@@ -796,6 +803,16 @@ $(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
$(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
+#----------------------------------------------------------------------------------
+Extensions: ..\win32\buildext.pl $(PERLDEP) $(CONFIGPM)
+ $(HPERL) -I..\lib -I..\win32 -MCross=$(CROSS_NAME) ..\win32\buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) \
+ !Errno !File/Glob !POSIX !Time/HiRes
+
+Extensions_clean:
+ -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
+
+#----------------------------------------------------------------------------------
+
$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
cd $(EXTDIR)\Data\$(*B)
$(HPERL) -I..\..\..\lib -MCross Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
diff --git a/wince/config.ce b/wince/config.ce
index 07eed645f3..6582c1c325 100644
--- a/wince/config.ce
+++ b/wince/config.ce
@@ -873,6 +873,7 @@ usevendorprefix='undef'
usevfork='false'
usrinc='/usr/include'
uuname=''
+uvXUformat='"lX"'
uvoformat='"lo"'
uvsize='4'
uvtype='unsigned long'
@@ -888,6 +889,7 @@ vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
version='~VERSION~'
+versiononly='undef'
vi=''
voidflags='15'
xlibpth='/usr/lib/386 /lib/386'
diff --git a/wince/config_H.ce b/wince/config_H.ce
index f447ba1a81..04c7eb0a08 100644
--- a/wince/config_H.ce
+++ b/wince/config_H.ce
@@ -3178,7 +3178,7 @@
#define UVuf "lu" /**/
#define UVof "lo" /**/
#define UVxf "lx" /**/
-#define UVXf undef /**/
+#define UVXf "lX" /**/
#define NVef "e" /**/
#define NVff "f" /**/
#define NVgf "g" /**/