This patch describes the changes made in ActivePerl build 813 over the official Perl v5.8.7 sources from CPAN. Summary of changes in build 8XX: * Make "perl -V" output reflect ActiveState build. * Add Win32::BuildNumber() for compatibility. * Add resources to perl.exe and perl58.dll. The ActivePerl Release Notes contain an informal summary of these changes. These can be viewed at: http://www.ActiveState.com/ActivePerl/docs/CHANGES.html The included patch may be applied to Perl v5.8.7 sources using the GNU patch utility. e.g: % cd perl-5.8.7 % patch -lNp1 < this_file --------------------------------------------------------------------------- diff -ruN perl-5.8.7/ASMETA.yml AP813_source/ASMETA.yml --- perl-5.8.7/ASMETA.yml Wed Dec 31 16:00:00 1969 +++ AP813_source/ASMETA.yml Mon Jun 6 23:32:55 2005 @@ -0,0 +1,9 @@ +abstract: Practical Extraction and Report Language +author: Larry Wall +name: perl +version: 5.8.7.813 +base: cpan:src/perl-5.8.7.tar.gz +perl_modules: + - ext + - lib +ppm_pkg: no diff -ruN perl-5.8.7/BuildInfo.h AP813_source/BuildInfo.h --- perl-5.8.7/BuildInfo.h Wed Dec 31 16:00:00 1969 +++ AP813_source/BuildInfo.h Mon Jun 6 23:32:56 2005 @@ -0,0 +1,39 @@ +/* BuildInfo.h + * + * Copyright (C) 1998-2005 ActiveState Corp. All rights reserved. + * + */ + +#ifndef ___BuildInfo__h___ +#define ___BuildInfo__h___ + +#define ACTIVEPERL_PRODUCT "ActivePerl" +#define ACTIVEPERL_VERSION 813 +#define ACTIVEPERL_SUBVERSION 0 +#define ACTIVEPERL_CHANGELIST "" + +#define PERL_VENDORLIB_NAME "ActiveState" + +#ifndef STRINGIFY +# include "config.h" +#endif + +/* Derived values and legacy */ +#if ACTIVEPERL_SUBVERSION > 0 +# define PRODUCT_BUILD_NUMBER STRINGIFY(ACTIVEPERL_VERSION) "." STRINGIFY(ACTIVEPERL_SUBVERSION) +#else +# define PRODUCT_BUILD_NUMBER STRINGIFY(ACTIVEPERL_VERSION) +#endif +#define PERLFILEVERSION "5,8,7," STRINGIFY(ACTIVEPERL_VERSION) "\0" +#define PERLRC_VERSION 5,8,7,ACTIVEPERL_VERSION +#define PERLPRODUCTVERSION "Build " PRODUCT_BUILD_NUMBER ACTIVEPERL_CHANGELIST "\0" +#define PERLPRODUCTNAME ACTIVEPERL_PRODUCT "\0" +#define ACTIVEPERL_LOCAL_PATCHES_ENTRY ACTIVEPERL_PRODUCT " Build " PRODUCT_BUILD_NUMBER ACTIVEPERL_CHANGELIST +#ifdef BUILT_BY_ACTIVESTATE +#define BINARY_BUILD_NOTICE PerlIO_printf(PerlIO_stdout(), "\n\ +Binary build " PRODUCT_BUILD_NUMBER ACTIVEPERL_CHANGELIST " provided by ActiveState http://www.ActiveState.com\n\ +ActiveState is a division of Sophos.\n\ +Built " __DATE__ " " __TIME__ "\n"); +#endif + +#endif /* ___BuildInfo__h___ */ diff -ruN perl-5.8.7/Changes AP813_source/Changes --- perl-5.8.7/Changes Mon May 30 14:33:23 2005 +++ AP813_source/Changes Mon Jun 6 23:32:56 2005 @@ -24,6 +24,16 @@ to the perl5-porters mailing list. You can retrieve the messages for example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ +-------------------- +ActivePerl build 813 Additional core patches in ActivePerl build 813 +-------------------- +____________________________________________________________________________ +[ 21540] By: rgs on 2003/10/26 14:59:53 + Log: Fix backward-compatibility issues in if.pm. + Branch: perl + ! lib/if.pm +____________________________________________________________________________ + -------------- Version v5.8.7 Maintenance release working toward v5.8.7 -------------- diff -ruN perl-5.8.7/Configure AP813_source/Configure --- perl-5.8.7/Configure Wed Apr 20 09:58:48 2005 +++ AP813_source/Configure Mon Jun 6 23:32:57 2005 @@ -7936,7 +7936,7 @@ $spackage has manual pages available in source form. EOM -case "$nroff" in +case "DISABLED $nroff" in # heuristic disabled for ActivePerl (always want manpages) nroff) echo "However, you don't have nroff, so they're probably useless to you." case "$man1dir" in @@ -8045,7 +8045,7 @@ $spackage has manual pages for many of the library modules. EOM -case "$nroff" in +case "DISABLED $nroff" in # heuristic disabled for ActivePerl (always want manpages) nroff) $cat <<'EOM' However, you don't have nroff, so they're probably useless to you. diff -ruN perl-5.8.7/MANIFEST AP813_source/MANIFEST --- perl-5.8.7/MANIFEST Fri May 27 15:53:17 2005 +++ AP813_source/MANIFEST Mon Jun 6 23:32:58 2005 @@ -7,6 +7,7 @@ beos/beos.c BeOS port beos/beosish.h BeOS port beos/nm.c BeOS port +BuildInfo.h ActivePerl build number bytecode.pl Produces ext/ByteLoader/byterun.h, ext/ByteLoader/byterun.c and ext/B/Asmdata.pm cc_runtime.h Macros need by runtime of compiler-generated code cflags.SH A script that emits C compilation flags per file @@ -2728,6 +2729,7 @@ t/op/re_tests Regular expressions for regexp.t t/op/reverse.t See if reverse operator works t/op/runlevel.t See if die() works from perl_call_*() +t/op/sig.t See if signals work t/op/sleep.t See if sleep works t/op/sort.t See if sort works t/op/splice.t See if splice works @@ -2955,10 +2957,12 @@ win32/makefile.mk Win32 makefile for DMAKE (BC++, VC++ builds) win32/makeico.pl script to create perlexe.ico image file win32/mdelete.bat multifile delete +win32/perldll.rc ActivePerl info resource win32/perlexe.rc associated perl binary with icon win32/perlglob.c Win32 port win32/perlhost.h Perl "host" implementation win32/perllib.c Win32 port +win32/perl.ico ActivePerl Gecko win32/pod.mak Win32 port win32/runperl.c Win32 port win32/splittree.pl Win32 port diff -ruN perl-5.8.7/config_h.SH AP813_source/config_h.SH --- perl-5.8.7/config_h.SH Sat Apr 30 10:32:24 2005 +++ AP813_source/config_h.SH Mon Jun 6 23:32:58 2005 @@ -3486,7 +3486,9 @@ * This symbol, if defined, indicates that sitecustomize should * be used. */ +#ifndef USE_SITECUSTOMIZE #$usesitecustomize USE_SITECUSTOMIZE /**/ +#endif /* Size_t_size: * This symbol holds the size of a Size_t in bytes. diff -ruN perl-5.8.7/ext/Devel/DProf/DProf.xs AP813_source/ext/Devel/DProf/DProf.xs --- perl-5.8.7/ext/Devel/DProf/DProf.xs Sat Aug 2 01:46:51 2003 +++ AP813_source/ext/Devel/DProf/DProf.xs Mon Jun 6 23:33:00 2005 @@ -137,6 +137,8 @@ #endif #ifdef PERL_IMPLICIT_CONTEXT # define register +# undef PERL_UNUSED_DECL +# define PERL_UNUSED_DECL pTHX; # undef register #endif diff -ruN perl-5.8.7/ext/Time/HiRes/Makefile.PL AP813_source/ext/Time/HiRes/Makefile.PL --- perl-5.8.7/ext/Time/HiRes/Makefile.PL Tue Nov 16 13:55:02 2004 +++ AP813_source/ext/Time/HiRes/Makefile.PL Mon Jun 6 23:33:06 2005 @@ -344,6 +344,7 @@ $DEFINE .= ' -DTIME_HIRES_NANOSLEEP'; } } elsif ($^O ne 'mpeix' && # MPE/iX falsely finds nanosleep. + !($^O eq 'aix' && $Config{osvers} =~ /^4\./) && has_x ("nanosleep (NULL, NULL)")) { $has_nanosleep++; $DEFINE .= ' -DTIME_HIRES_NANOSLEEP'; diff -ruN perl-5.8.7/ext/util/make_ext AP813_source/ext/util/make_ext --- perl-5.8.7/ext/util/make_ext Fri Jul 19 16:49:43 2002 +++ AP813_source/ext/util/make_ext Mon Jun 6 23:33:07 2005 @@ -92,7 +92,12 @@ dynamic) makeargs="LINKTYPE=dynamic"; target=all ;; -static) makeargs="LINKTYPE=static CCCDLFLAGS=" +static) case "$mname" in + # For Apache, DynaLoader needs the CCCDLFLAGS variable + # (+z/+Z/-fpic/-fPIC) to stick around + *DynaLoader*) makeargs="LINKTYPE=static" ;; + *) makeargs="LINKTYPE=static CCCDLFLAGS=" ;; + esac target=all ;; static_pic) makeargs="LINKTYPE=static" diff -ruN perl-5.8.7/hints/aix.sh AP813_source/hints/aix.sh --- perl-5.8.7/hints/aix.sh Mon Apr 4 13:30:13 2005 +++ AP813_source/hints/aix.sh Mon Jun 6 23:33:07 2005 @@ -152,6 +152,28 @@ # the required -bE:$installarchlib/CORE/perl.exp is added by # libperl.U (Configure) later. +case "$cc" in +*gcc*) ;; +cc*|xlc*) # cc should've been set by line 116 or so if empty. + if test ! -x /usr/bin/$cc -a -x /usr/vac/bin/$cc; then + case ":$PATH:" in + *:/usr/vac/bin:*) ;; + *) cat <= 10.x @@ -33,6 +35,7 @@ sed -e 's/HP-//' -e 1q`; selecttype='int *' fi +fi # For some strange reason, the u32align test from Configure hangs in # HP-UX 10.20 since the December 2001 patches. So hint it to avoid @@ -179,7 +182,11 @@ esac # When HP-UX runs a script with "#!", it sets argv[0] to the script name. +case "$toke_cflags" in +'') toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' + ;; +esac ### 64 BITNESS @@ -285,7 +292,11 @@ ;; *) ccflags="$ccflags +DD64" - ldflags="$ldflags +DD64" + case "$archname" in + PA-RISC*) + ldflags="$ldflags +DD64" + ;; + esac ;; esac @@ -293,7 +304,7 @@ # are the right type # (NOTE: on IA64, this doesn't work with .a files.) libscheck='case "`/usr/bin/file $xxx`" in - *ELF-64*|*LP64*|*PA-RISC2.0*) ;; + *ELF-64*|*LP64*|*PA-RISC2.0*|*pa20_64*) ;; *) xxx=/no/64-bit$xxx ;; esac' @@ -306,7 +317,10 @@ libc='/lib/libc.sl' ;; IA64*) loclibpth="$loclibpth /usr/lib/hpux32" - libc='/usr/lib/hpux32/libc.so' ;; + libc='/usr/lib/hpux32/libc.so' + # no odbm libs + i_dbm=$undef + ;; esac ;; esac @@ -366,14 +380,17 @@ $define|true|[Yy]) case "$optimize" in - "") optimize="-g -O" ;; + "") optimize="-O" ;; *O[3456789]*) optimize=`echo "$optimize" | sed -e 's/O[3-9]/O2/'` ;; esac - #ld="$cc" - ld=/usr/bin/ld + ld="$cc" + #ld=/usr/bin/ld cccdlflags='-fPIC' - #lddlflags='-shared' - lddlflags='-b' + lddlflags='-shared -static-libgcc -fPIC' + case "$ccflags" in + *-mlp64*) lddlflags="$lddlflags -mlp64" ;; + esac + #lddlflags='-b' case "$optimize" in *-g*-O*|*-O*-g*) # gcc without gas will not accept -g @@ -424,6 +441,35 @@ ;; esac +# -lc should be at the end, if present (cc wrappers always add it). +# If $ld is the same as $cc, we remove libc from $libswanted, as cc +# will normally add it to the end of the libs list. If that isn't +# the case, we need to move libc to the end of $libswanted. +case "$ld" in +"$cc") + set `echo " $libswanted " | sed -e 's@ c @ @'` + libswanted="$*" + ;; +*) + case " $libswanted " in + *" c "*) + set `echo " $libswanted " | sed -e 's@ c @ @'` + libswanted="$* c " + ;; + esac + ;; +esac + +# Link with libcres.a, a performance library, on PA-RISC when using HP C +case "$archname" in + PA-RISC*) + case "$ccisgcc" in + '') + libswanted="cres $libswanted" + ;; + esac + esac + ## LARGEFILES if [ $xxOsRev -lt 1020 ]; then uselargefiles="$undef" @@ -626,9 +672,17 @@ else # 12 may want upping the _POSIX_C_SOURCE datestamp... ccflags=" -D_POSIX_C_SOURCE=199506L -D_REENTRANT $ccflags" - set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` - shift - libswanted="$*" + case "$libswanted " in + *" pthread "*) ;; + *" c "*) + set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` + shift + libswanted="$*" + ;; + *) + libswanted="$libswanted pthread " + ;; + esac fi ;; @@ -638,7 +692,7 @@ # The mysterious io_xs memory corruption in 11.00 32bit seems to get # fixed by not using Perl's malloc. Flip side is performance loss. # So we want mymalloc for all situations possible -usemymalloc='y' +usemymalloc='n' case "$usethreads" in $define|true|[yY]*) usemymalloc='n' ;; *) case "$ccisgcc" in @@ -658,7 +712,7 @@ usemymalloc='n' case "$useperlio" in - $undef|false|[nN]*) usemymalloc='y' ;; + $undef|false|[nN]*) usemymalloc='n' ;; esac # malloc wrap works diff -ruN perl-5.8.7/hints/solaris_2.sh AP813_source/hints/solaris_2.sh --- perl-5.8.7/hints/solaris_2.sh Mon Apr 4 13:30:13 2005 +++ AP813_source/hints/solaris_2.sh Mon Jun 6 23:33:08 2005 @@ -64,6 +64,14 @@ fi ;; esac +case "$archname" in +"i86pc-${osname}") + # x86 looks so much better and is how this platform + # is usually denoted + archname="x86-${osname}" + ;; +esac + # # This extracts the library directories that will be searched by the Sun @@ -356,7 +364,9 @@ # after it has prompted the user for whether to use threads. case "$usethreads" in $define|true|[yY]*) - ccflags="-D_REENTRANT $ccflags" + # -D_POSIX_C_SOURCE=199506L doesn't compile with gcc 2.95.2 :-( + #ccflags="-D_POSIX_C_SOURCE=199506L -D_REENTRANT $ccflags" + ccflags="-D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT $ccflags" # -lpthread overrides some lib C functions, so put it before c. set `echo X "$libswanted "| sed -e "s/ c / pthread c /"` @@ -460,7 +470,7 @@ ;; esac -if test `uname -p` = "sparc"; then +if test `uname -p` = sparc -o `uname -p` = i386; then cat > UU/use64bitint.cbu <<'EOCBU' # This script UU/use64bitint.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use 64 bit integers. @@ -510,16 +520,19 @@ exit 1 ;; esac - libc='/usr/lib/sparcv9/libc.so' - if test ! -f $libc; then - cat >&4 <&4 </dev/null" in *gcc*) echo 'int main() { return 0; }' > try.c @@ -537,9 +550,12 @@ exit 1 ;; esac - loclibpth="/usr/lib/sparcv9 $loclibpth" - ccflags="$ccflags -mcpu=v9 -m64" - if test X`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null` != X; then + if test "$processor" = sparc; then + loclibpth="/usr/lib/sparcv9 $loclibpth" + ccflags="$ccflags -mcpu=v9" + fi + ccflags="$ccflags -m64" + if test $processor = sparc -a X`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null` != X; then # This adds in -Wa,-xarch=v9. I suspect that's superfluous, # since the -m64 above should do that already. Someone # with gcc-3.x.x, please test with gcc -v. A.D. 20-Nov-2003 @@ -554,10 +570,13 @@ lddlflags="$lddlflags -G `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" echo "int main() { return(0); } " > try.c tryworkshopcc="${cc:-cc} try.c -o try $ccflags" - loclibpth="/usr/lib/sparcv9 /usr/ccs/lib/sparcv9 `$getworkshoplibs` $loclibpth" + if test "$processor" = sparc; then + loclibpth="/usr/lib/sparcv9 /usr/ccs/lib/sparcv9 $loclibpth" + fi + loclibpth="`$getworkshoplibs` $loclibpth" ;; esac - + unset processor use64bitall_done=yes archname64=64 ;; diff -ruN perl-5.8.7/intrpvar.h AP813_source/intrpvar.h --- perl-5.8.7/intrpvar.h Fri May 27 04:06:19 2005 +++ AP813_source/intrpvar.h Mon Jun 6 23:33:08 2005 @@ -527,11 +527,19 @@ PERLVAR(Isort_RealCmp, SVCOMPARE_t) +#ifndef PERL_DARWIN +/* Iin_load_module moved here because it was already in build 806 */ +PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */ +#endif + PERLVARI(Icheckav_save, AV*, Nullav) /* save CHECK{}s when compiling */ PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */ +#ifdef PERL_DARWIN +/* for OS X build 813 is the first release, so keep original layout */ PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */ +#endif PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ diff -ruN perl-5.8.7/lib/CGI/Carp.pm AP813_source/lib/CGI/Carp.pm --- perl-5.8.7/lib/CGI/Carp.pm Mon May 16 01:56:24 2005 +++ AP813_source/lib/CGI/Carp.pm Mon Jun 6 23:33:08 2005 @@ -368,12 +368,16 @@ # The mod_perl package Apache::Registry loads CGI programs by calling -# eval. These evals don't count when looking at the stack backtrace. +# eval, as does PerlEx. These evals don't count when looking at the +# stack backtrace. sub _longmess { my $message = Carp::longmess(); - $message =~ s,eval[^\n]+(ModPerl|Apache)/(?:Registry|Dispatch)\w*\.pm.*,,s - if exists $ENV{MOD_PERL}; - return $message; + my $mod_perl = exists $ENV{MOD_PERL}; + my $plex = exists($ENV{'GATEWAY_INTERFACE'}) + && $ENV{'GATEWAY_INTERFACE'} =~ /^CGI-PerlEx/; + $message =~ s,eval[^\n]+((ModPerl|Apache)/Registry\w*\.pm|\s*PerlEx::Precompiler).*,,s + if $mod_perl or $plex; + return $message; } sub ineval { @@ -441,13 +445,15 @@ For help, please send mail to $wm, giving this error message and the time and date of the error. END - ; - my $mod_perl = exists $ENV{MOD_PERL}; + ; + my $mod_perl = exists $ENV{MOD_PERL}; + my $plex = exists($ENV{'GATEWAY_INTERFACE'}) + && $ENV{'GATEWAY_INTERFACE'} =~ /^CGI-PerlEx/; if ($CUSTOM_MSG) { if (ref($CUSTOM_MSG) eq 'CODE') { print STDOUT "Content-type: text/html\n\n" - unless $mod_perl; + unless $mod_perl || $plex; &$CUSTOM_MSG($msg); # nicer to perl 5.003 users return; } else { diff -ruN perl-5.8.7/lib/ExtUtils/Install.pm AP813_source/lib/ExtUtils/Install.pm --- perl-5.8.7/lib/ExtUtils/Install.pm Mon Jan 5 15:01:10 2004 +++ AP813_source/lib/ExtUtils/Install.pm Mon Jun 6 23:33:09 2005 @@ -205,7 +205,7 @@ if ($pack{'write'}) { $dir = install_rooted_dir(dirname($pack{'write'})); mkpath($dir,0,0755) unless $nonono; - print "Writing $pack{'write'}\n"; + print "Writing $pack{'write'}\n" if $verbose; $packlist->write(install_rooted_file($pack{'write'})) unless $nonono; } } @@ -370,7 +370,7 @@ } # if not verbose, we just say nothing } else { - print "Unlinking $targetfile (shadowing?)\n"; + print "Unlinking $targetfile (shadowing?)\n" if $verbose; forceunlink($targetfile); } } diff -ruN perl-5.8.7/lib/ExtUtils/MM_Unix.pm AP813_source/lib/ExtUtils/MM_Unix.pm --- perl-5.8.7/lib/ExtUtils/MM_Unix.pm Mon Jan 5 15:01:10 2004 +++ AP813_source/lib/ExtUtils/MM_Unix.pm Mon Jun 6 23:33:09 2005 @@ -3357,7 +3357,14 @@ } - $ppd_xml .= sprintf <<'PPD_OUT', $Config{archname}; + + my $archname = $Config{archname}; + if ($^V ge v5.8) { +# archname did not change from 5.6 to 5.8, but those versions may not be not binary compatible +# so now we append the part of the version that changes when binary compatibility may change + $archname .= "-". substr($Config{version},0,3); + } + $ppd_xml .= sprintf <<'PPD_OUT', $archname; PPD_OUT diff -ruN perl-5.8.7/lib/ExtUtils/instmodsh AP813_source/lib/ExtUtils/instmodsh --- perl-5.8.7/lib/ExtUtils/instmodsh Mon Jan 5 15:01:11 2004 +++ AP813_source/lib/ExtUtils/instmodsh Mon Jun 6 23:33:09 2005 @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl -w +#!/usr/bin/perl -w use strict; use IO::File; @@ -7,93 +7,145 @@ use vars qw($Inst @Modules); -################################################################################ -sub do_module($) -{ -my ($module) = @_; -my $help = < - Create a tar archive of the module + h - Display module help q - Quit the module EOF -print($help); -while (1) - { - print("$module cmd? "); - my $reply = ; chomp($reply); - CASE: - { - $reply =~ /^f\s*/ and do - { - my $class = (split(' ', $reply))[1]; - $class = 'all' if (! $class); - my @files; - if (eval { @files = $Inst->files($module, $class); }) - { - print("$class files in $module are:\n ", - join("\n ", @files), "\n"); - last CASE; - } - else - { print($@); } - }; - $reply =~ /^d\s*/ and do - { - my $class = (split(' ', $reply))[1]; - $class = 'all' if (! $class); - my @dirs; - if (eval { @dirs = $Inst->directories($module, $class); }) - { - print("$class directories in $module are:\n ", - join("\n ", @dirs), "\n"); - last CASE; - } - else - { print($@); } - }; - $reply =~ /^t\s*/ and do - { - my $file = (split(' ', $reply))[1]; - my $tmp = "/tmp/inst.$$"; - if (my $fh = IO::File->new($tmp, "w")) - { - $fh->print(join("\n", $Inst->files($module))); - $fh->close(); - system("tar cvf $file -I $tmp"); - unlink($tmp); - last CASE; - } - else { print("Can't open $file: $!\n"); } - last CASE; - }; - $reply eq 'v' and do - { - if (my @missing = $Inst->validate($module)) - { - print("Files missing from $module are:\n ", - join("\n ", @missing), "\n"); - } - else - { - print("$module has no missing files\n"); - } - last CASE; - }; - $reply eq 'q' and do - { - return; - }; - # Default - print($help); - } - } + +my %Module_Commands = ( + f => \&list_installed, + d => \&list_directories, + v => \&validate_packlist, + t => \&create_archive, + h => \&module_help, + ); + +sub do_module($) { + my ($module) = @_; + + print($Module_Help); + MODULE_CMD: while (1) { + print("$module cmd? "); + + my $reply = ; chomp($reply); + my($cmd) = $reply =~ /^(\w)\b/; + + last if $cmd eq 'q'; + + if( $Module_Commands{$cmd} ) { + $Module_Commands{$cmd}->($reply, $module); + } + elsif( $cmd eq 'q' ) { + last MODULE_CMD; + } + else { + module_help(); + } + } } -################################################################################ + +sub list_installed { + my($reply, $module) = @_; + + my $class = (split(' ', $reply))[1]; + $class = 'all' unless $class; + + my @files; + if (eval { @files = $Inst->files($module, $class); }) { + print("$class files in $module are:\n ", + join("\n ", @files), "\n"); + } + else { + print($@); + } +}; + + +sub list_directories { + my($reply, $module) = @_; + + my $class = (split(' ', $reply))[1]; + $class = 'all' unless $class; + + my @dirs; + if (eval { @dirs = $Inst->directories($module, $class); }) { + print("$class directories in $module are:\n ", + join("\n ", @dirs), "\n"); + } + else { + print($@); + } +} + + +sub create_archive { + my($reply, $module) = @_; + + my $file = (split(' ', $reply))[1]; + + if( !(defined $file and length $file) ) { + print "No tar file specified\n"; + } + elsif( eval { require Archive::Tar } ) { + Archive::Tar->create_archive($file, 0, $Inst->files($module)); + } + else { + my($first, @rest) = $Inst->files($module); + system('tar', 'cvf', $file, $first); + for my $f (@rest) { + system('tar', 'rvf', $file, $f); + } + print "Can't use tar\n" if $?; + } +} + + +sub validate_packlist { + my($reply, $module) = @_; + + if (my @missing = $Inst->validate($module)) { + print("Files missing from $module are:\n ", + join("\n ", @missing), "\n"); + } + else { + print("$module has no missing files\n"); + } +} + +sub module_help { + print $Module_Help; +} + + + +############################################################################## sub toplevel() { @@ -130,10 +182,11 @@ } } -################################################################################ + +############################################################################### $Inst = ExtUtils::Installed->new(); @Modules = $Inst->modules(); toplevel(); -################################################################################ +############################################################################### diff -ruN perl-5.8.7/lib/ExtUtils/t/basic.t AP813_source/lib/ExtUtils/t/basic.t --- perl-5.8.7/lib/ExtUtils/t/basic.t Mon Jan 5 15:01:11 2004 +++ AP813_source/lib/ExtUtils/t/basic.t Mon Jun 6 23:33:10 2005 @@ -96,7 +96,13 @@ ' ' ); like( $ppd_html, qr{^\s*}m, ' ' ); -like( $ppd_html, qr{^\s*}m, +my $archname = $Config{archname}; +if ($^V ge v5.8) { +# archname did not change from 5.6 to 5.8, but those versions may not be not binary compatible +# so now we append the part of the version that changes when binary compatibility may change + $archname .= "-". substr($Config{version},0,3); +} +like( $ppd_html, qr{^\s*}m, ' '); like( $ppd_html, qr{^\s*}m, ' '); like( $ppd_html, qr{^\s*}m, ' '); @@ -118,7 +124,7 @@ diag $test_out; -my $install_out = run("$make install"); +my $install_out = run("$make install VERBINST=1"); is( $?, 0, 'install' ) || diag $install_out; like( $install_out, qr/^Installing /m ); like( $install_out, qr/^Writing /m ); @@ -138,7 +144,7 @@ SKIP: { skip "VMS install targets do not preserve $(PREFIX)", 8 if $Is_VMS; - $install_out = run("$make install PREFIX=elsewhere"); + $install_out = run("$make install VERBINST=1 PREFIX=elsewhere"); is( $?, 0, 'install with PREFIX override' ) || diag $install_out; like( $install_out, qr/^Installing /m ); like( $install_out, qr/^Writing /m ); @@ -157,7 +163,7 @@ SKIP: { skip "VMS install targets do not preserve $(DESTDIR)", 10 if $Is_VMS; - $install_out = run("$make install PREFIX= DESTDIR=other"); + $install_out = run("$make install VERBINST=1 PREFIX= DESTDIR=other"); is( $?, 0, 'install with DESTDIR' ) || diag $install_out; like( $install_out, qr/^Installing /m ); @@ -197,7 +203,7 @@ SKIP: { skip "VMS install targets do not preserve $(PREFIX)", 9 if $Is_VMS; - $install_out = run("$make install PREFIX=elsewhere DESTDIR=other/"); + $install_out = run("$make install VERBINST=1 PREFIX=elsewhere DESTDIR=other/"); is( $?, 0, 'install with PREFIX override and DESTDIR' ) || diag $install_out; like( $install_out, qr/^Installing /m ); diff -ruN perl-5.8.7/lib/Net/Ping.pm AP813_source/lib/Net/Ping.pm --- perl-5.8.7/lib/Net/Ping.pm Sun Aug 3 13:28:03 2003 +++ AP813_source/lib/Net/Ping.pm Mon Jun 6 23:33:11 2005 @@ -396,6 +396,7 @@ } use constant ICMP_ECHOREPLY => 0; # ICMP packet types +use constant ICMP_UNREACHABLE => 3; use constant ICMP_ECHO => 8; use constant ICMP_STRUCT => "C2 n3 A"; # Structure of a minimal ICMP packet use constant SUBCODE => 0; # No ICMP subcode for ECHO and ECHOREPLY @@ -480,8 +481,11 @@ ($from_seq == $self->{"seq"})) { if ($from_type == ICMP_ECHOREPLY){ $ret = 1; + $done = 1; + } + elsif ($from_type == ICMP_UNREACHABLE) { + $done = 1; } - $done = 1; } } else { # Oops, timed out $done = 1; diff -ruN perl-5.8.7/lib/Pod/Find.pm AP813_source/lib/Pod/Find.pm --- perl-5.8.7/lib/Pod/Find.pm Sun Apr 3 08:48:45 2005 +++ AP813_source/lib/Pod/Find.pm Mon Jun 6 23:33:12 2005 @@ -196,7 +196,7 @@ my $name; if(-f $try) { if($name = _check_and_extract_name($try, $opts{-verbose})) { - _check_for_duplicates($try, $name, \%names, \%pods); + _check_for_duplicates($try, $name, \%names, \%pods, $opts{-verbose}); } next; } @@ -225,7 +225,7 @@ return; } if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) { - _check_for_duplicates($item, $name, \%names, \%pods); + _check_for_duplicates($item, $name, \%names, \%pods, $opts{-verbose}); } }, $try); # end of File::Find::find } @@ -234,11 +234,12 @@ } sub _check_for_duplicates { - my ($file, $name, $names_ref, $pods_ref) = @_; - if($$names_ref{$name}) { - warn "Duplicate POD found (shadowing?): $name ($file)\n"; - warn " Already seen in ", - join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n"; + my ($file, $name, $names_ref, $pods_ref, $verbose) = @_; + if ($$names_ref{$name}) { + warn "Duplicate POD found (shadowing?): $name ($file)\n", + " Already seen in ", + join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n" + if $verbose; } else { $$names_ref{$name} = 1; diff -ruN perl-5.8.7/lib/if.pm AP813_source/lib/if.pm --- perl-5.8.7/lib/if.pm Thu Feb 13 08:05:53 2003 +++ AP813_source/lib/if.pm Mon Jun 6 23:33:13 2005 @@ -1,6 +1,6 @@ package if; -our $VERSION = '0.03'; +$VERSION = '0.04'; sub work { my $method = shift() ? 'import' : 'unimport'; @@ -8,7 +8,7 @@ my $p = $_[0]; # PACKAGE (my $file = "$p.pm") =~ s!::!/!g; - require $file or die; + require $file; my $m = $p->can($method); goto &$m if $m; diff -ruN perl-5.8.7/makedef.pl AP813_source/makedef.pl --- perl-5.8.7/makedef.pl Mon May 9 06:54:37 2005 +++ AP813_source/makedef.pl Mon Jun 6 23:33:15 2005 @@ -373,6 +373,9 @@ PL_statusvalue_vms PL_sys_intern )]); + emit_symbols([qw( + boot_DynaLoader + )]); } elsif ($PLATFORM eq 'os2') { emit_symbols([qw( diff -ruN perl-5.8.7/patchlevel.h AP813_source/patchlevel.h --- perl-5.8.7/patchlevel.h Mon May 30 14:53:38 2005 +++ AP813_source/patchlevel.h Mon Jun 6 23:33:16 2005 @@ -10,6 +10,8 @@ #ifndef __PATCHLEVEL_H_INCLUDED__ +#include "BuildInfo.h" + /* do not adjust the whitespace! Configure expects the numbers to be * exactly on the third column */ @@ -119,7 +121,19 @@ #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT) static char *local_patches[] = { - NULL + NULL + ,ACTIVEPERL_LOCAL_PATCHES_ENTRY +# if !defined(PERL_DARWIN) + ,"Iin_load_module moved for compatibility with build 806" +# endif +# if defined(__hpux) + ,"Avoid signal flag SA_RESTART for older versions of HP-UX" +# endif + ,"PerlEx hacks for CGI::Carp" + ,"Less verbose ExtUtils::Install and Pod::Find" + ,"instmodsh upgraded from ExtUtils-MakeMaker-6.25" + ,"24699 ICMP_UNREACHABLE handling in Net::Ping" + ,"21540 Fix backward-compatibility issues in if.pm" ,NULL }; diff -ruN perl-5.8.7/perlio.h AP813_source/perlio.h --- perl-5.8.7/perlio.h Tue Nov 16 13:55:02 2004 +++ AP813_source/perlio.h Mon Jun 6 23:33:16 2005 @@ -102,10 +102,10 @@ #define PerlIO PerlIO #define PERLIO_LAYERS 1 -extern void PerlIO_define_layer(pTHX_ PerlIO_funcs *tab); +extern void PerlIO_define_layer(pTHX_ PerlIO_funcs *); extern PerlIO_funcs *PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load); -extern PerlIO *PerlIO_push(pTHX_ PerlIO *f, PerlIO_funcs *tab, +extern PerlIO *PerlIO_push(pTHX_ PerlIO *f, PerlIO_funcs *, const char *mode, SV *arg); extern void PerlIO_pop(pTHX_ PerlIO *f); extern AV* PerlIO_get_layers(pTHX_ PerlIO *f); diff -ruN perl-5.8.7/pod/perl.pod AP813_source/pod/perl.pod --- perl-5.8.7/pod/perl.pod Sun May 29 08:24:36 2005 +++ AP813_source/pod/perl.pod Mon Jun 6 23:33:16 2005 @@ -24,6 +24,8 @@ perlintro Perl introduction for beginners perltoc Perl documentation table of contents + activeperl ActivePerl overview + =head2 Tutorials perlreftut Perl references short introduction @@ -147,6 +149,9 @@ perl56delta Perl changes in version 5.6 perl5005delta Perl changes in version 5.005 perl5004delta Perl changes in version 5.004 + + activeperl-release Release notes for ActivePerl + activeperl-changes ActivePerl revision history perlartistic Perl Artistic License perlgpl GNU General Public License diff -ruN perl-5.8.7/t/op/sig.t AP813_source/t/op/sig.t --- perl-5.8.7/t/op/sig.t Wed Dec 31 16:00:00 1969 +++ AP813_source/t/op/sig.t Mon Jun 6 23:33:19 2005 @@ -0,0 +1,56 @@ +#!perl -w + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + eval { + require POSIX; + POSIX::->import(qw(WNOHANG SIGINT SIGTERM)); + }; + if ($@ or !$Config{d_fork}) { + print "# $@\n"; + print "1..0 # skipped, not posix compatible\n"; + exit 0; + } +} + +use strict; + +my $done = 0; +sub reaper { + print "# got sig\n"; + $done = 1; +} + +sub start_child { + my $pid = fork(); + + defined $pid or die "fork() failed: $!"; + unless ($pid) { + # child + $SIG{INT} = $SIG{TERM} = \&reaper; + while () { + last if $done; + sleep(30); + } + exit; + } + sleep 1; + return $pid; +} + +my $test = 1; +my @signals = (SIGINT, SIGTERM); +print "1.." . (@signals * 3) . "\n"; + +# SIGINT/SIGTERM should not restart sleep() +for my $sig (@signals) { + my $pid = start_child(); + print "not " unless kill(SIGINT, $pid) == 1; + print "ok $test\n"; ++$test; + sleep 1; + print "not " unless waitpid($pid, WNOHANG) == $pid; + print "ok $test\n"; ++$test; + print "# [$?]\nnot " unless 0 == ($? >> 8); + print "ok $test\n"; ++$test; +} diff -ruN perl-5.8.7/util.c AP813_source/util.c --- perl-5.8.7/util.c Mon May 30 06:32:40 2005 +++ AP813_source/util.c Mon Jun 6 23:33:20 2005 @@ -2375,8 +2375,14 @@ sigemptyset(&act.sa_mask); act.sa_flags = 0; #ifdef SA_RESTART - if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) - act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */ + if ((PL_signals & PERL_SIGNALS_UNSAFE_FLAG) +# if defined(__hpux) && !(defined(__ux_version) && __ux_version <= 1020) + && signo != SIGTERM && signo != SIGINT +# endif + ) + { + act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */ + } #endif #if defined(SA_NOCLDWAIT) && !defined(BSDish) /* See [perl #18849] */ if (signo == SIGCHLD && handler == (Sighandler_t)SIG_IGN) diff -ruN perl-5.8.7/win32/Makefile AP813_source/win32/Makefile --- perl-5.8.7/win32/Makefile Sun May 29 08:24:37 2005 +++ AP813_source/win32/Makefile Mon Jun 6 23:33:21 2005 @@ -51,7 +51,7 @@ # before anything else. This script can then be set up, for example, # to add additional entries to @INC. # -#USE_SITECUST = define +USE_SITECUST = define # # uncomment to enable multiple interpreters. This is need for fork() @@ -177,6 +177,7 @@ # # Additional compiler flags can be specified here. # +BUILDOPT = $(BUILDOPTEXTRA) # Adding -DPERL_HASH_SEED_EXPLICIT will disable randomization of Perl's # internal hash function unless the PERL_HASH_SEED environment variable is set. @@ -211,6 +212,12 @@ #BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS # +# This should be enabled to maintain binary compatibility with Perl 5.8.0. +# If you want to use the new hash seed functionality then all Perl modules +# must be recompiled with Perl 5.8.1. +BUILDOPT = $(BUILDOPT) -DNO_HASH_SEED + +# # specify semicolon-separated list of extra directories that modules will # look for libraries (spaces in path names need not be quoted) # @@ -220,7 +227,7 @@ # set this to your email address (perl will guess a value from # from your loginname and your hostname, which may not be right) # -#EMAIL = +EMAIL = support@ActiveState.com ## ## Build configuration ends. @@ -514,7 +521,7 @@ PERLEXE_ICO = .\perlexe.ico PERLEXE_RES = .\perlexe.res -PERLDLL_RES = +PERLDLL_RES = .\perldll.res # 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 @@ -974,10 +981,10 @@ << $(XCOPY) $(PERLIMPLIB) $(COREDIR) -$(PERLEXE_ICO): $(MINIPERL) makeico.pl - $(MINIPERL) makeico.pl > $@ - -$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO) +#$(PERLEXE_ICO): $(MINIPERL) makeico.pl +# $(MINIPERL) makeico.pl > $@ +# +#$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO) $(MINIMOD) : $(MINIPERL) ..\minimod.pl cd .. @@ -1186,7 +1193,8 @@ -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new -del /f $(CONFIGPM) -del /f bin\*.bat - -del /f $(PERLEXE_ICO) perl.base +# -del /f $(PERLEXE_ICO) + -del /f perl.base -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib -cd $(EXTDIR) && del /s *.def Makefile Makefile.old -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) diff -ruN perl-5.8.7/win32/makefile.mk AP813_source/win32/makefile.mk --- perl-5.8.7/win32/makefile.mk Sun May 29 08:24:37 2005 +++ AP813_source/win32/makefile.mk Mon Jun 6 23:33:21 2005 @@ -53,7 +53,7 @@ # before anything else. This script can then be set up, for example, # to add additional entries to @INC. # -#USE_SITECUST *= define +USE_SITECUST *= define # # uncomment to enable multiple interpreters. This is need for fork() @@ -202,6 +202,7 @@ # # Additional compiler flags can be specified here. # +BUILDOPT *= $(BUILDOPTEXTRA) # # Adding -DPERL_HASH_SEED_EXPLICIT will disable randomization of Perl's @@ -236,6 +237,12 @@ #BUILDOPT += -DPERL_TEXTMODE_SCRIPTS # +# This should be enabled to maintain binary compatibility with Perl 5.8.0. +# If you want to use the new hash seed functionality then all Perl modules +# must be recompiled with Perl 5.8.1. +BUILDOPT += -DNO_HASH_SEED + +# # specify semicolon-separated list of extra directories that modules will # look for libraries (spaces in path names need not be quoted) # @@ -251,7 +258,7 @@ # set this to your email address (perl will guess a value from # from your loginname and your hostname, which may not be right) # -#EMAIL *= +EMAIL *= support@ActiveState.com ## ## Build configuration ends. @@ -654,7 +661,7 @@ PERLEXE_ICO = .\perlexe.ico PERLEXE_RES = .\perlexe.res -PERLDLL_RES = +PERLDLL_RES = .\perldll.res # 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 @@ -1121,11 +1128,10 @@ .ENDIF $(XCOPY) $(PERLIMPLIB) $(COREDIR) - -$(PERLEXE_ICO): $(MINIPERL) makeico.pl - $(MINIPERL) makeico.pl > $@ - -$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO) +#$(PERLEXE_ICO): $(MINIPERL) makeico.pl +# $(MINIPERL) makeico.pl > $@ +# +#$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO) $(MINIMOD) : $(MINIPERL) ..\minimod.pl cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm @@ -1345,8 +1351,8 @@ -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new -del /f $(CONFIGPM) -del /f bin\*.bat - -del /f perllibst.h - -del /f $(PERLEXE_ICO) perl.base +# -del /f $(PERLEXE_ICO) + -del /f perl.base -cd .. && del /s *$(a) *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib -cd $(EXTDIR) && del /s *.def Makefile Makefile.old -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) Binary files perl-5.8.7/win32/perl.ico and AP813_source/win32/perl.ico differ diff -ruN perl-5.8.7/win32/perldll.rc AP813_source/win32/perldll.rc --- perl-5.8.7/win32/perldll.rc Wed Dec 31 16:00:00 1969 +++ AP813_source/win32/perldll.rc Mon Jun 6 23:33:21 2005 @@ -0,0 +1,52 @@ +// PerlDll.rc + +// (c) 1995-1998 Microsoft Corporation. All rights reserved. +// Developed by ActiveState Tool Corp., http://www.ActiveState.com + +// You may distribute under the terms of either the GNU General Public +// License or the Artistic License, as specified in the README file. + +#include +#include "BuildInfo.h" + +PERLDLL ICON perl.ico + +#ifndef _DEBUG +#define VER_DEBUG 0 +#else +#define VER_DEBUG VS_FF_DEBUG +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PERLRC_VERSION + PRODUCTVERSION PERLRC_VERSION + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS VER_DEBUG + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + +BEGIN +BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "ActiveState, a division of Sophos\0", + VALUE "FileDescription", "Perl Interpreter\0", + VALUE "FileVersion", PERLFILEVERSION, + VALUE "InternalName", "perl58.dll\0", + VALUE "LegalCopyright", "Copyright 1987-2004, Larry Wall, Binary build by ActiveState, a division of Sophos, http://www.ActiveState.com\0", + VALUE "LegalTrademarks", "\0", + VALUE "OriginalFilename", "perl58.dll\0", + VALUE "ProductName", PERLPRODUCTNAME, + VALUE "ProductVersion", PERLPRODUCTVERSION, + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 0x04E4 + // English language (0x409) and the Windows ANSI codepage (0x04E4) + END +END + diff -ruN perl-5.8.7/win32/perlexe.rc AP813_source/win32/perlexe.rc --- perl-5.8.7/win32/perlexe.rc Tue Jan 27 14:10:24 2004 +++ AP813_source/win32/perlexe.rc Mon Jun 6 23:33:21 2005 @@ -1 +1,52 @@ -PERLEXE ICON perlexe.ico +// PerlExe.rc + +// (c) 1995-1999 Microsoft Corporation. All rights reserved. +// Developed by ActiveState Tool Corp., http://www.ActiveState.com + +// You may distribute under the terms of either the GNU General Public +// License or the Artistic License, as specified in the README file. + +#include +#include "BuildInfo.h" + +PERLEXE ICON perl.ico + +#ifndef _DEBUG +#define VER_DEBUG 0 +#else +#define VER_DEBUG VS_FF_DEBUG +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PERLRC_VERSION + PRODUCTVERSION PERLRC_VERSION + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS VER_DEBUG + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE VFT2_UNKNOWN + +BEGIN +BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "ActiveState, a division of Sophos\0", + VALUE "FileDescription", "Perl Command Line Interpreter\0", + VALUE "FileVersion", PERLFILEVERSION, + VALUE "InternalName", "perl.exe\0", + VALUE "LegalCopyright", "Copyright 1987-2004, Larry Wall, Binary build by ActiveState, a division of Sophos, http://www.ActiveState.com\0", + VALUE "LegalTrademarks", "\0", + VALUE "OriginalFilename", "perl.exe\0", + VALUE "ProductName", PERLPRODUCTNAME, + VALUE "ProductVersion", PERLPRODUCTVERSION, + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 0x04E4 + // English language (0x409) and the Windows ANSI codepage (0x04E4) + END +END + diff -ruN perl-5.8.7/win32/win32.c AP813_source/win32/win32.c --- perl-5.8.7/win32/win32.c Wed Apr 6 13:51:06 2005 +++ AP813_source/win32/win32.c Mon Jun 6 23:33:21 2005 @@ -4378,6 +4378,13 @@ */ static +XS(w32_BuildNumber) +{ + dXSARGS; + XSRETURN_PV(PRODUCT_BUILD_NUMBER); +} + +static XS(w32_SetChildShowWindow) { dXSARGS; @@ -4952,6 +4959,7 @@ newXS("Win32::GetLongPathName", w32_GetLongPathName, file); newXS("Win32::CopyFile", w32_CopyFile, file); newXS("Win32::Sleep", w32_Sleep, file); + newXS("Win32::BuildNumber", w32_BuildNumber, file); newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file); /* XXX Bloat Alert! The following Activeware preloads really diff -ruN perl-5.8.7/win32/win32.h AP813_source/win32/win32.h --- perl-5.8.7/win32/win32.h Sun Nov 2 13:11:53 2003 +++ AP813_source/win32/win32.h Mon Jun 6 23:33:21 2005 @@ -9,6 +9,8 @@ #ifndef _INC_WIN32_PERL5 #define _INC_WIN32_PERL5 +#include "BuildInfo.h" + #ifndef _WIN32_WINNT # define _WIN32_WINNT 0x0400 /* needed for TryEnterCriticalSection() etc. */ #endif End of Patch.