This patch describes the changes made in ActivePerl build 1602 over the official Perl v5.16.2 sources from CPAN. The included patch may be applied to Perl v5.16.2 sources using the GNU patch utility. e.g: % cd perl-5.16.2 % patch -lNp1 < this_file --------------------------------------------------------------------------- diff -ruN perl-5.16.2/BuildInfo.h AP1602_source/BuildInfo.h --- perl-5.16.2/BuildInfo.h 1969-12-31 16:00:00.000000000 -0800 +++ AP1602_source/BuildInfo.h 2012-12-18 15:14:23.000000000 -0800 @@ -0,0 +1,38 @@ +/* BuildInfo.h + * + * Copyright (C) 1998-2012 ActiveState Corp. All rights reserved. + * + */ + +#ifndef ___BuildInfo__h___ +#define ___BuildInfo__h___ + +#define ACTIVEPERL_PRODUCT "ActivePerl" +#define ACTIVEPERL_VERSION 1602 +#define ACTIVEPERL_SUBVERSION 0 +#define ACTIVEPERL_CHANGELIST " [296513]" +#define ACTIVEPERL_RELEASE_TYPE "" +#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,16,2," STRINGIFY(ACTIVEPERL_VERSION) "\0" +#define PERLRC_VERSION 5,16,2,ACTIVEPERL_VERSION +#define PERLPRODUCTVERSION "Build " PRODUCT_BUILD_NUMBER ACTIVEPERL_CHANGELIST ACTIVEPERL_RELEASE_TYPE "\0" +#define PERLPRODUCTNAME ACTIVEPERL_PRODUCT "\0" +#define ACTIVEPERL_LOCAL_PATCHES_ENTRY ACTIVEPERL_PRODUCT " Build " PRODUCT_BUILD_NUMBER ACTIVEPERL_CHANGELIST ACTIVEPERL_RELEASE_TYPE +#ifdef BUILT_BY_ACTIVESTATE +#define BINARY_BUILD_NOTICE PerlIO_printf(PerlIO_stdout(), "\n\ +Binary build " PRODUCT_BUILD_NUMBER ACTIVEPERL_CHANGELIST ACTIVEPERL_RELEASE_TYPE " provided by ActiveState http://www.ActiveState.com\n\ +Built " __DATE__ " " __TIME__ "\n"); +#endif + +#endif /* ___BuildInfo__h___ */ diff -ruN perl-5.16.2/Configure AP1602_source/Configure --- perl-5.16.2/Configure 2012-10-25 19:44:14.000000000 -0700 +++ AP1602_source/Configure 2012-04-03 01:13:18.000000000 -0700 @@ -213,6 +213,7 @@ extern_C='' mistrustnm='' usedevel='' +config_heavy='' perllibs='' dynamic_ext='' extensions='' @@ -4072,6 +4073,11 @@ esac EOSC +: default Config_heavy.pl +case "$config_heavy" in +'') config_heavy=Config_heavy.pl;; +esac + : function used to set '$1' to '$val' setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef; case "$val$was" in @@ -8376,7 +8382,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 @@ -8479,7 +8485,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. @@ -22809,6 +22815,7 @@ clocktype='$clocktype' comm='$comm' compress='$compress' +config_heavy='$config_heavy' contains='$contains' cp='$cp' cpio='$cpio' @@ -23601,7 +23608,7 @@ passcat='$passcat' patchlevel='$patchlevel' path_sep='$path_sep' -perl5='$perl5' +perl5='$installprefix/bin/perl' perl='$perl' perl_patchlevel='$perl_patchlevel' perl_static_inline='$perl_static_inline' diff -ruN perl-5.16.2/MANIFEST AP1602_source/MANIFEST --- perl-5.16.2/MANIFEST 2012-10-25 20:07:24.000000000 -0700 +++ AP1602_source/MANIFEST 2012-10-27 02:48:10.000000000 -0700 @@ -1,3 +1,4 @@ +activeperl.c ActivePerl specific XS functions Artistic The "Artistic License" AUTHORS Contact info for contributors autodoc.pl Creates pod/perlintern.pod and pod/perlapi.pod @@ -6,6 +7,7 @@ beos/beos.c BeOS port beos/beosish.h BeOS port beos/nm.c BeOS port +BuildInfo.h ActivePerl build number cflags.SH A script that emits C compilation flags per file Changes Describe how to peruse changes between releases charclass_invlists.h Compiled-in inversion lists @@ -3851,6 +3853,7 @@ ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture ext/POSIX/hints/uts.pl Hint for POSIX for named architecture +ext/POSIX/hpux_portable_uname.h Portable HP-UX uname ext/POSIX/lib/POSIX.pm POSIX extension Perl module ext/POSIX/lib/POSIX.pod POSIX extension documentation ext/POSIX/Makefile.PL POSIX extension makefile writer @@ -4171,6 +4174,7 @@ keywords.c Perl_keyword(), generated by regen/keywords.pl keywords.h The keyword numbers l1_char_class_tab.h 256 word bit table of character classes (for handy.h) +lib/ActivePerl.pm Additional ActivePerl functions lib/AnyDBM_File.pm Perl module to emulate dbmopen lib/AnyDBM_File.t See if AnyDBM_File works lib/Benchmark.pm Measure execution time @@ -5301,6 +5305,7 @@ t/op/setpgrpstack.t See if setpgrp works t/op/sigdispatch.t See if signals are always dispatched t/op/sigsystem.t See if system and SIGCHLD handlers play together nicely +t/op/sig.t See if signals work t/op/sleep.t See if sleep works t/op/smartkve.t See if smart deref for keys/values/each works t/op/smartmatch.t See if the ~~ operator works @@ -5595,11 +5600,13 @@ win32/Makefile Win32 makefile for NMAKE (Visual C++ build) win32/Makefile.ce WinCE port win32/makefile.mk Win32 makefile for DMAKE (BC++, VC++ builds) +win32/perldll.rc ActivePerl info resource win32/perlexe.ico perlexe.ico image file win32/perlexe.manifest Assembly manifest file win32/perlexe.rc associated perl binary with icon win32/perlglob.c Win32 port win32/perlhost.h Perl "host" implementation +win32/perl.ico ActivePerl Gecko win32/perllib.c Win32 port win32/perlmaince.c WinCE port win32/perl.rc WinCE port diff -ruN perl-5.16.2/Makefile.SH AP1602_source/Makefile.SH --- perl-5.16.2/Makefile.SH 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/Makefile.SH 2012-10-14 14:33:10.000000000 -0700 @@ -372,6 +372,8 @@ INSTALLPREFIXEXP = $prefix +CONFIG_HEAVY = $config_heavy + !GROK!THIS! # not used by Makefile but by installperl; # mentioned here so that metaconfig picks these up @@ -403,7 +405,7 @@ CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<` -CONFIGPM_FROM_CONFIG_SH = lib/Config.pm lib/Config_heavy.pl +CONFIGPM_FROM_CONFIG_SH = lib/Config.pm lib/$(CONFIG_HEAVY) CONFIGPM = $(CONFIGPM_FROM_CONFIG_SH) lib/Config_git.pl CONFIGPOD = lib/Config.pod @@ -467,13 +469,13 @@ c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c -c5 = $(madlysrc) $(mallocsrc) +c5 = activeperl.c $(madlysrc) $(mallocsrc) c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c obj0 = op$(OBJ_EXT) perl$(OBJ_EXT) obj0mini = perlmini$(OBJ_EXT) opmini$(OBJ_EXT) miniperlmain$(OBJ_EXT) -obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT) keywords$(OBJ_EXT) +obj1 = activeperl$(OBJ_EXT) $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT) keywords$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) @@ -1028,7 +1030,7 @@ $(CONFIGPM_FROM_CONFIG_SH): $(CONFIGPOD) $(CONFIGPOD): config.sh $(MINIPERL_EXE) configpm Porting/Glossary lib/Config_git.pl - $(MINIPERL) configpm + $(MINIPERL) configpm --heavy=lib/$(CONFIG_HEAVY) lib/ExtUtils/Miniperl.pm: miniperlmain.c $(MINIPERL_EXE) minimod.pl $(CONFIGPM) $(MINIPERL) minimod.pl > lib/ExtUtils/Miniperl.pm diff -ruN perl-5.16.2/Porting/Maintainers.pl AP1602_source/Porting/Maintainers.pl --- perl-5.16.2/Porting/Maintainers.pl 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/Porting/Maintainers.pl 2012-07-01 07:07:32.000000000 -0700 @@ -18,6 +18,7 @@ 'andk' => 'Andreas J. Koenig ', 'andya' => 'Andy Armstrong ', 'arandal' => 'Allison Randal ', + 'as' => 'ActiveState 'Audrey Tang ', 'avar' => 'Ævar Arnfjörð Bjarmason ', 'bingos' => 'Chris Williams ', @@ -191,6 +192,13 @@ %Modules = ( + 'ActivePerl' => { + 'MAINTAINER' => 'as', + 'FILES' => q[lib/ActivePerl.pm], + 'CPAN' => 0, + 'UPSTREAM' => undef, + }, + 'AnyDBM_File' => { 'MAINTAINER' => 'p5p', 'FILES' => q[lib/AnyDBM_File.{pm,t}], diff -ruN perl-5.16.2/Porting/pod_lib.pl AP1602_source/Porting/pod_lib.pl --- perl-5.16.2/Porting/pod_lib.pl 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/Porting/pod_lib.pl 2012-04-10 17:22:05.000000000 -0700 @@ -23,7 +23,7 @@ sub slurp_or_die { my $filename = shift; my $fh = open_or_die($filename); - binmode $fh; + # binmode $fh; local $/; my $contents = <$fh>; die "Can't read $filename: $!" unless defined $contents and close $fh; @@ -33,7 +33,7 @@ sub write_or_die { my ($filename, $contents) = @_; open my $fh, '>', $filename or die "Can't open $filename for writing: $!"; - binmode $fh; + # binmode $fh; print $fh $contents or die "Can't write to $filename: $!"; close $fh or die "Can't close $filename: $!"; } @@ -113,7 +113,7 @@ my $filename = "pod/$source"; my $contents = slurp_or_die($filename); my @want = - $contents =~ /perldelta - what is new for perl v(5)\.(\d+)\.(\d+)\n/; + $contents =~ /perldelta - what is new for perl v(5)\.(\d+)\.(\d+)\R/; die "Can't extract version from $filename" unless @want; my $delta_leaf = join '', 'perl', @want, 'delta'; $state{delta_target} = "$delta_leaf.pod"; diff -ruN perl-5.16.2/activeperl.c AP1602_source/activeperl.c --- perl-5.16.2/activeperl.c 1969-12-31 16:00:00.000000000 -0800 +++ AP1602_source/activeperl.c 2011-03-19 07:26:11.000000000 -0800 @@ -0,0 +1,72 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +static +XS(ActivePerl_PRODUCT) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: ActivePerl::PRODUCT()"); + XSRETURN_PV(ACTIVEPERL_PRODUCT); +} + +static +XS(ActivePerl_BUILD) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: ActivePerl::BUILD()"); + XSRETURN_PV(PRODUCT_BUILD_NUMBER); +} + +static +XS(ActivePerl_CHANGELIST) +{ + dXSARGS; + char *str = ACTIVEPERL_CHANGELIST; + if (items != 0) + Perl_croak(aTHX_ "Usage: ActivePerl::CHANGELIST()"); + + while (*str && !isDIGIT(*str)) + str++; + + if (isDIGIT(*str)) { + char *end = str + 1; + while (isDIGIT(*end)) + end++; + XSRETURN_PVN(str, end - str); + } + else { + XSRETURN_UNDEF; + } +} + +#ifdef CONFIG_HEAVY +static +XS(ActivePerl_CONFIG_HEAVY) +{ + dXSARGS; + if (items != 0) + Perl_croak(aTHX_ "Usage: ActivePerl::_CONFIG_HEAVY()"); + XSRETURN_PV(STRINGIFY(CONFIG_HEAVY)); +} +#endif + +void +Perl_boot_core_ActivePerl(pTHX) +{ + char *file = __FILE__; + SV *version_sv = get_sv("ActivePerl::VERSION", TRUE); +#if ACTIVEPERL_SUBVERSION > 0 + Perl_sv_setpvf(aTHX_ version_sv, "%d.%02d", ACTIVEPERL_VERSION, ACTIVEPERL_SUBVERSION); +#else + sv_setiv(version_sv, ACTIVEPERL_VERSION); +#endif + newXS("ActivePerl::PRODUCT", ActivePerl_PRODUCT, file); + newXS("ActivePerl::BUILD", ActivePerl_BUILD, file); + newXS("ActivePerl::CHANGELIST", ActivePerl_CHANGELIST, file); +#ifdef CONFIG_HEAVY + newXS("ActivePerl::_CONFIG_HEAVY", ActivePerl_CONFIG_HEAVY, file); +#endif +} diff -ruN perl-5.16.2/cflags.SH AP1602_source/cflags.SH --- perl-5.16.2/cflags.SH 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/cflags.SH 2011-03-19 07:26:11.000000000 -0800 @@ -279,6 +279,9 @@ ODBM_File) ;; POSIX) ;; SDBM_File) ;; + activeperl) + ccflags="$ccflags -DCONFIG_HEAVY=$config_heavy" + ;; av) ;; byterun) ;; deb) ;; diff -ruN perl-5.16.2/configpm AP1602_source/configpm --- perl-5.16.2/configpm 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/configpm 2012-02-19 15:00:52.000000000 -0800 @@ -45,9 +45,9 @@ # commonly used names to precache (and hence lookup fastest) my %Common; -while ($how_many_common--) { - $_ = ; - chomp; +while () { + next if /^\s*#/; + last unless $how_many_common--; /^(\S+):\s*(\d+)$/ or die "Malformed line '$_'"; $Common{$1} = $1; } @@ -97,6 +97,7 @@ 'glossary' => 1, # --no-glossary - no glossary file inclusion, # for compactness 'chdir' => '', # --chdir=dir - change directory before writing files + 'heavy' => '', # explicitly specify name of Config_heavy.pl ); sub opts { @@ -142,7 +143,9 @@ $Config_POD = "lib/Config.pod"; $Config_SH = "config.sh"; } -($Config_heavy = $Config_PM) =~ s/\.pm$/_heavy.pl/; + +$Config_heavy = $Opts{heavy} || $Config_PM; +$Config_heavy =~ s/\.pm$/_heavy.pl/; die "Can't automatically determine name for Config_heavy.pl from '$Config_PM'" if $Config_heavy eq $Config_PM; @@ -175,6 +178,15 @@ return @patches; } +BEGIN { + unless ($ENV{ACTIVEPERL_CONFIG_DISABLE}) { + eval { + require ActivePerl::Config; + }; + die $@ if $@ && $@ !~ /^Can't locate ActivePerl\/Config\.pm/; + } +} + sub _V { my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); @@ -353,6 +365,16 @@ # Search for it in the big string sub fetch_string { my($self, $key) = @_; + # Let ActivePerl::Config override if it wants + my $value; + $value = _fetch_string(@_) + unless defined(&ActivePerl::Config::override) && + ActivePerl::Config::override($key, $value); + return $self->{$key} = $value; # cache it +} + +sub _fetch_string { + my($self, $key) = @_; EOT @@ -377,7 +399,7 @@ } # So we can say "if $Config{'foo'}". - $self->{$key} = $value eq 'undef' ? undef : $value; # cache it + return $value eq 'undef' ? undef : $value; } EOT @@ -387,7 +409,7 @@ $fetch_string .= <<'EOT'; return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; # So we can say "if $Config{'foo'}". - $self->{$key} = $1 eq 'undef' ? undef : $1; + return $1 eq 'undef' ? undef : $1; } EOT @@ -810,16 +832,26 @@ # Sanity check needed to stop an infite loop if Config_heavy.pl fails to define # &launcher for some reason (eg it got truncated) -$config_txt .= sprintf <<'ENDOFTIE', $fast_config; +$Config_heavy =~ m,([^/\\]+)$,; # basename +$config_txt .= sprintf <<'ENDOFTIE', $1, $1, $fast_config; sub DESTROY { } sub AUTOLOAD { - require 'Config_heavy.pl'; + my $config_heavy = '%s'; + if (defined &ActivePerl::_CONFIG_HEAVY) { + $config_heavy = ActivePerl::_CONFIG_HEAVY(); + } + require $config_heavy; goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; } +sub __unused { + # XXX Keep PerlApp happy + require '%s'; +} + # tie returns the object, so the value returned to require will be true. tie %%Config, 'Config', { %s}; @@ -1163,7 +1195,7 @@ sitelibexp: 4305 privlibexp: 4163 ldlibpthname: 4041 -libpth: 2134 +#libpth: 2134 archname: 1591 exe_ext: 1256 scriptdir: 1155 @@ -1176,18 +1208,18 @@ intsize: 759 usevendorprefix: 642 dlsrc: 624 -cc: 541 -lib_ext: 520 +#cc: 541 +#lib_ext: 520 so: 512 -ld: 501 -ccdlflags: 500 -ldflags: 495 -obj_ext: 495 -cccdlflags: 493 -lddlflags: 493 -ar: 492 +#ld: 501 +#ccdlflags: 500 +#ldflags: 495 +#obj_ext: 495 +#cccdlflags: 493 +#lddlflags: 493 +#ar: 492 dlext: 492 -libc: 492 +#libc: 492 ranlib: 492 full_ar: 491 vendorarchexp: 491 @@ -1219,20 +1251,20 @@ siteprefixexp: 336 installbin: 335 usedl: 332 -ccflags: 285 +#ccflags: 285 startperl: 232 -optimize: 231 +#optimize: 231 usemymalloc: 229 -cpprun: 228 +#cpprun: 228 sharpbang: 228 -perllibs: 225 +#perllibs: 225 usesfio: 224 usethreads: 220 perlpath: 218 extensions: 217 usesocks: 208 shellflags: 198 -make: 191 +#make: 191 d_pwage: 189 d_pwchange: 189 d_pwclass: 189 @@ -1241,10 +1273,10 @@ d_pwgecos: 189 d_pwpasswd: 189 d_pwquota: 189 -gccversion: 189 -libs: 186 +#gccversion: 189 +#libs: 186 useshrplib: 186 -cppflags: 185 +#cppflags: 185 ptrsize: 185 shrpenv: 185 static_ext: 185 @@ -1252,6 +1284,6 @@ uselargefiles: 185 alignbytes: 184 byteorder: 184 -ccversion: 184 +#ccversion: 184 config_args: 184 -cppminus: 184 +#cppminus: 184 diff -ruN perl-5.16.2/cpan/CGI/lib/CGI/Carp.pm AP1602_source/cpan/CGI/lib/CGI/Carp.pm --- perl-5.16.2/cpan/CGI/lib/CGI/Carp.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/CGI/lib/CGI/Carp.pm 2012-03-27 13:34:16.000000000 -0800 @@ -433,11 +433,15 @@ # 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}; + 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; } @@ -541,11 +545,13 @@ END ; 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; eval { &$CUSTOM_MSG($msg); # nicer to perl 5.003 users }; diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm --- perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 2012-03-29 11:47:12.000000000 -0800 @@ -85,6 +85,12 @@ next; } + if ($Config_libext && $thislib =~ /\Q$Config_libext\E$/) { + push @libs, $thislib unless $libs_seen{$thislib}++; + push(@ldloadlibs, $thislib); + next; + } + # Handle possible library arguments. unless ( $thislib =~ s/^-l// ) { warn "Unrecognized argument in LIBS ignored: '$thislib'\n"; diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm --- perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 2012-03-29 11:47:12.000000000 -0800 @@ -455,7 +455,7 @@ my $self = shift; return <<'MAKE_EXT'; -all :: pure_all +all :: pure_all htmlifypods $(NOECHO) $(NOOP) MAKE_EXT @@ -726,6 +726,59 @@ } +=head3 htmlifypods + +Defines targets and routines to translate the pods into html and +put them into the INST_* directories. + +=cut + +sub htmlifypods { + my $self = shift; + + my $POD2HTML_macro = $self->POD2HTML_macro(); + my $htmlifypods_target = $self->htmlifypods_target(); + + return <htmlifypods_target; + +Generates the htmlifypods target. This target generates html pages from +all POD files in MAN1PODS and MAN3PODS. + +=cut + +sub htmlifypods_target { + my($self) = shift; + + my $dependencies = ''; + + # populate dependencies: + foreach my $name (keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}}) { + $dependencies .= " \\\n\t$name"; + } + + my $htmlify = <makemakerdflt_target @@ -1584,6 +1637,7 @@ $self->{INST_MAN1DIR} ||= $self->catdir($Curdir,'blib','man1'); $self->{INST_MAN3DIR} ||= $self->catdir($Curdir,'blib','man3'); + $self->{INST_HTMLDIR} ||= $self->catdir($Curdir,'blib','html'); return 1; } @@ -1756,6 +1810,19 @@ style => $manstyle, }, ); + my %html_layouts = + ( + htmldir => { s => $iprefix, + t =>'perl', + d => 'html', }, + sitehtmldir => { s => $sprefix, + t => 'site', + d => 'html', }, + vendorhtmldir => { s => $vprefix, + t => 'vendor', + d => 'html', }, + ); + my %lib_layouts = ( privlib => { s => $iprefix, @@ -1806,7 +1873,7 @@ vendor => 'VENDORPREFIX' ); - my %layouts = (%bin_layouts, %man_layouts, %lib_layouts); + my %layouts = (%bin_layouts, %man_layouts, %html_layouts, %lib_layouts); while( my($var, $layout) = each(%layouts) ) { my($s, $t, $d, $style) = @{$layout}{qw(s t d style)}; my $r = '$('.$type2prefix{$t}.')'; @@ -1843,7 +1910,8 @@ arch => [('lib', 'perl5', $Config{archname})], bin => [qw(bin)], man1dir => [qw(man man1)], - man3dir => [qw(man man3)] + man3dir => [qw(man man3)], + htmldir => [qw(html)], ); $map{script} = $map{bin}; @@ -2254,6 +2322,37 @@ } +=head3 POD2HTML_macro + + my $pod2html_macro = $self->POD2HTML_macro + +Returns a definition for the POD2HTML macro. This is a program +which emulates the pod2html utility. You can add more switches to the +command by simply appending them on the macro. + +Typical usage: + + $(POD2HTML) podfile1 html_page1 ... + +=cut + +sub POD2HTML_macro { + my $self = shift; + + my $pod2html_exe; + if (eval "require ActivePerl::DocTools; 1;") { + $pod2html_exe = '$(PERLRUN) "-MActivePerl::DocTools" -e "UpdateHTML_blib(installdirs => "$(INSTALLDIRS)")"'; + } + else { + $pod2html_exe = '$(NOOP)'; + } + return <<"END_OF_DEF"; +POD2HTML_EXE = $pod2html_exe +POD2HTML = \$(POD2HTML_EXE) +END_OF_DEF +} + + =head3 POD2MAN_macro my $pod2man_macro = $self->POD2MAN_macro @@ -2470,6 +2569,7 @@ SCRIPT SITESCRIPT VENDORSCRIPT MAN1DIR SITEMAN1DIR VENDORMAN1DIR MAN3DIR SITEMAN3DIR VENDORMAN3DIR + HTMLDIR SITEHTMLDIR VENDORHTMLDIR ); } diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm --- perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 2012-03-29 11:47:12.000000000 -0800 @@ -31,8 +31,8 @@ $ENV{EMXSHELL} = 'sh'; # to run `commands` -my $BORLAND = $Config{'cc'} =~ /^bcc/i; -my $GCC = $Config{'cc'} =~ /^gcc/i; +my $BORLAND = $Config{'cc'} =~ /\bbcc\b/i; +my $GCC = $Config{'cc'} =~ /\bgcc\b/i; =item os_flavor diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm --- perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2012-03-29 11:47:12.000000000 -0800 @@ -376,7 +376,7 @@ VERSION VERSION_MACRO VERSION_SYM DEFINE_VERSION XS_VERSION XS_VERSION_MACRO XS_DEFINE_VERSION INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB - INST_MAN1DIR INST_MAN3DIR + INST_MAN1DIR INST_MAN3DIR INST_HTMLDIR MAN1EXT MAN3EXT INSTALLDIRS INSTALL_BASE DESTDIR PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX @@ -1558,6 +1558,14 @@ sub init_main { my($self) = @_; + unless ( $Config{installsitehtmldir} ) { + $Config_Override{installsitehtmldir} = $Config{installhtmldir}; + } + + unless ( $Config{installvendorhtmldir} ) { + $Config_Override{installvendorhtmldir} = $Config{installhtmldir}; + } + # --- Initialize Module Name and Paths # NAME = Foo::Bar::Oracle @@ -2025,8 +2033,14 @@ my($self, %attribs) = @_; my(@m); + my $doc_update = '$(NOOP)'; + if (eval { require ActivePerl::DocTools; 1; }) { + $doc_update = '$(NOECHO) $(PERLRUN) "-MActivePerl::DocTools" -e '. + 'ActivePerl::DocTools::WriteTOC'; + } + push @m, q{ -install :: pure_install doc_install +install :: pure_install doc_install doc_update $(NOECHO) $(NOOP) install_perl :: pure_perl_install doc_perl_install @@ -2044,6 +2058,9 @@ doc_install :: doc_$(INSTALLDIRS)_install $(NOECHO) $(NOOP) +doc_update :: + }.$doc_update.q{ + pure__install : pure_site_install $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site @@ -2059,7 +2076,8 @@ $(INST_BIN) $(DESTINSTALLBIN) \ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) + $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) \ + $(INST_HTMLDIR) $(DESTINSTALLHTMLDIR) $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ @@ -2073,7 +2091,8 @@ $(INST_BIN) $(DESTINSTALLSITEBIN) \ $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) + $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) \ + $(INST_HTMLDIR) $(DESTINSTALLSITEHTMLDIR) $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ @@ -2086,7 +2105,8 @@ $(INST_BIN) $(DESTINSTALLVENDORBIN) \ $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) + $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) \ + $(INST_HTMLDIR) $(DESTINSTALLVENDORHTMLDIR) doc_perl_install :: all $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod @@ -2124,7 +2144,7 @@ }; push @m, q{ -uninstall :: uninstall_from_$(INSTALLDIRS)dirs +uninstall :: uninstall_from_$(INSTALLDIRS)dirs doc_update $(NOECHO) $(NOOP) uninstall_from_perldirs :: @@ -3528,7 +3548,7 @@ my $self = shift; return <<'MAKE_EXT'; -all :: pure_all manifypods +all :: pure_all htmlifypods manifypods $(NOECHO) $(NOOP) MAKE_EXT } diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm --- perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2012-03-29 11:47:12.000000000 -0800 @@ -257,16 +257,16 @@ FULLPERL FULLPERLRUN FULLPERLRUNINST FUNCLIST H IMPORTS - INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB INST_MAN1DIR INST_MAN3DIR + INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB INST_MAN1DIR INST_MAN3DIR INST_HTMLDIR INSTALLDIRS DESTDIR PREFIX INSTALL_BASE PERLPREFIX SITEPREFIX VENDORPREFIX INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN - INSTALLMAN1DIR INSTALLMAN3DIR - INSTALLSITEMAN1DIR INSTALLSITEMAN3DIR - INSTALLVENDORMAN1DIR INSTALLVENDORMAN3DIR + INSTALLMAN1DIR INSTALLMAN3DIR INSTALLHTMLDIR + INSTALLSITEMAN1DIR INSTALLSITEMAN3DIR INSTALLSITEHTMLDIR + INSTALLVENDORMAN1DIR INSTALLVENDORMAN3DIR INSTALLVENDORHTMLDIR INSTALLSCRIPT INSTALLSITESCRIPT INSTALLVENDORSCRIPT PERL_LIB PERL_ARCHLIB SITELIBEXP SITEARCHEXP @@ -314,7 +314,7 @@ special_targets c_o xs_c xs_o top_targets blibdirs linkext dlsyms dynamic dynamic_bs - dynamic_lib static static_lib manifypods processPL + dynamic_lib static static_lib manifypods htmlifypods processPL installbin subdirs clean_subdirs clean realclean_subdirs realclean metafile signature @@ -373,7 +373,7 @@ # @Prepend_parent = qw( INST_BIN INST_LIB INST_ARCHLIB INST_SCRIPT - MAP_TARGET INST_MAN1DIR INST_MAN3DIR PERL_SRC + MAP_TARGET INST_MAN1DIR INST_MAN3DIR INST_HTMLDIR PERL_SRC PERL FULLPERL ); } @@ -1235,8 +1235,8 @@ =head2 make install make alone puts all relevant files into directories that are named by -the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_MAN1DIR and -INST_MAN3DIR. All these default to something below ./blib if you are +the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_MAN1DIR, INST_MAN3DIR +INST_HTMLDIR. All these default to something below ./blib if you are I building below the perl source directory. If you I building below the perl source, INST_LIB and INST_ARCHLIB default to ../../lib, and INST_SCRIPT is not defined. @@ -1256,6 +1256,7 @@ INST_SCRIPT INSTALLSCRIPT INSTALLSITESCRIPT INSTALLVENDORSCRIPT INST_MAN1DIR INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR INST_MAN3DIR INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR + INST_HTMLDIR INSTALLHTMLDIR INSTALLSITEHTMLDIR INSTALLVENDORHTMLDIR The INSTALL... macros in turn default to their %Config ($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts. @@ -1852,6 +1853,10 @@ Directory to hold the man pages at 'make' time +=item INST_HTMLDIR + +Directory to hold the html documentation at 'make' time + =item INST_SCRIPT Directory, where executable files should be installed during diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm --- perl-5.16.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 2012-03-29 11:47:12.000000000 -0800 @@ -129,7 +129,7 @@ open( my $def, ">", "$data->{FILE}.def" ) or croak("Can't create $data->{FILE}.def: $!\n"); # put library name in quotes (it could be a keyword, like 'Alias') - if ($Config::Config{'cc'} !~ /^gcc/i) { + if ($Config::Config{'cc'} !~ /\bgcc\b/i) { print $def "LIBRARY \"$data->{DLBASE}\"\n"; } print $def "EXPORTS\n "; diff -ruN perl-5.16.2/cpan/ExtUtils-MakeMaker/t/MM_Unix.t AP1602_source/cpan/ExtUtils-MakeMaker/t/MM_Unix.t --- perl-5.16.2/cpan/ExtUtils-MakeMaker/t/MM_Unix.t 2012-08-26 16:11:28.000000000 -0700 +++ AP1602_source/cpan/ExtUtils-MakeMaker/t/MM_Unix.t 2012-03-29 11:47:12.000000000 -0800 @@ -12,7 +12,7 @@ plan skip_all => 'Non-Unix platform'; } else { - plan tests => 110; + plan tests => 111; } } @@ -91,6 +91,7 @@ makeaperl makefile manifypods + htmlifypods needs_linking pasthru perldepend diff -ruN perl-5.16.2/cpan/HTTP-Tiny/t/150_post_form.t AP1602_source/cpan/HTTP-Tiny/t/150_post_form.t --- perl-5.16.2/cpan/HTTP-Tiny/t/150_post_form.t 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/HTTP-Tiny/t/150_post_form.t 2012-04-10 17:22:06.000000000 -0700 @@ -13,11 +13,11 @@ for my $file ( dir_list("t/cases", qr/^form/ ) ) { my $data = do { local (@ARGV,$/) = $file; <> }; - my ($params, $expect_req, $give_res) = split /--+\n/, $data; + my ($params, $expect_req, $give_res) = split /--+\R/, $data; # cleanup source data my $version = HTTP::Tiny->VERSION || 0; $expect_req =~ s{VERSION}{$version}; - s{\n}{$CRLF}g for ($expect_req, $give_res); + s{\R}{$CRLF}g for ($expect_req, $give_res); # figure out what request to make my $case = parse_case($params); diff -ruN perl-5.16.2/cpan/HTTP-Tiny/t/Util.pm AP1602_source/cpan/HTTP-Tiny/t/Util.pm --- perl-5.16.2/cpan/HTTP-Tiny/t/Util.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/HTTP-Tiny/t/Util.pm 2012-04-10 17:22:06.000000000 -0700 @@ -87,7 +87,7 @@ my ($case) = @_; my %args; my $key = ''; - for my $line ( split "\n", $case ) { + for my $line ( split /\R/, $case ) { chomp $line; if ( substr($line,0,1) eq q{ } ) { $line =~ s/^\s+//; diff -ruN perl-5.16.2/cpan/Pod-Parser/lib/Pod/Find.pm AP1602_source/cpan/Pod-Parser/lib/Pod/Find.pm --- perl-5.16.2/cpan/Pod-Parser/lib/Pod/Find.pm 2012-10-11 11:20:44.000000000 -0700 +++ AP1602_source/cpan/Pod-Parser/lib/Pod/Find.pm 2012-03-27 13:34:16.000000000 -0800 @@ -213,7 +213,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; } @@ -243,7 +243,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 } @@ -252,11 +252,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.16.2/cpan/Pod-Parser/t/pod/pod2usage2.t AP1602_source/cpan/Pod-Parser/t/pod/pod2usage2.t --- perl-5.16.2/cpan/Pod-Parser/t/pod/pod2usage2.t 2012-08-26 16:11:28.000000000 -0700 +++ AP1602_source/cpan/Pod-Parser/t/pod/pod2usage2.t 2012-03-27 13:34:16.000000000 -0800 @@ -4,8 +4,8 @@ use strict; BEGIN { - if ($^O eq 'MSWin32' || $^O eq 'VMS') { - plan skip_all => "Not portable on Win32 or VMS\n"; + if ($^O eq 'MSWin32' || $^O eq 'VMS' || $^O eq 'darwin') { + plan skip_all => "Not portable on Win32, VMS or darwin\n"; } else { plan tests => 34; diff -ruN perl-5.16.2/cpan/Win32API-File/t/file.t AP1602_source/cpan/Win32API-File/t/file.t --- perl-5.16.2/cpan/Win32API-File/t/file.t 2012-08-26 16:11:29.000000000 -0700 +++ AP1602_source/cpan/Win32API-File/t/file.t 2012-11-13 16:58:53.000000000 -0800 @@ -24,7 +24,7 @@ # the ../lib directory in @INC will no longer work once # we chdir() into the TEMP directory. -require Win32 unless defined &Win32::FormatMessage; +require Win32; use File::Spec; use Carp; use Carp::Heavy; @@ -304,6 +304,12 @@ ( $text= $dev ) =~ s/\0/\\0/g; print "# $drive => $text\n"; } +elsif (fileLastError() == 5) { # "Access is denied." + for (44..51) { + print "ok ", ++$test, " # skip access by QueryDosDevice has been denied\n"; + } + goto test52; +} print $ok ? "" : "not ", "ok ", ++$test, "\n"; # ok 44 $bits= GetLogicalDrives(); @@ -351,6 +357,7 @@ $ok or print "# $let,$dev: ",fileLastError(),"\n"; print $ok ? "" : "not ", "ok ", ++$test, "\n"; # ok 51 +test52: my $path = $ENV{WINDIR}; my $attrs = GetFileAttributes( $path ); $ok= $attrs != INVALID_FILE_ATTRIBUTES; diff -ruN perl-5.16.2/cpan/podlators/t/text-encoding.t AP1602_source/cpan/podlators/t/text-encoding.t --- perl-5.16.2/cpan/podlators/t/text-encoding.t 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/cpan/podlators/t/text-encoding.t 2012-03-27 13:34:16.000000000 -0800 @@ -41,13 +41,13 @@ while () { my %opts; $opts{utf8} = 1 if $n == 3; - next until $_ eq "###\n"; + next until /^###\R$/; my $parser = Pod::Text->new (%opts); isa_ok ($parser, 'Pod::Text', 'Parser object'); open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n"; eval { binmode (\*TMP, ':raw') }; while () { - last if $_ eq "###\n"; + last if /^###\R$/; print TMP $_; } close TMP; @@ -66,9 +66,10 @@ 1 while unlink ('tmp.pod', 'out.tmp'); my $expected = ''; while () { - last if $_ eq "###\n"; + last if /^###\R$/; $expected .= $_; } + $expected =~ s/\R/\n/g; is ($output, $expected, "Output correct for test $n"); $n++; } diff -ruN perl-5.16.2/embed.fnc AP1602_source/embed.fnc --- perl-5.16.2/embed.fnc 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/embed.fnc 2012-04-23 14:21:00.000000000 -0700 @@ -223,6 +223,7 @@ : Used in perl.c p |void |boot_core_UNIVERSAL : Used in perl.c +p |void |boot_core_ActivePerl p |void |boot_core_PerlIO Ap |void |call_list |I32 oldscope|NN AV *paramList Apd |const PERL_CONTEXT * |caller_cx|I32 level \ diff -ruN perl-5.16.2/embed.h AP1602_source/embed.h --- perl-5.16.2/embed.h 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/embed.h 2012-04-23 14:21:00.000000000 -0700 @@ -1001,6 +1001,7 @@ #define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c) #define block_end(a,b) Perl_block_end(aTHX_ a,b) #define block_start(a) Perl_block_start(aTHX_ a) +#define boot_core_ActivePerl() Perl_boot_core_ActivePerl(aTHX) #define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX) #define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX) #define boot_core_mro() Perl_boot_core_mro(aTHX) diff -ruN perl-5.16.2/ext/DynaLoader/DynaLoader_pm.PL AP1602_source/ext/DynaLoader/DynaLoader_pm.PL --- perl-5.16.2/ext/DynaLoader/DynaLoader_pm.PL 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/ext/DynaLoader/DynaLoader_pm.PL 2012-02-19 15:00:52.000000000 -0800 @@ -86,6 +86,7 @@ BEGIN { $VERSION = '1.14'; + $XS_VERSION = '1.14'; } use Config; @@ -441,6 +442,12 @@ push(@names,"cyg$_.$dl_so") unless m:/:; <> push(@names,"lib$_.$dl_so") unless m:/:; + <<$^O-eq-aix>> + # The AIX linker will look for shared objects in both .so and .a files + # if the program has been linked with the -brtl option. + push(@names,"$_.a") unless m/\.a$/o; + push(@names,"lib$_.a") unless m:/:; + <> push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs"; push(@names, $_); } diff -ruN perl-5.16.2/ext/DynaLoader/Makefile.PL AP1602_source/ext/DynaLoader/Makefile.PL --- perl-5.16.2/ext/DynaLoader/Makefile.PL 2012-10-31 17:13:53.000000000 -0800 +++ AP1602_source/ext/DynaLoader/Makefile.PL 2012-02-21 11:56:03.000000000 -0800 @@ -14,6 +14,7 @@ VERSION_FROM => 'DynaLoader_pm.PL', PL_FILES => {'DynaLoader_pm.PL'=>'DynaLoader.pm'}, PM => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm'}, + XS_VERSION => '1.14', depend => {'DynaLoader$(OBJ_EXT)' => 'dlutils.c'}, clean => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm'}, ); diff -ruN perl-5.16.2/ext/POSIX/POSIX.xs AP1602_source/ext/POSIX/POSIX.xs --- perl-5.16.2/ext/POSIX/POSIX.xs 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/ext/POSIX/POSIX.xs 2012-02-19 15:00:53.000000000 -0800 @@ -17,6 +17,11 @@ #define PERLIO_NOT_STDIO 1 #include "perl.h" #include "XSUB.h" + +#ifdef __hpux +# include "hpux_portable_uname.h" +#endif + #if defined(PERL_IMPLICIT_SYS) # undef signal # undef open diff -ruN perl-5.16.2/ext/POSIX/hpux_portable_uname.h AP1602_source/ext/POSIX/hpux_portable_uname.h --- perl-5.16.2/ext/POSIX/hpux_portable_uname.h 1969-12-31 16:00:00.000000000 -0800 +++ AP1602_source/ext/POSIX/hpux_portable_uname.h 2010-02-18 18:09:35.000000000 -0800 @@ -0,0 +1,60 @@ +#include +#include +#include + + +#define UNAME_V1 "uname" +#define UNAME_V2 "uname{20040821}" +#define SNLEN_V1 15 +#define SNLEN_V2 257 +#define UTSLEN_V1 9 +#define UTSLEN_V2 257 + +typedef struct portable_utsname +{ + char *sysname; + char *nodename; + char *release; + char *version; + char *machine; + char *idnumber; + int utslen; + int snlen; + char infop[UTSLEN_V2 * 7 + UTSLEN_V2]; +} portable_utsname; + +typedef int (*uname_ptr) (void *); + +static int portable_uname(portable_utsname * info) +{ + Dl_info dlinfo; + uname_ptr thisuname; + char **infoc = NULL; + char *c; + int i; + + dladdr((void *) &malloc, &dlinfo); + + if (thisuname = (uname_ptr) dlsym(dlinfo.dli_fbase, UNAME_V2)) { + info->snlen = SNLEN_V2; + info->utslen = UTSLEN_V2; + } + else { + thisuname = (uname_ptr)&uname; + info->snlen = SNLEN_V1; + info->utslen = UTSLEN_V1; + } + + thisuname(info->infop); + + infoc = (char **) info; + c = info->infop; + for (i = 0; i < 6; i++) { + infoc[i] = c; + c += info->utslen; + } + +} + +#define uname portable_uname +#define utsname portable_utsname diff -ruN perl-5.16.2/ext/Pod-Html/lib/Pod/Html.pm AP1602_source/ext/Pod-Html/lib/Pod/Html.pm --- perl-5.16.2/ext/Pod-Html/lib/Pod/Html.pm 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/ext/Pod-Html/lib/Pod/Html.pm 2012-05-31 16:03:38.000000000 -0700 @@ -512,7 +512,7 @@ usage("-") if defined $opt_help; # see if the user asked for help $opt_help = ""; # just to make -w shut-up. - @Podpath = split(":", $opt_podpath) if defined $opt_podpath; + @Podpath = map { s/\|/:/g; $_ } split(":", $opt_podpath) if defined $opt_podpath; warn "--libpods is no longer supported" if defined $opt_libpods; $Backlink = $opt_backlink if defined $opt_backlink; @@ -804,4 +804,41 @@ return $rel_path; } + +# plugin ActiveState's syntax highlighter +sub handle_code { + my($self, $text) = @_; + + my @line = split /\n/, $text; + my $comments = !grep !/^\s*(#.*)?$/, @line; + + # Try to colorize the block as Perl sample code + if (($comments || $text =~ /[;{]/) && + eval {require ActiveState::Scineplex}) + { + my $prefix; + my $input = $text; # Don't modify $text in case the colorizer fails + if ($input =~ /^( +)/) { + $prefix = $1; + s/^$prefix// for @line; + $input = join("\n", @line, ""); + } + my $styled = eval { ActiveState::Scineplex::Annotate($input, 'perl', outputFormat => 'html') }; + if ($styled) { + # If this really looks like code, then we don't want + # to add hyperlinks to URLs embedded in strings etc. + if ($prefix) { + $text = $prefix . join("\n$prefix", split("\n", $styled)) . "\n"; + } + else { + $text = $styled; + } + $self->{'scratch'} .= '' . $text . ''; + return; + } + } + + $self->{'scratch'} .= '' . $self->encode_entities($text) . ''; +} + 1; diff -ruN perl-5.16.2/ext/Sys-Hostname/Hostname.pm AP1602_source/ext/Sys-Hostname/Hostname.pm --- perl-5.16.2/ext/Sys-Hostname/Hostname.pm 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/ext/Sys-Hostname/Hostname.pm 2011-03-19 14:23:26.000000000 -0800 @@ -14,7 +14,7 @@ our $host; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.1601'; { local $SIG{__DIE__}; eval { diff -ruN perl-5.16.2/ext/Sys-Hostname/Hostname.xs AP1602_source/ext/Sys-Hostname/Hostname.xs --- perl-5.16.2/ext/Sys-Hostname/Hostname.xs 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/ext/Sys-Hostname/Hostname.xs 2011-03-19 14:23:26.000000000 -0800 @@ -8,6 +8,15 @@ # include #endif +/* On HP-UX, there are 2 versions of MAXHOSTNAMELEN (64/256) + * depending on large-hostname support or not. Pick the larger + * one so we can work on either one. Bug 52118 + */ +#if defined(__hpux) +# undef MAXHOSTNAMELEN +# define MAXHOSTNAMELEN 256 +#endif + /* a reasonable default */ #ifndef MAXHOSTNAMELEN # define MAXHOSTNAMELEN 256 diff -ruN perl-5.16.2/hints/aix.sh AP1602_source/hints/aix.sh --- perl-5.16.2/hints/aix.sh 2012-10-11 11:21:05.000000000 -0700 +++ AP1602_source/hints/aix.sh 2012-10-14 14:33:12.000000000 -0700 @@ -51,7 +51,9 @@ '') usenativedlopen='true' ;; esac -so="a" +# Use "so" for shared library so that we can store both a static and a +# shared libperl in the same CORE directory. +so="so" # AIX itself uses .o (libc.o) but we prefer compatibility # with the rest of the world and with rest of the scripting # languages (Tcl, Python) and related systems (SWIG). @@ -442,6 +444,7 @@ # to figure out. trylist="`echo $trylist | sed -e 's@^ar @@' -e 's@ ar @ @g' -e 's@ ar$@@'`" ar="ar -X64" + full_ar="/usr/bin/ar -X64" nm_opt="-X64 $nm_opt" case "$qacflags$qaldflags$qalibs" in '') ;; diff -ruN perl-5.16.2/hints/darwin.sh AP1602_source/hints/darwin.sh --- perl-5.16.2/hints/darwin.sh 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/hints/darwin.sh 2011-08-31 14:43:13.000000000 -0700 @@ -184,8 +184,8 @@ *) lddlflags="${ldflags} -bundle -undefined dynamic_lookup" case "$ld" in - *MACOSX_DEVELOPMENT_TARGET*) ;; - *) ld="env MACOSX_DEPLOYMENT_TARGET=10.3 ${ld}" ;; + *-mmacosx-version-min=*) ;; + *) ld="${ld} -mmacosx-version-min=10.5" ;; esac ;; esac diff -ruN perl-5.16.2/hints/hpux.sh AP1602_source/hints/hpux.sh --- perl-5.16.2/hints/hpux.sh 2012-10-25 20:07:28.000000000 -0700 +++ AP1602_source/hints/hpux.sh 2012-10-27 02:48:09.000000000 -0700 @@ -7,6 +7,8 @@ xxOsRevMajor=`uname -r | sed -e 's/^[^0-9]*//' | cut -d. -f1`; xxOsRevMinor=`uname -r | sed -e 's/^[^0-9]*//' | cut -d. -f2`; xxOsRev=`expr 100 \* $xxOsRevMajor + $xxOsRevMinor` +if [ "X$archname" = "X" ]; then + if [ "$xxOsRevMajor" -ge 10 ]; then # This system is running >= 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 diff -ruN perl-5.16.2/hints/solaris_2.sh AP1602_source/hints/solaris_2.sh --- perl-5.16.2/hints/solaris_2.sh 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/hints/solaris_2.sh 2012-02-19 15:00:53.000000000 -0800 @@ -76,6 +76,14 @@ ;; 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 # Workshop compiler, given the command-line supplied in $tryworkshopcc. @@ -693,3 +701,6 @@ ;; esac +# Always use aligned memory access even if our build machines don't +# require it. Ref http://bugs.activestate.com/show_bug.cgi?id=85293 +d_u32align='define' diff -ruN perl-5.16.2/installperl AP1602_source/installperl --- perl-5.16.2/installperl 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/installperl 2012-04-23 14:21:00.000000000 -0700 @@ -765,7 +765,8 @@ if ($dir =~ /^auto\// || ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1}) || ($name =~ /^(.*)\.(?:h|lib)$/i && ($Is_W32 || $Is_NetWare)) || - $name=~/^Config_(heavy|git)\.pl\z/ + $name eq $Config{config_heavy} || + $name eq "Config_git.pl" ) { $installlib = $installarchlib; return unless $do_installarchlib; diff -ruN perl-5.16.2/lib/ActivePerl.pm AP1602_source/lib/ActivePerl.pm --- perl-5.16.2/lib/ActivePerl.pm 1969-12-31 16:00:00.000000000 -0800 +++ AP1602_source/lib/ActivePerl.pm 2011-03-19 07:26:11.000000000 -0800 @@ -0,0 +1,122 @@ +package ActivePerl; + +sub perl_version { + return sprintf("%vd.%s", $^V, BUILD()); +} + +1; + +__END__ + +=head1 NAME + +ActivePerl - ActiveState's quality-assured binary build of Perl + +=head1 SYNOPSIS + + use ActivePerl; + print "$ActivePerl::VERSION\n"; + +=head1 DESCRIPTION + +ActivePerl is ActiveState's quality-assured binary build of Perl, +available for AIX, HP-UX, Linux, Mac OS X, Solaris and +Windows. ActivePerl includes: + +=over + +=item * + +The binary core distribution of perl. See L for details. + +=item * + +A set of useful additional CPAN modules "out of +the box". + +=item * + +The Perl Package Manager, for quick and easy install of additional +Perl extension modules. See L for details. + +=item * + +Complete documentation in HTML format. This is found in the F +sub directory where ActivePerl was installed. + +=back + +The release notes for this version of ActivePerl is available in +L. A list of changes beween builds of ActivePerl +is found in L. + +=head2 The ActivePerl:: module + +The C module provide version information about ActivePerl. +The module is built in so most of its variables and functions are +available without having to C the module. The module was +introduced in ActivePerl 813.1. + +The following functions are available: + +=over + +=item ActivePerl->VERSION + +=item ActivePerl->VERSION( $VERSION ) + +This method returns the current version of ActivePerl. It is a number +like C<1202.01> or C<1202>. With argument croak if the current version +is less than the given number. + +This method is inherited from Perl's C class, and will +usually be invoked indirectly by C, for instance: + + use ActivePerl 1200; + +This statement ensures that the scripts runs under ActivePerl 1200 or +better. If this perl is not ActivePerl or is older than 1200 then this +statement would croak. + +The version number returned is picked up from the $ActivePerl::VERSION +variable. For conditional code it is usually better to test against +this variable directly: + + if (($ActivePerl::VERSION || 0) >= 1200) { + ... + } + +The C<|| 0> ensures that this code does not produce a warning if +running on ActivePerl 813 or older, or running on standard perl. + +=item ActivePerl::PRODUCT + +This constant function returns "ActivePerl" for the free version and +"ActivePerl Enterprise" for the Enterprise product. Earlier ActivePerl +Enterprise versions up to builds 638.8 and 817.4 returned "ActivePerlEE". + +=item ActivePerl::BUILD + +The value returned is the same as found in $ActivePerl::VERSION, but +the subversion number will not be padded with 0. It means that this +value is suitable for printing, but unsafe for numeric comparisons. + +This returns the same value as Win32::BuildNumber(), but this function +is only avalable on the Windows builds of ActivePerl. + +=item ActivePerl::perl_version + +Returns a full version number that also include the version of perl +this ActivePerl release is based on. It returns a string like +"5.12.0.1202" or "5.12.0.1202.1". + +This function is not directly built in and will only be avalable after +'require ActivePerl' has executed. + +=back + +=head1 SEE ALSO + +L, L, L + +=cut diff -ruN perl-5.16.2/lib/ExtUtils/Embed.pm AP1602_source/lib/ExtUtils/Embed.pm --- perl-5.16.2/lib/ExtUtils/Embed.pm 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/lib/ExtUtils/Embed.pm 2012-03-29 11:47:12.000000000 -0800 @@ -18,7 +18,7 @@ use strict; # This is not a dual-life module, so no need for development version numbers -$VERSION = '1.30'; +$VERSION = '1.3001'; @ISA = qw(Exporter); @EXPORT = qw(&xsinit &ldopts @@ -224,9 +224,11 @@ } #print STDERR "\@potential_libs = @potential_libs\n"; + my $lpath = File::Spec->catdir($Config{archlibexp}, 'CORE'); my $libperl; if ($^O eq 'MSWin32') { $libperl = $Config{libperl}; + $lpath = qq["$lpath"]; } elsif ($^O eq 'os390' && $Config{usedl}) { # Nothing for OS/390 (z/OS) dynamic. @@ -234,13 +236,17 @@ $libperl = (grep(/^-l\w*perl\w*$/, @link_args))[0] || ($Config{libperl} =~ /^lib(\w+)(\Q$lib_ext\E|\.\Q$Config{dlext}\E)$/ ? "-l$1" : '') - || "-lperl"; + || "-lperl"; + if ($libperl eq "-lperl" && $Config{libperl} eq "libperl.a" && + -f File::Spec->catfile($lpath, "libperl.so")) + { + $libperl = File::Spec->catfile($lpath, $Config{libperl}); + $lpath = undef; + } } - my $lpath = File::Spec->catdir($Config{archlibexp}, 'CORE'); - $lpath = qq["$lpath"] if $^O eq 'MSWin32'; my($extralibs, $bsloadlibs, $ldloadlibs, $ld_run_path) = - MM->ext(join ' ', "-L$lpath", $libperl, @potential_libs); + MM->ext(join ' ', ($lpath ? "-L$lpath" : ()), $libperl, @potential_libs); my $ld_or_bs = $bsloadlibs || $ldloadlibs; print STDERR "bs: $bsloadlibs ** ld: $ldloadlibs" if $Verbose; diff -ruN perl-5.16.2/lib/deprecate.pm AP1602_source/lib/deprecate.pm --- perl-5.16.2/lib/deprecate.pm 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/lib/deprecate.pm 2011-03-19 04:42:32.000000000 -0800 @@ -30,7 +30,7 @@ return 0; } -sub import { +sub __import { # disarmed in ActivePerl my ($package, $file) = caller; my $expect_leaf = "$package.pm"; @@ -82,6 +82,9 @@ =head1 DESCRIPTION +B + This module is used using C (or something that calls C<< deprecate->import() >>, for example C). diff -ruN perl-5.16.2/make_patchnum.pl AP1602_source/make_patchnum.pl --- perl-5.16.2/make_patchnum.pl 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/make_patchnum.pl 2012-02-19 15:00:52.000000000 -0800 @@ -131,7 +131,7 @@ $extra_info = "git_snapshot_date='$snapshot_created'"; $commit_title = "Snapshot of:"; } -elsif (-d "$srcdir/.git") { +elsif (0 && -d "$srcdir/.git") { # git branch | awk 'BEGIN{ORS=""} /\*/ { print $2 }' ($branch) = map { /\* ([^(]\S*)/ ? $1 : () } backtick("git branch"); $branch //= ""; diff -ruN perl-5.16.2/makedef.pl AP1602_source/makedef.pl --- perl-5.16.2/makedef.pl 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/makedef.pl 2012-04-10 22:37:53.000000000 -0700 @@ -802,6 +802,12 @@ PerlIO_vsprintf )); +if ($ARGS{PLATFORM} eq 'aix') { + try_symbols(qw( + Perl_boot_core_ActivePerl + )); +} + if ($ARGS{PLATFORM} eq 'win32') { try_symbols(qw( setgid @@ -816,6 +822,7 @@ if ($ARGS{PLATFORM} =~ /^win(?:32|ce)$/) { try_symbols(qw( + Perl_boot_core_ActivePerl Perl_init_os_extras Perl_thread_create Perl_win32_init diff -ruN perl-5.16.2/patchlevel.h AP1602_source/patchlevel.h --- perl-5.16.2/patchlevel.h 2012-12-18 15:14:27.000000000 -0800 +++ AP1602_source/patchlevel.h 2012-12-18 15:14:23.000000000 -0800 @@ -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 */ @@ -137,6 +139,7 @@ ,"uncommitted-changes" #endif PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */ + ,ACTIVEPERL_LOCAL_PATCHES_ENTRY ,NULL }; diff -ruN perl-5.16.2/perl.c AP1602_source/perl.c --- perl-5.16.2/perl.c 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/perl.c 2012-04-03 17:48:40.000000000 -0700 @@ -2120,6 +2120,7 @@ boot_core_PerlIO(); boot_core_UNIVERSAL(); boot_core_mro(); + boot_core_ActivePerl(); newXS("Internals::V", S_Internals_V, __FILE__); if (xsinit) diff -ruN perl-5.16.2/proto.h AP1602_source/proto.h --- perl-5.16.2/proto.h 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/proto.h 2012-04-23 14:21:00.000000000 -0700 @@ -215,6 +215,7 @@ #define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER \ assert(hk) +PERL_CALLCONV void Perl_boot_core_ActivePerl(pTHX); PERL_CALLCONV void Perl_boot_core_PerlIO(pTHX); PERL_CALLCONV void Perl_boot_core_UNIVERSAL(pTHX); PERL_CALLCONV void Perl_boot_core_mro(pTHX); diff -ruN perl-5.16.2/regen/regen_lib.pl AP1602_source/regen/regen_lib.pl --- perl-5.16.2/regen/regen_lib.pl 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/regen/regen_lib.pl 2012-02-19 15:00:52.000000000 -0800 @@ -63,12 +63,12 @@ my $final_name = *{$fh}->{final_name}; if ($TAP) { - my $not = compare($name, $final_name) ? 'not ' : ''; + my $not = compare($name, $final_name, -1) ? 'not ' : ''; print STDOUT $not . "ok - $0 $final_name\n"; safer_unlink($name); return; } - if (compare($name, $final_name) == 0) { + if (compare($name, $final_name, -1) == 0) { warn "no changes between '$name' & '$final_name'\n" if $Verbose > 0; safer_unlink($name); return; diff -ruN perl-5.16.2/t/comp/line_debug.t AP1602_source/t/comp/line_debug.t --- perl-5.16.2/t/comp/line_debug.t 2012-08-26 16:11:29.000000000 -0700 +++ AP1602_source/t/comp/line_debug.t 2010-02-22 17:04:26.000000000 -0800 @@ -25,6 +25,7 @@ ok 2, !defined(${"_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.16.2/t/porting/customized.t AP1602_source/t/porting/customized.t --- perl-5.16.2/t/porting/customized.t 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/t/porting/customized.t 2012-04-10 17:22:05.000000000 -0700 @@ -89,7 +89,7 @@ my $digest = Digest->new( $digest_type ); { open my $fh, '<', $file or die "Can't open $file"; - binmode $fh; + # binmode $fh; $digest->addfile( $fh ); close $fh; } diff -ruN perl-5.16.2/t/porting/known_pod_issues.dat AP1602_source/t/porting/known_pod_issues.dat --- perl-5.16.2/t/porting/known_pod_issues.dat 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/t/porting/known_pod_issues.dat 2012-05-21 12:19:52.000000000 -0700 @@ -12,6 +12,8 @@ # known instances of that message there are in the pod. -1 means that the # program can expect any number of this type of message. _control87(3) +activeperl-changes +activeperl-release Algorithm::C3 AnyEvent Apache::MP3 @@ -102,6 +104,7 @@ Pod::Plainer Pod::PXML poll(2) +ppm prctl(2) printf(3) pstruct diff -ruN perl-5.16.2/t/run/cloexec.t AP1602_source/t/run/cloexec.t --- perl-5.16.2/t/run/cloexec.t 2012-10-11 11:20:45.000000000 -0700 +++ AP1602_source/t/run/cloexec.t 2012-03-20 13:41:55.000000000 -0800 @@ -47,6 +47,10 @@ skip_all($^O) if $^O eq 'VMS' or $^O eq 'MSWin32'; +# HP-UX 11.22 seems to use up one additional file descriptor on top +# of all inherited files. This has been fixed/changed in 11.23. +skip_all("HP-UX 11.22") if $^O eq "hpux" && $Config::Config{osvers} eq "11.22"; + sub make_tmp_file { my ($fname, $fcontents) = @_; local *FHTMP; diff -ruN perl-5.16.2/util.c AP1602_source/util.c --- perl-5.16.2/util.c 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/util.c 2012-10-17 12:42:44.000000000 -0700 @@ -3077,6 +3077,9 @@ act.sa_flags = 0; #ifdef SA_RESTART if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) +# if defined(__hpux) && !(defined(__ux_version) && __ux_version <= 1020) + if (signo != SIGTERM && signo != SIGINT) +# endif act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */ #endif #if defined(SA_NOCLDWAIT) && !defined(BSDish) /* See [perl #18849] */ diff -ruN perl-5.16.2/win32/Makefile AP1602_source/win32/Makefile --- perl-5.16.2/win32/Makefile 2012-10-25 20:07:28.000000000 -0700 +++ AP1602_source/win32/Makefile 2012-10-27 02:48:10.000000000 -0700 @@ -56,7 +56,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() @@ -211,7 +211,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. @@ -551,7 +551,7 @@ PERLEXE_MANIFEST= .\perlexe.manifest 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 @@ -619,6 +619,7 @@ DEL = del MICROCORE_SRC = \ + ..\activeperl.c \ ..\av.c \ ..\deb.c \ ..\doio.c \ diff -ruN perl-5.16.2/win32/config.ce AP1602_source/win32/config.ce --- perl-5.16.2/win32/config.ce 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/win32/config.ce 2012-02-19 15:00:54.000000000 -0800 @@ -55,6 +55,7 @@ clocktype='clock_t' comm='' compress='' +config_heavy='Config_heavy.pl' contains='grep' cp='copy' cpio='' @@ -717,7 +718,7 @@ installprivlib='~INST_TOP~~INST_VER~\lib' installscript='~INST_TOP~~INST_VER~\bin' installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -installsitebin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' +installsitebin='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' installsitelib='~INST_TOP~\site~INST_VER~\lib' installstyle='lib' installusrbinperl='undef' diff -ruN perl-5.16.2/win32/config.gc AP1602_source/win32/config.gc --- perl-5.16.2/win32/config.gc 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/win32/config.gc 2012-02-19 15:00:54.000000000 -0800 @@ -58,6 +58,7 @@ clocktype='clock_t' comm='' compress='' +config_heavy='Config_heavy.pl' contains='grep' cp='copy' cpio='' @@ -731,13 +732,13 @@ installprivlib='~INST_TOP~~INST_VER~\lib' installscript='~INST_TOP~~INST_VER~\bin' installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -installsitebin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' +installsitebin='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' installsitehtml1dir='' installsitehtml3dir='' installsitelib='~INST_TOP~\site~INST_VER~\lib' installsiteman1dir='' installsiteman3dir='' -installsitescript='' +installsitescript='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' installstyle='lib' installusrbinperl='undef' installvendorarch='' diff -ruN perl-5.16.2/win32/config.gc64nox AP1602_source/win32/config.gc64nox --- perl-5.16.2/win32/config.gc64nox 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/win32/config.gc64nox 2012-02-19 15:00:54.000000000 -0800 @@ -58,6 +58,7 @@ clocktype='clock_t' comm='' compress='' +config_heavy='Config_heavy.pl' contains='grep' cp='copy' cpio='' @@ -732,13 +733,13 @@ installprivlib='~INST_TOP~~INST_VER~\lib' installscript='~INST_TOP~~INST_VER~\bin' installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -installsitebin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' +installsitebin='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' installsitehtml1dir='' installsitehtml3dir='' installsitelib='~INST_TOP~\site~INST_VER~\lib' installsiteman1dir='' installsiteman3dir='' -installsitescript='' +installsitescript='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' installstyle='lib' installusrbinperl='undef' installvendorarch='' diff -ruN perl-5.16.2/win32/config.vc AP1602_source/win32/config.vc --- perl-5.16.2/win32/config.vc 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/win32/config.vc 2012-07-16 14:44:18.000000000 -0700 @@ -58,6 +58,7 @@ clocktype='clock_t' comm='' compress='' +config_heavy='Config_heavy.pl' contains='grep' cp='copy' cpio='' @@ -538,6 +539,7 @@ defvoidused='15' direntrytype='struct direct' dlext='dll' +dlltool='dlltool' dlsrc='dl_win32.xs' doublesize='8' drand01='(rand()/(double)((unsigned)1< @@ -198,7 +201,7 @@ #ifdef USE_SOCKETS_AS_HANDLES #ifndef PERL_FD_SETSIZE -#define PERL_FD_SETSIZE 64 +# define PERL_FD_SETSIZE 2048 #endif #define PERL_BITS_PER_BYTE 8 diff -ruN perl-5.16.2/win32/makefile.mk AP1602_source/win32/makefile.mk --- perl-5.16.2/win32/makefile.mk 2012-10-25 20:07:28.000000000 -0700 +++ AP1602_source/win32/makefile.mk 2012-10-27 02:48:11.000000000 -0700 @@ -57,7 +57,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() @@ -240,7 +240,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. @@ -642,7 +642,7 @@ PERLEXE_MANIFEST= .\perlexe.manifest 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 @@ -731,6 +731,7 @@ NOOP = @rem MICROCORE_SRC = \ + ..\activeperl.c \ ..\av.c \ ..\deb.c \ ..\doio.c \ Binary files perl-5.16.2/win32/perl.ico and AP1602_source/win32/perl.ico differ diff -ruN perl-5.16.2/win32/perldll.rc AP1602_source/win32/perldll.rc --- perl-5.16.2/win32/perldll.rc 1969-12-31 16:00:00.000000000 -0800 +++ AP1602_source/win32/perldll.rc 2011-04-08 17:21:11.000000000 -0700 @@ -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\0" + VALUE "FileDescription", "Perl Interpreter\0" + VALUE "FileVersion", PERLFILEVERSION + VALUE "InternalName", "perl514.dll\0" + VALUE "LegalCopyright", "Copyright 1987-2011, Larry Wall, Binary build by ActiveState, http://www.ActiveState.com\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "perl514.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.16.2/win32/perlexe.rc AP1602_source/win32/perlexe.rc --- perl-5.16.2/win32/perlexe.rc 2012-08-26 16:11:29.000000000 -0700 +++ AP1602_source/win32/perlexe.rc 2011-04-08 17:21:11.000000000 -0700 @@ -1,4 +1,6 @@ -PERLEXE ICON perlexe.ico +// PerlExe.rc + +PERLEXE ICON perl.ico #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 #define RT_MANIFEST 24 @@ -6,3 +8,51 @@ #ifdef INCLUDE_MANIFEST CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" #endif + +// (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" + +#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\0" + VALUE "FileDescription", "Perl Command Line Interpreter\0" + VALUE "FileVersion", PERLFILEVERSION + VALUE "InternalName", "perl.exe\0" + VALUE "LegalCopyright", "Copyright 1987-2011, Larry Wall, Binary build by ActiveState, 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.16.2/win32/win32.c AP1602_source/win32/win32.c --- perl-5.16.2/win32/win32.c 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/win32/win32.c 2012-02-19 15:00:52.000000000 -0800 @@ -3929,6 +3929,13 @@ return LoadLibraryExA(PerlDir_mapA(filename), NULL, LOAD_WITH_ALTERED_SEARCH_PATH); } +static +XS(w32_BuildNumber) +{ + dXSARGS; + XSRETURN_PV(PRODUCT_BUILD_NUMBER); +} + XS(w32_SetChildShowWindow) { dXSARGS; @@ -3966,6 +3973,7 @@ if (pfn_init) pfn_init(aTHX); + newXS("Win32::BuildNumber", w32_BuildNumber, file); newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file); } diff -ruN perl-5.16.2/win32/win32.h AP1602_source/win32/win32.h --- perl-5.16.2/win32/win32.h 2012-10-25 19:44:15.000000000 -0700 +++ AP1602_source/win32/win32.h 2012-02-19 15:00:52.000000000 -0800 @@ -9,6 +9,8 @@ #ifndef _INC_WIN32_PERL5 #define _INC_WIN32_PERL5 +#include "BuildInfo.h" + #ifndef _WIN32_WINNT # define _WIN32_WINNT 0x0500 /* needed for CreateHardlink() etc. */ #endif End of Patch.