platform/upstream/perl.git
13 years agoDeparse sort(foo(bar)) correctly
Father Chrysostomos [Sun, 20 Nov 2011 08:14:10 +0000 (00:14 -0800)]
Deparse sort(foo(bar)) correctly

sort(foo(bar)) makes foo a function call
sort foo(bar) (how it used to deparse) makes foo a comparison routine

13 years agoMake constant promotion null-clean
Father Chrysostomos [Sun, 20 Nov 2011 07:39:57 +0000 (23:39 -0800)]
Make constant promotion null-clean

When an optimised constant is promoted to a CV, the name’s length can
be passed straight to newCONSTSUB_flags, as it now has a length param-
eter which it passes to newXS_len_flags.

13 years agoHave newCONSTSUB pass the length to newXS
Father Chrysostomos [Sun, 20 Nov 2011 07:37:45 +0000 (23:37 -0800)]
Have newCONSTSUB pass the length to newXS

13 years agoAdd newXS_len_flags
Father Chrysostomos [Sun, 20 Nov 2011 07:34:13 +0000 (23:34 -0800)]
Add newXS_len_flags

It accepts a length as well as a pv for the name.

Since newXS_flags is marked with M in embed.fnc and is undocumented,
technically policy allows me to change it, but there are files
throughout cpan/ that use newXS_flags.  So it seemed safer to add a
new function.

13 years agoHave newATTRSUB remember the name’s length
Father Chrysostomos [Sun, 20 Nov 2011 07:23:27 +0000 (23:23 -0800)]
Have newATTRSUB remember the name’s length

Now that newCONSTSUB_flags has a length parameter, new ATTRSUB can
record the length and pass that to newCONSTSUB_flags, instead of using
strlen to get it.

13 years agoAdd len flag to newCONSTSUB_flags
Father Chrysostomos [Sun, 20 Nov 2011 07:06:46 +0000 (23:06 -0800)]
Add len flag to newCONSTSUB_flags

This function was added after 5.14.0, so it is not too late to
change it.  It is currently unused.

13 years agoFinal update to perldelta for 5.15.5.
Steve Hay [Sun, 20 Nov 2011 18:01:56 +0000 (18:01 +0000)]
Final update to perldelta for 5.15.5.

13 years agoAdd 5.15.5 to perlhist.
Steve Hay [Sun, 20 Nov 2011 17:03:21 +0000 (17:03 +0000)]
Add 5.15.5 to perlhist.

13 years agoUpdate Module::CoreList (to 2.58) for 5.15.5.
Steve Hay [Sun, 20 Nov 2011 17:03:04 +0000 (17:03 +0000)]
Update Module::CoreList (to 2.58) for 5.15.5.

13 years agoFix up B::Deparse following recent version bumps
Steve Hay [Sun, 20 Nov 2011 17:02:16 +0000 (17:02 +0000)]
Fix up B::Deparse following recent version bumps

13 years agoBump the perl version for 5.15.5
Steve Hay [Sun, 20 Nov 2011 14:56:15 +0000 (14:56 +0000)]
Bump the perl version for 5.15.5

13 years agoFix Win32 build with plain VC6 compiler
Steve Hay [Sun, 20 Nov 2011 13:57:31 +0000 (13:57 +0000)]
Fix Win32 build with plain VC6 compiler

The Socket extension module currently doesn't compile on Win32 using the
VC6 compiler with its standard headers. It can be made to work by using
the 2003 Platform SDK, but it is preferable not to need to do that.

This patch is by Jan Dubois, taken from
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2011-11/msg00557.html

The patch is modified slightly to take account of MinGW already providing
the missing struct definition, but may yet need some further tweaks since
it was not quite finished by Jan yet.

13 years agoCorrect the Term-ANSIColor distro name in Maintainers.pl
Steve Hay [Sun, 20 Nov 2011 12:33:55 +0000 (12:33 +0000)]
Correct the Term-ANSIColor distro name in Maintainers.pl

It was recently renamed from ANSIColor.

13 years agoHandle require() on implicit $_ properly w/r global overrides
Vincent Pit [Sun, 20 Nov 2011 10:56:11 +0000 (11:56 +0100)]
Handle require() on implicit $_ properly w/r global overrides

Those require() calls are compiled as BASEOPs, so it is invalid to look for
their op_first member when they are translated to a call to the global
override subroutine. The new entersub call should get $_ in its argument
list instead.

This fixes [perl #78260].

13 years agoUpdate Locale-Maketext to 1.20
Steve Hay [Sun, 20 Nov 2011 03:45:37 +0000 (03:45 +0000)]
Update Locale-Maketext to 1.20

Pick up new ChangeLog from CPAN 1.19, and then bump $VERSIONs to 1.20
to account for local changes b1f1f4d8b1 and d7d631d38c (upstream is blead).

13 years agoFix broken pod in perldelta
Steve Hay [Sun, 20 Nov 2011 03:12:08 +0000 (03:12 +0000)]
Fix broken pod in perldelta

13 years agoUpdate perldelta
Steve Hay [Sun, 20 Nov 2011 02:43:12 +0000 (02:43 +0000)]
Update perldelta

Now believed to be complete for 5.15.5 except for the Acknowledgements.

13 years agoperldelta for sort warning fix
Father Chrysostomos [Sun, 20 Nov 2011 02:24:51 +0000 (18:24 -0800)]
perldelta for sort warning  fix

13 years agoMake sort’s warnings dependent on the right hints
Father Chrysostomos [Sun, 20 Nov 2011 02:21:46 +0000 (18:21 -0800)]
Make sort’s warnings dependent on the right hints

sort’s warnings about uninitialized (or non-numeric) values returned
from comparison routines are emitted in the scope of the compar-
ison routine, not the sort function itself.  So, not only does
‘use warnings; sort...’ not always warn, but the line numbers can be
off, too:

$ ./perl -Ilib -e '()=sort flobbp 1,2;' -e'use warnings;sub flobbp{"foo"}'
Argument "foo" isn't numeric in sort at -e line 2.

The solution is to restore PL_curcop to its previous value before get-
ting a number out of the comparison routine’s return value.

13 years agoClarify perldelta entry
Father Chrysostomos [Sun, 20 Nov 2011 01:40:07 +0000 (17:40 -0800)]
Clarify perldelta entry

13 years agoperldelta for sort $globref fix
Father Chrysostomos [Sun, 20 Nov 2011 00:43:37 +0000 (16:43 -0800)]
perldelta for sort $globref fix

13 years agosort does not call get-magic after dereffing
Father Chrysostomos [Sun, 20 Nov 2011 00:42:28 +0000 (16:42 -0800)]
sort does not call get-magic after dereffing

sort $f @list accepts a globref for $f, and probably has since Perl
5.000, even if it was by mistake that it ever worked.

It doesn’t respect get-magic, however:

$ perl -le 'sub s { $b <=> $a }; $f = \*s; print sort $f 1,2,3'
321
$ ./perl -Ilib -le '
    sub TIESCALAR{bless[]}
    sub FETCH {*s}
    sub s { $b <=> $a };
    tie $f, "";
    $g = \$f;
    print sort $g 1,2,3'
Not a subroutine reference at -e line 1.

Interestingly, this commit added support for sort $coderef @foo:

commit 7a4920e67d1e2d67a4397a908141c6608866ebb0
Author: Graham Barr <gbarr@pobox.com>
Date:   Fri Nov 27 05:16:50 1998 +0000

    integrate change#2246 from mainline, while still allowing
    C<sort $globref @foo>

    allow C<sort $coderef @foo>

    p4raw-link: @2246 on //depot/perl: c6e96bcb406bc8b8d8610606459ff606ad6883aa

    p4raw-id: //depot/maint-5.005/perl@2315
    p4raw-integrated: from //depot/perl@2314 'merge in' t/op/sort.t
     (@1760..)

If I’m reading this code correctly, it did so by nulling out whatever
op used to come after the pushmark (now it is always a null):

$ perl -MO=Concise -e 'sort $fo @fo'8  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
7     <@> sort vKS ->8
3        <0> pushmark s ->4
-        <1> null K/1 ->5           <--- Lo!
-           <1> ex-rv2sv sK/1 ->-
4              <#> gvsv[*fo] s ->5
6        <1> rv2av[t3] lK/1 ->7
5           <#> gv[*fo] s ->6
-e syntax OK

To preserve the globref support (which the nulled op was providing
before), it added it to sv_2cv, which was the wrong place if you ask
me.  Now it means that &{\*_} works, in addition to &{*_}.  Other
deref ops don’t have this property.  Bug?  Maybe.  But we can just
pretend it’s a feature and live with it.

In any case, extracting the entry of a typeglob without calling get-
magic on it first doesn’t seem right.

13 years agoUpdate perldelta
Steve Hay [Sun, 20 Nov 2011 00:54:20 +0000 (00:54 +0000)]
Update perldelta

Begin perldelta updates for 5.15.5: this brings the changes made to
modules/pragmata and diagnostics up to date.

13 years agoperldelta for open() FETCH fix
Father Chrysostomos [Sun, 20 Nov 2011 00:17:03 +0000 (16:17 -0800)]
perldelta for open() FETCH fix

13 years agoDocument sv_2io’s invocation of magic
Father Chrysostomos [Sat, 19 Nov 2011 22:38:09 +0000 (14:38 -0800)]
Document sv_2io’s invocation of magic

13 years agoCall FETCH once on handle passed as 3rd arg to open()
Father Chrysostomos [Sat, 19 Nov 2011 22:35:24 +0000 (14:35 -0800)]
Call FETCH once on handle passed as 3rd arg to open()

When open() has three arguments and the second ends with & the third
argument is treated as a handle.

In some cases get-magic was being skipped; in others, it was being
called three times.

This commit fixes it by modifying sv_2io.

In 5.8.x (before commit 7a5fd60d4), sv_2io did not call get-magic at
all except when croaking ("Bad filehandle: %"SVf).  In 5.10.0 (after
commit 7a5fd60d4), it started calling get-magic only if the sv was
neither a glob, a reference, or undef.  So it has never been reliable
in its invocation of get-magic.

sv_2io now consistently skips get-magic on the sv passed in directly
to it (open(), the only caller in the core, has already called get-
magic before passing it in).  It now calls get-magic on SvRV(sv) if
what is passed in is a reference, so open(fh, ">&", \$tied) will work.

Interestingly, open supports multiple levels of references:

\\\\\\\\\\\\open+f,">&",\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 \\\\\\\\\\\*STDOUT;print{f}"Just another Perl hacker,\n",.\\\\\\\y\\\

13 years agoperldiag: Assertions are not trappable
Father Chrysostomos [Sat, 19 Nov 2011 20:26:21 +0000 (12:26 -0800)]
perldiag: Assertions are not trappable

In perldiag, the assertion failure messages are listed with (P) in
front of them, indicating trappable internal errors.  Assertions are
not trappable, but are followed by SIGABRT.

13 years agoRemove comment added by mistake in c7abbf64
Father Chrysostomos [Sat, 19 Nov 2011 19:59:54 +0000 (11:59 -0800)]
Remove comment added by mistake in c7abbf64

13 years agoUpdate Unicode-Collate to CPAN version 0.85
Chris 'BinGOs' Williams [Sat, 19 Nov 2011 17:13:28 +0000 (17:13 +0000)]
Update Unicode-Collate to CPAN version 0.85

  [DELTA]

  0.85  Sat Nov 19 20:01:57 2011
    - U::C::Locale newly supports locales: bn, sa.
    - added loc_bn.t, loc_cjk.t, loc_sa.t in t.
    - updated some locales to CLDR 2.0 : zh__pinyin, zh__stroke.
      * supported compatibility decomposable characters and U+FDD0 indexes.
      * updated CJK/Pinyin.pm and CJK/Stroke.pm.

13 years agonarrower localisation of PL_compcv around eval
Zefram [Sat, 19 Nov 2011 16:00:32 +0000 (16:00 +0000)]
narrower localisation of PL_compcv around eval

PL_compcv used to be localised around the entire string eval process,
and hence at runtime of the evaled code would refer to the evaled code
rather than code of a surrounding compilation.  This interfered with the
ability of string-evaled code in a BEGIN block to affect the surrounding
compilation, in a similar way to the localisation of $^H and %^H that
was fixed in f45b078d20.

Similar to the fix there, this change moves the localisation of PL_compcv
inside the new evalcomp scope.  A couple of things were relying on
PL_compcv to find the running code when in a string-eval scope; they now
need to find it from cx->blk_eval.cv, which was already being populated.

13 years agosv.c: More consistent use of spaces after dots
Father Chrysostomos [Sat, 19 Nov 2011 14:59:59 +0000 (06:59 -0800)]
sv.c: More consistent use of spaces after dots

in apidocs, plus other tweaks

13 years agoCorrect sv_catsv_flags docs
Father Chrysostomos [Sat, 19 Nov 2011 14:39:48 +0000 (06:39 -0800)]
Correct sv_catsv_flags docs

Get-magic is only called on ssv.  SV_SMAGIC is accepted, too.

13 years agoCorrect sv_catpv_flags docs
Father Chrysostomos [Sat, 19 Nov 2011 14:36:39 +0000 (06:36 -0800)]
Correct sv_catpv_flags docs

SV_SMAGIC, not SV_GMAGIC.

13 years agoCorrect sv_catpvn_flags docs
Father Chrysostomos [Sat, 19 Nov 2011 14:35:23 +0000 (06:35 -0800)]
Correct sv_catpvn_flags docs

It respects SV_SMAGIC flag, not SV_GMAGIC (which it ignores).

13 years agoAvoid a redundant copy in pp_glob
Father Chrysostomos [Sat, 19 Nov 2011 08:30:14 +0000 (00:30 -0800)]
Avoid a redundant copy in pp_glob

Most of the time, the argument to glob() won’t be tied, so we don’t
need to copy it.  So only copy it if it is gmagical.

13 years agoperldelta for var names in @a=~// warning
Father Chrysostomos [Sat, 19 Nov 2011 08:20:04 +0000 (00:20 -0800)]
perldelta for var names in @a=~// warning

13 years agoMention variable names in @a =~ // warnings
Father Chrysostomos [Sat, 19 Nov 2011 08:17:44 +0000 (00:17 -0800)]
Mention variable names in @a =~ // warnings

13 years agoperldelta for y///r implicit $_ uninit warning
Father Chrysostomos [Sat, 19 Nov 2011 08:03:00 +0000 (00:03 -0800)]
perldelta for y///r implicit $_ uninit warning

13 years agoMention implicit $_ in y///r uninit warning
Father Chrysostomos [Sat, 19 Nov 2011 07:57:41 +0000 (23:57 -0800)]
Mention implicit $_ in y///r uninit warning

This brings it into conformity with y without the /r.

13 years agoMerge two adjacent #ifdefs in embed.fnc
Father Chrysostomos [Sat, 19 Nov 2011 07:22:17 +0000 (23:22 -0800)]
Merge two adjacent #ifdefs in embed.fnc

d08d57ef added a new #ifdef right after and #endif with the same con-
dition.  There is no need for the separation.

13 years agoMention the variable name in the new length warnings
Father Chrysostomos [Sat, 19 Nov 2011 06:03:04 +0000 (22:03 -0800)]
Mention the variable name in the new length warnings

13 years agoDon’t create an AV for unfiltered code
Father Chrysostomos [Sat, 19 Nov 2011 04:27:15 +0000 (20:27 -0800)]
Don’t create an AV for unfiltered code

When there are no source filters, we don’t need to create an AV to
hold them.  The code for adding a filter already does a null check.

13 years agoTweaks to find_uninit_var docs
Father Chrysostomos [Sat, 19 Nov 2011 01:57:11 +0000 (17:57 -0800)]
Tweaks to find_uninit_var docs

• Typos
• Double space after fullstop, as that is how nroff renders
  a fullstop at the end of a line in mid-paragraph.

13 years agoperldelta for new length() warning
Father Chrysostomos [Sat, 19 Nov 2011 01:49:35 +0000 (17:49 -0800)]
perldelta for new length() warning

13 years agoFix pp_goto crash with orphaned GV
Father Chrysostomos [Sat, 19 Nov 2011 00:38:49 +0000 (16:38 -0800)]
Fix pp_goto crash with orphaned GV

a7999c089 inadvertently made pp_goto crash if the GV had no
stash pointer.

13 years agoutil.c:get_db_sub: correct comment
Father Chrysostomos [Sat, 19 Nov 2011 00:33:58 +0000 (16:33 -0800)]
util.c:get_db_sub: correct comment

This comment was copied from pp_goto by commit 005a8a35, but was not
adjusted to make sense in its new surroundings.

13 years agoperldelta for GV scalar localisation
Father Chrysostomos [Sat, 19 Nov 2011 00:18:46 +0000 (16:18 -0800)]
perldelta for GV scalar localisation

13 years agoCopy magic during localisation even for GVs
Father Chrysostomos [Sat, 19 Nov 2011 00:17:22 +0000 (16:17 -0800)]
Copy magic during localisation even for GVs

The magic-copying is skipped for GVs.  This logic goes back to perl
5.000 (patch a0d0e21e).  I think it has always been wrong.

13 years agoTest length() warning with pad vars
Father Chrysostomos [Thu, 17 Nov 2011 21:03:39 +0000 (13:03 -0800)]
Test length() warning with pad vars

13 years agoperldiag: Rewrap ‘length() used on %s’
Father Chrysostomos [Thu, 17 Nov 2011 20:43:15 +0000 (12:43 -0800)]
perldiag: Rewrap ‘length() used on %s’

splain output looks better in an 80-column terminal this way.

13 years agoThrow a helpful warning when someone tries length(@array) or length(%hash)
Matthew Horsfall (alh) [Thu, 17 Nov 2011 04:06:33 +0000 (23:06 -0500)]
Throw a helpful warning when someone tries length(@array) or length(%hash)

13 years agoTweak the cBOOL() macro to avoid problems with the AIX compiler.
Nicholas Clark [Tue, 15 Nov 2011 18:44:18 +0000 (19:44 +0100)]
Tweak the cBOOL() macro to avoid problems with the AIX compiler.
(cherry picked from commit 0cebf65582f924952bfee1472749d442d51e43e6)

13 years agoFix threaded build
Father Chrysostomos [Fri, 18 Nov 2011 23:55:08 +0000 (15:55 -0800)]
Fix threaded build

Commit a7999c0893, you are at fault!

13 years agoperldelta: fix for $DB::sub with bad subname
Father Chrysostomos [Fri, 18 Nov 2011 20:42:45 +0000 (12:42 -0800)]
perldelta: fix for $DB::sub with bad subname

13 years agoUpdate several test cases to not generate failures on VOS.
Paul Green [Thu, 10 Nov 2011 22:34:19 +0000 (17:34 -0500)]
Update several test cases to not generate failures on VOS.

13 years agoMake sure $DB::sub is callable
Father Chrysostomos [Fri, 18 Nov 2011 17:08:32 +0000 (09:08 -0800)]
Make sure $DB::sub is callable

When DB::sub is about to be called (to handle a subroutine call under
the debugger), $DB::sub is set to the name of the subroutine or a ref-
erence to it.

Sometimes $DB::sub is set to the name when the subroutine is not call-
able under that name.  That should not happen.

This logic in util.c:Perl_get_db_sub decides whether a reference
should be used:

if ( svp && ((CvFLAGS(cv) & (CVf_ANON | CVf_CLONED))
     || strEQ(GvNAME(gv), "END")
     || ((GvCV(gv) != cv) && /* Could be imported, and old sub redefined. */
 !( (SvTYPE(*svp) == SVt_PVGV)
    && (GvCV((const GV *)*svp) == cv)
    && (gv = (GV *)*svp)
  )
)
)) {
    /* Use GV from the stack as a fallback. */

(That comment about using the GV from the stack as a fallback applies
to the assignment to gv, but was mistakenly divorced from it in commit
3de9ffa12.)

This logic (introduced in 71be2cbc7 [inseparable changes from
perl5.003_13 to perl5.003_14] and integrated into blead in 491527d02)
tries to find a GV that points to the CV, trying the CV’s own GV
first, and falling back to what is on the stack.  But it does not
account for GVs that are not found under their names, which can hap-
pen when a glob is copied and the original is undefined ($foo = *bar;
undef *bar; &$foo) or when a stash element or package is deleted, such
as via Symbol::delete_package.

If the subroutine is not locatable under its own name or the name
under which it was called (the name of the GV argument to entersub),
then a reference should be passed.  Otherwise a name that can access
the sub should be passed.

So this commit adds more (no, not more!) conditions to make sure the
gv is actually reachable under its name before using a string.

Since, for effiency, those conditions do not perform an actual symbol
lookup, but simply look inside the GV’s stash, we can no longer rely
on gv_efullname (or even gv_fullname), as the stash may have been
moved around, but use HvENAME and construct the GV name ourselves.

13 years agoRemove redundant check in pp_hot.c:pp_entersub
Father Chrysostomos [Fri, 18 Nov 2011 00:38:42 +0000 (16:38 -0800)]
Remove redundant check in pp_hot.c:pp_entersub

PVGVs are always globs now.

13 years agoUpdate IO-Compress to CPAN version 2.042
Chris 'BinGOs' Williams [Fri, 18 Nov 2011 20:11:08 +0000 (20:11 +0000)]
Update IO-Compress to CPAN version 2.042

  [DELTA]

  2.042 17 November 2011

      * IO::Compress::Zip
        - Added exUnixN option to allow creation of the "ux" extra field.
          This allows 32-bit UID/GID to be stored.
        - In one-shot mode use exUnixN rather than exUnix2 for the UID/GID.

      * IO::Compress::Zlib::Extra::parseExtraField
        - Fixed bad test for length of ID field
          [RT# 72329 & #72505]

13 years agoUpdate Compress-Raw-Zlib to CPAN version 2.042
Chris 'BinGOs' Williams [Fri, 18 Nov 2011 20:06:18 +0000 (20:06 +0000)]
Update Compress-Raw-Zlib to CPAN version 2.042

  [DELTA]

  2.042 17 November 2011

      * No Changes

13 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.042
Chris 'BinGOs' Williams [Fri, 18 Nov 2011 19:59:16 +0000 (19:59 +0000)]
Update Compress-Raw-Bzip2 to CPAN version 2.042

  [DELTA]

  2.042 17 November 2011

      * No Changes

13 years agoSeparate the build and non-build functionality of pod/buildtoc
Nicholas Clark [Fri, 18 Nov 2011 10:22:58 +0000 (11:22 +0100)]
Separate the build and non-build functionality of pod/buildtoc

pod/buildtoc now now only generates pod/perltoc.pod
All the other file (re)generation code is now in Porting/pod_rules.pl
Porting/new-perldelta.pl automates adding a new perldelta

This should simplify the release manager's work.

13 years agoNote the changes to pod/buildtoc in the perldelta.
Nicholas Clark [Tue, 15 Nov 2011 12:17:41 +0000 (13:17 +0100)]
Note the changes to pod/buildtoc in the perldelta.

Principally to note that no-one should notice the difference, but give a clue
as to what might be wrong if they do.

13 years agoIn buildtoc, refactor to de-duplicate code and variables.
Nicholas Clark [Thu, 10 Nov 2011 14:41:47 +0000 (15:41 +0100)]
In buildtoc, refactor to de-duplicate code and variables.

Converting the globals %Pragmata and %Modules to keys in a single hash
reduces the code size.

13 years agoRefactor pod_rules.pl and buildtoc to use new functions in pod_lib.pl
Nicholas Clark [Thu, 10 Nov 2011 10:52:34 +0000 (11:52 +0100)]
Refactor pod_rules.pl and buildtoc to use new functions in pod_lib.pl

This reduces code duplication.

13 years agoPorting/pod_rules.pl should not warn about files that it is rebuilding.
Nicholas Clark [Thu, 10 Nov 2011 10:18:06 +0000 (11:18 +0100)]
Porting/pod_rules.pl should not warn about files that it is rebuilding.

Previously it would generate warnings about inconsistencies in files, even if
it was about to rewrite the file to be consistent.

13 years agoAdd Porting/new-perldelta.pl, which automates adding a new perldelta.
Nicholas Clark [Wed, 9 Nov 2011 20:50:56 +0000 (21:50 +0100)]
Add Porting/new-perldelta.pl, which automates adding a new perldelta.

Strictly, "mostly automates", as it doesn't run `git add`, or test that the
build is clean. However, it simplifies a gnarly step in the release manager's
guide, so it's progress.

13 years agoFlag to get_pod_metadata() whether generated files are expected.
Nicholas Clark [Wed, 9 Nov 2011 16:25:57 +0000 (17:25 +0100)]
Flag to get_pod_metadata() whether generated files are expected.

This permits Porting/pod_rules.pl to be run from a clean checkout without
warning, which simplifies updating perl's version.

13 years agoRefactor pod_lib.pl's get_pod_metadata() to remove a temporary array.
Nicholas Clark [Wed, 9 Nov 2011 12:40:59 +0000 (13:40 +0100)]
Refactor pod_lib.pl's get_pod_metadata() to remove a temporary array.

The intermediate array @cpanpods can be avoided by generating the lookup
hashes directly.

Rename %cpanpods_short to %cpanpods_leaf and $shortname to $leafname, as this
makes it clearer that each deals with leafnames.

13 years agoRename t/porting/buildtoc.t to pod_rules.t to reflect the previous change.
Nicholas Clark [Wed, 9 Nov 2011 12:52:29 +0000 (13:52 +0100)]
Rename t/porting/buildtoc.t to pod_rules.t to reflect the previous change.

As it now calls Porting/pod_rules.pl, not pod/buildtoc, it makes little sense
to keep the previous name.

13 years agoCreate Porting/pod_rules.pl, with all non perltoc.pod code from buildtoc.
Nicholas Clark [Tue, 8 Nov 2011 14:11:46 +0000 (15:11 +0100)]
Create Porting/pod_rules.pl, with all non perltoc.pod code from buildtoc.

pod/buildtoc now only generates pod/perltoc.pod, and only takes a --quiet
option. All the other file (re)generation code is now in Porting/pod_rules.pl.

This splits functionality which generates a new file at build time from
functionality for maintainers, which edits files in place. This permits the
unwinding of some of commit 02cc404a20a8a345, which achieved net
simplification in pod/buildtoc by merging code paths dealing with new files
(only pod/perltoc.pod) and existing files being edited.

pod_rules.pl has a --tap option, instead of buildtoc's non-standard --test
option, and defaults to --build-all if no arguments are passed. As buildtoc
now does one job, it no longer takes a --build-toc option, hence all the
Makefiles which call it need updating.

13 years agoIn pod_lib.pl's get_pod_metadata(), generate lookup hashes directly.
Nicholas Clark [Tue, 8 Nov 2011 08:45:24 +0000 (09:45 +0100)]
In pod_lib.pl's get_pod_metadata(), generate lookup hashes directly.

Previously the code was structured to build arrays for various categories of
files, then generate hashes from those arrays. However, the arrays had no
other purpose, and the values in the hashes were only needed for truth tests,
so it's better to generate the lookup hashes directly.

@disk_pods hasn't actually been used since commit d5e2eea989a69524 refactored
pod/buildtoc to no longer chdir to the pod/ directory.

13 years agoExtract from buildtoc the code that processes pod.lst, MANIFEST and perl.pod
Nicholas Clark [Tue, 8 Nov 2011 08:29:33 +0000 (09:29 +0100)]
Extract from buildtoc the code that processes pod.lst, MANIFEST and perl.pod

This will permit splitting pod/buildtoc into two - one script used during
the build process to build pod/perltoc.pod, and used by maintainers to
regenerate sections of various Makefiles.

13 years agoIn buildtoc, refactor the code that reads pod.lst, MANIFEST and perl.pod
Nicholas Clark [Tue, 8 Nov 2011 08:09:02 +0000 (09:09 +0100)]
In buildtoc, refactor the code that reads pod.lst, MANIFEST and perl.pod

Move the code into a function, get_pod_metadata(), which returns a reference
to a hash of metadata. This replaces a swathe of global variables.

13 years agobuildtoc --showfiles should report the correct pathnames.
Nicholas Clark [Tue, 8 Nov 2011 13:39:41 +0000 (14:39 +0100)]
buildtoc --showfiles should report the correct pathnames.

The output of --showfiles has been garbled since commit d5e2eea989a69524
refactored pod/buildtoc to no longer chdir to the pod/ directory.

13 years agobuildtoc --showfiles should only list the files to regenerated.
Nicholas Clark [Tue, 8 Nov 2011 13:29:08 +0000 (14:29 +0100)]
buildtoc --showfiles should only list the files to regenerated.

This fixes a bug caused by the refactoring of commit 9dce16cd064e70e6,
which caused --showfiles to always list list all known files, irrespective
of which had been specified with command line flags.

13 years agoIn buildtoc, don't use File::Spec when initialising %BuildFiles.
Nicholas Clark [Tue, 8 Nov 2011 10:57:53 +0000 (11:57 +0100)]
In buildtoc, don't use File::Spec when initialising %BuildFiles.

%BuildFiles is initialised from the leafnames of %Build, which is
initialised from %Targets, which always contains pathnames in Unix
format. Hence using File::Spec->splitpath() is actually erroneous, as it
will process pathnames assuming the format for the current platform.

13 years agoIn buildtoc, refactor the open ... or my_die pattern into a function.
Nicholas Clark [Mon, 7 Nov 2011 20:36:55 +0000 (21:36 +0100)]
In buildtoc, refactor the open ... or my_die pattern into a function.

This eliminates several variables used for filenames, including $masterpodfile,
which was declared as a global.

13 years agoIn buildtoc, make %Readmepods lexical, and $delta_target global.
Nicholas Clark [Mon, 7 Nov 2011 20:23:39 +0000 (21:23 +0100)]
In buildtoc, make %Readmepods lexical, and $delta_target global.

%Readmepods is only used within the code to read pod.lst, pod/perlpod.pod
and MANIFEST, not by the generation code.
$delta_target is set by the reading code, but used in the generation code.

This makes the use of global and lexical variables more consistent.

13 years agoIn buildtoc, eliminate abs_from_top() as it now runs from the top level.
Nicholas Clark [Mon, 7 Nov 2011 12:21:12 +0000 (13:21 +0100)]
In buildtoc, eliminate abs_from_top() as it now runs from the top level.

There's also no need to convert to native path specs, as no paths are passed
to external commands, and the perl runtime on all platforms understands
unambiguously Unix-like paths.

13 years agoIn pod/buildtoc, chdir to the top level of the source tree before running.
Nicholas Clark [Mon, 7 Nov 2011 12:03:09 +0000 (13:03 +0100)]
In pod/buildtoc, chdir to the top level of the source tree before running.

Originally buildtoc called chdir to ensure it ran from the pod/ directory.
However, this caused problems when the environment is set to honour UTF-8
locales, and the regex engine (attempts to) demand-load UTF-8 swashes,
because on *nix and VMS buildtoc is invoked with a relative path in @INC.
d5e2eea989a69524 fixed this by avoiding the chdir.

However, an equally valid solution is to run from the top level of the source
tree, because the actual use cases only have relative paths in @INC when
invoked from the top level, with absolute paths in @INC for the use cases
that invoke perltoc from other directories. Hence, it's always safe to change
to the top level of the source tree. This permits future simplification and
refactoring.

13 years agoLocalise $/ properly in UCD.pm
Father Chrysostomos [Thu, 17 Nov 2011 23:53:18 +0000 (15:53 -0800)]
Localise $/ properly in UCD.pm

Localisation of $/ in the module’s main CV is undone once the module
finishes loading, and hence has no effect on its function after that.
Each function that uses readline has to localise $/ itself.

13 years agoDetect whether ccache is available to bisect.
Paul Johnson [Thu, 17 Nov 2011 20:20:15 +0000 (21:20 +0100)]
Detect whether ccache is available to bisect.

ccache will save time during a bisect but it may not always be availble.
Teach bisect-runner.pl to only use it if it is available.

13 years agoturn off buggy optimisations in one HP compiler
Zefram [Thu, 17 Nov 2011 19:53:04 +0000 (19:53 +0000)]
turn off buggy optimisations in one HP compiler

Fixes [perl #103668].

13 years agoRe-deprecate $[
Father Chrysostomos [Thu, 17 Nov 2011 17:59:09 +0000 (09:59 -0800)]
Re-deprecate $[

This was something e1dccc0d3 removed that b82b06b8 failed to restore.

13 years agoarybase.xs: Don’t use arybase::[
Father Chrysostomos [Thu, 17 Nov 2011 17:38:20 +0000 (09:38 -0800)]
arybase.xs: Don’t use arybase::[

arybase was changing $[=1 to $arybase::[ = 1 to avoid any run-time
effects.  In case this module is ever dual-lifed, we ought to avoid
punctuation variables even outside the main stash.  See bug #76138.

This is a classic example of paranoia.

13 years agoarybase.xs: Check that $[ is in the main stash
Father Chrysostomos [Thu, 17 Nov 2011 17:35:53 +0000 (09:35 -0800)]
arybase.xs: Check that $[ is in the main stash

Check that $[ is in the main stash before doing anything magical with
$[=1.  This can only be in another stash if some other XS module has
overridden the check functions to change $[ to $foo::[.  But robust-
ness is good, right?

13 years agoAdd can_isa_ok.t to MANIFEST
Father Chrysostomos [Thu, 17 Nov 2011 17:40:49 +0000 (09:40 -0800)]
Add can_isa_ok.t to MANIFEST

13 years agoAdd class_ok() and object_ok() to t/test.pl.
Michael G. Schwern [Wed, 16 Nov 2011 01:39:07 +0000 (17:39 -0800)]
Add class_ok() and object_ok() to t/test.pl.

Change every existing instance of isa_ok() to use object_ok().  This is safe because
before this point, t/test.pl's isa_ok() only worked on objects.  lib/dbmt_common.pl is
the last hold out because it uses Test::More.

These are like isa_ok() but they also check if it's a class or an object.
This lets the core tests defend against outlandish bugs while allowing
t/test.pl to retain feature parity with Test::More.

13 years agoPatch t/test.pl so isa_ok() works with objects.
Michael G. Schwern [Wed, 16 Nov 2011 01:14:52 +0000 (17:14 -0800)]
Patch t/test.pl so isa_ok() works with objects.

This mirrors can_ok() and Test::More.

Also add some tests for isa_ok() and can_ok().

13 years agoSun cc and CC do not support gcc attributes.
Reini Urban [Tue, 15 Nov 2011 22:14:28 +0000 (16:14 -0600)]
Sun cc and CC do not support gcc attributes.

Similar code as in linux.sh

13 years agoDetect SunOS CC workshop c++ compiler
Reini Urban [Tue, 15 Nov 2011 22:11:02 +0000 (16:11 -0600)]
Detect SunOS CC workshop c++ compiler

Solaris 11 SunStudio 12.2. ships without cc, so CC must be used.
Detect it and set ccversion correctly

13 years agoperldelta for #70151
Father Chrysostomos [Thu, 17 Nov 2011 16:39:06 +0000 (08:39 -0800)]
perldelta for #70151

13 years agoDocument S_doeval’s calling convention
Father Chrysostomos [Thu, 17 Nov 2011 02:21:16 +0000 (18:21 -0800)]
Document S_doeval’s calling convention

This should make it easier for future maintainers, who now will not
have to figure out what I figured out.

13 years ago[perl #70151] eval localises %^H at runtime
Father Chrysostomos [Thu, 17 Nov 2011 02:18:23 +0000 (18:18 -0800)]
[perl #70151] eval localises %^H at runtime

It doesn’t any more.

Now the hints are localised in a separate inner scope surrounding the
call to yyparse.  This meant moving hint-handling code from pp_require
and pp_entereval into S_doeval.

Some tests in t/comp/hints.t were testing for the buggy behaviour, so
they have been adjusted.

Basically, this fixes

    sub import {
        eval "strict->import"
    }

which should work the same way as

    sub import {
        strict->import
    }

but was not working because %^H and $^H were being localised to
the eval at its run time, not just its compilation.  So the values
assigned to %^H and $^H at the eval’s run time would simply be lost.

13 years agoperldelta for PL_curcop localisation
Father Chrysostomos [Thu, 17 Nov 2011 16:36:43 +0000 (08:36 -0800)]
perldelta for PL_curcop localisation

13 years agoLocalise PL_curcop for BEGIN blocks
Father Chrysostomos [Thu, 17 Nov 2011 16:34:31 +0000 (08:34 -0800)]
Localise PL_curcop for BEGIN blocks

Usually when a BEGIN block exits it has to set PL_curcop to
&PL_compiling, so that subsequent compiled code in the surrounding
scope will have the right warning hints during compilation.

If an XS function creates a BEGIN block via newXS or newATTRSUB, how-
ever, the assumption that compilation will resume as soon as the block
exits is false.

This can be demonstrated with this code, which warns about CHECK and
INIT blocks created too late when it shouldn’t due to ‘no warnings’:

use warnings;
eval q|
  BEGIN{
    no warnings;
    package XS::APItest; require XSLoader; XSLoader::load()
  }
|;

In every case where it is correct for BEGIN to set PL_curcop to
&PL_compiling when it exits it is actually just restoring it to its
previous value, so localisation is the right fix.

13 years agoCombine two blocks in pp_ctl.c:S_doeval
Father Chrysostomos [Wed, 16 Nov 2011 02:06:10 +0000 (18:06 -0800)]
Combine two blocks in pp_ctl.c:S_doeval

As of commit e4a21daa4e9 which removed the intervening code, there
have been two adjacent if blocks in S_doeval with the same condition.
They can be merged into one, to avoid confusing people (like me) try-
ing to understand the code.

13 years agoeval.t: add bug number
Father Chrysostomos [Tue, 15 Nov 2011 13:54:14 +0000 (05:54 -0800)]
eval.t: add bug number

13 years agoeval.t: typos
Father Chrysostomos [Tue, 15 Nov 2011 13:49:28 +0000 (05:49 -0800)]
eval.t: typos

13 years agoAdd --check-shebang to bisect-runner.pl, to avoid mistakes with #! lines
Nicholas Clark [Thu, 17 Nov 2011 16:59:22 +0000 (17:59 +0100)]
Add --check-shebang to bisect-runner.pl, to avoid mistakes with #! lines

This allows bisect.pl to instruct bisect-runner.pl to check that the user's
testcase is not a script with a #! line which will run an installed perl.
This rapidly catches the potential error of specifying a test case that will
not actually be tested with the bisect-build perl. Without this, the user
may end up with an unexpected failure to bisect, and little clue as to what
the actual problem is.