Nicholas Clark [Sun, 7 Aug 2011 19:09:03 +0000 (21:09 +0200)]
Simplify embedvar.h, removing a level of macro indirection for PL_* variables.
For the default (non-multiplicity) configuration, PERLVAR*() macros now
directly expand their arguments to tokens such as C<PL_defgv>, instead of
expanding to C<PL_Idefgv>. This removes over 350 lines from F<embedvar.h>,
which defined macros to map from C<PL_Idefgv> to C<PL_defgv> and so forth.
Chris 'BinGOs' Williams [Thu, 11 Aug 2011 09:07:10 +0000 (10:07 +0100)]
Synchronise Maintainers.pl for Storable and version
Tony Cook [Tue, 9 Aug 2011 10:31:24 +0000 (20:31 +1000)]
workaround a type handling bug in SystemTap Dtrace 1.2
It uses a construct similar to:
__typeof__((func)) x = func;
but hek_key is a char[1] so the above becomes:
char arg1[1] = func;
which is invalid.
Using a temporary allows an implicit conversion to const char * and
avoids possible bugs that might be hidden by an explicit cast.
Steffen Mueller [Thu, 11 Aug 2011 06:26:37 +0000 (08:26 +0200)]
ExtUtils::ParseXS version bump: release 3.03
Father Chrysostomos [Wed, 10 Aug 2011 19:23:51 +0000 (12:23 -0700)]
Rewrap some verbatim pod in Math::BigInt
I started to make Math::BigInt’s pod fit within 79 columns, but
soon petered out. At least this is better than nothing.
Father Chrysostomos [Wed, 10 Aug 2011 03:22:36 +0000 (20:22 -0700)]
Keep verbatim pod in various dist/* pods within 79 cols
Father Chrysostomos [Wed, 10 Aug 2011 01:06:38 +0000 (18:06 -0700)]
Keep verbatim pod in I18N:LT and IO.pm within 80 cols
Father Chrysostomos [Wed, 10 Aug 2011 00:56:07 +0000 (17:56 -0700)]
Keep verbatim pod in ExtUtils::Typemaps::OutputMap within 80 cols
Karl Williamson [Sat, 30 Jul 2011 18:33:31 +0000 (12:33 -0600)]
Add perldelta for /aa and \b commit
This adds an entry for commit
f2e96b5ddb6396417bc2fb71915c5025215060d6
Steffen Mueller [Wed, 10 Aug 2011 13:49:34 +0000 (15:49 +0200)]
Fix trivial test failure from
dbef30a62b2ca0b186
For the record: This was my (Steffen's) fault, not Mike's!
Steffen Mueller [Wed, 10 Aug 2011 13:26:01 +0000 (15:26 +0200)]
Add Mike Sheldrake to AUTHORS
Mike Sheldrake [Wed, 10 Aug 2011 06:15:15 +0000 (08:15 +0200)]
ExtUtils::ParseXS: Test All @INC Derived typemap Locations
The ExtUtils::ParseXS tests would sometime fail to locate some
core Perl typemaps in @INC. This fixes CPAN RT #70047.
Patch slightly modified by Steffen Mueller.
Includes the mandatory version bump to a development version.
Karl Williamson [Wed, 10 Aug 2011 04:08:07 +0000 (22:08 -0600)]
autodoc.pl: output to fit in 79 columns
Karl Williamson [Mon, 8 Aug 2011 17:32:48 +0000 (11:32 -0600)]
podcheck.t: Change verbatim line length max to 79
Some pagers reserve a column for their own use. This patch has
podcheck.t warn if a verbatim line will wrap when such a pager is used
in an 80 column terminal window. This effectively restores the
situation to what it was before commit
2cd46bfd6d03cd8826c5e968efdd36416191bc8f, but the message is now honest
about the situation, i.e., that 79 colummns are effectively the max
without a warning.
The point of this is to give a number to shoot for, 79, that will work
almost always (I believe though that there are pagers that reserve 2
columns in some cases), but of course the data file is continued to be
used to silence the warning if it isn't desired to get down to 79.
Father Chrysostomos [Tue, 9 Aug 2011 23:13:42 +0000 (16:13 -0700)]
Keep verbatim pod in ExtUtils::Typemaps within 80 cols
Father Chrysostomos [Tue, 9 Aug 2011 15:33:56 +0000 (08:33 -0700)]
Ignore another editor droppink
Father Chrysostomos [Tue, 9 Aug 2011 13:30:00 +0000 (06:30 -0700)]
Keep verbatim pod in ExtUtils::Installed within 80 cols
Father Chrysostomos [Tue, 9 Aug 2011 13:26:31 +0000 (06:26 -0700)]
Keep verbatim pod in Data::Dumper within 80 cols
Father Chrysostomos [Tue, 9 Aug 2011 13:23:10 +0000 (06:23 -0700)]
Keep verbatim pod in File::VMS/Win32 within 80 cols
Father Chrysostomos [Tue, 9 Aug 2011 13:19:50 +0000 (06:19 -0700)]
Keep verbatim pod in File::Mac/Unix within 80 cols
Father Chrysostomos [Tue, 9 Aug 2011 13:05:58 +0000 (06:05 -0700)]
Keep verbatim pod in File::Spec within 80 cols
Chris 'BinGOs' Williams [Tue, 9 Aug 2011 09:02:28 +0000 (10:02 +0100)]
Update Encode to CPAN version 2.44
[DELTA]
$Revision: 2.44 $ $Date: 2011/08/09 07:49:44 $
! Unicode/Unicode.xs
Addressed the following:
Date: Fri, 22 Jul 2011 13:58:43 +0200
From: Robert Zacek <zacek@avast.com>
To: perl5-security-report@perl.org
Subject: Unicode.xs!decode_xs n-byte heap-overflow
! Encode.pm encoding.pm
! lib/Encode/Alias.pm lib/Encode/Encoder.pm lib/Encode/Guess.pm
Applied: RT#69735: patch for use constant DEBUG =>
https://rt.cpan.org/Ticket/Update.html?id=69735
Nicholas Clark [Tue, 9 Aug 2011 10:13:56 +0000 (12:13 +0200)]
Refactor Porting/checkcfgvar.pl, simplifying the control flow.
Nicholas Clark [Tue, 9 Aug 2011 10:06:08 +0000 (12:06 +0200)]
In checkcfgvar.pl, eliminate the file-scope lexical %lst.
Nicholas Clark [Tue, 9 Aug 2011 09:47:50 +0000 (11:47 +0200)]
In checkcfgvar.pl, eliminate the file-scope lexical %MASTER_CFG.
Nicholas Clark [Tue, 9 Aug 2011 09:30:35 +0000 (11:30 +0200)]
In checkcfgvar.pl, inline and eliminate read_file() and config_h_SH_reader().
config_h_SH_reader() was called once in one place, to generate a closure
passed to read_file(). In turn, read_file()'s use of a callback to process
lines of the file that it opened concealed the near-linear flow of control.
use autodie; to simplify the error handling.
Nicholas Clark [Tue, 9 Aug 2011 08:51:09 +0000 (10:51 +0200)]
In checkcfgvar.pl, inline check_cfg() into its only caller.
Tony Cook [Wed, 20 Jul 2011 10:23:15 +0000 (20:23 +1000)]
work around a bug in dtrace - it strips const from function parameters
With usedtrace this caused:
- build failures under g++ (OS X)
- const qualification warnings with gcc (OS X)
The workaround simply adds const to char * parameters if not already
present.
The bug in dtrace was apparently reported to Sun in 2006:
http://opensolaris.org/jive/thread.jspa?threadID=53810
Mozilla ran into the same problem:
https://bugzilla.mozilla.org/show_bug.cgi?id=593483
Nicholas Clark [Tue, 9 Aug 2011 07:44:54 +0000 (09:44 +0200)]
Remove 5.8.x VOS specific code from Porting/checkcfgvar.pl.
Commit
3fd80bd61943d0f8 in 2002 removed vos/config.{alpha,gf}.def from
blead, but they were still present in maint-5.8, so the logic to process
them was retained, to minimise the differences in the Porting/* scripts.
maint-5.8 is EOL now, so these can be removed.
Nicholas Clark [Tue, 9 Aug 2011 07:25:07 +0000 (09:25 +0200)]
Add defaults for st_ino size/sign probes to uconfig64.sh
These were not added in
668fdbe135fd76c7 because Porting/checkcfgvar.pl was
not aware that uconfig64.sh needed testing.
Nicholas Clark [Tue, 9 Aug 2011 07:24:20 +0000 (09:24 +0200)]
Add uconfig64.sh to the list of files that Porting/checkcfgvar.pl checks.
Father Chrysostomos [Tue, 9 Aug 2011 05:15:52 +0000 (22:15 -0700)]
Make prototype("CORE::CORE") die once more.
Commit
b8c38f0a2a65 accidentally made prototype("CORE::CORE") return
undef instead of dying. This is the only case that reached the line
with the ‘Should not happen...’ comment.
This commit changes it to be handled earlier and also adds an asser-
tion to make sure that unreachable code really is unreachable (which
it should be now, I think, I hope...).
Gerard Goossen [Mon, 8 Aug 2011 20:18:03 +0000 (22:18 +0200)]
Only warn about "Statement unlikely to be reached" after an exec if exec is a statement.
Moving the OP_EXEC check to finalize_optree changed that it would also
warn if 'exec' is part of an expression. This patch changes the
behaviour to only warn if 'exec' is the whole statement, which
appears to be the behaviour before moving the check to finalize_optree.
Gerard Goossen [Sat, 6 Aug 2011 15:50:40 +0000 (17:50 +0200)]
Change aassign_common_vars to check using the optree without using the linked list.
Besides no longer depending on the op chain this also solves a bug
where the common vars where not detected because of logical operators.
Gerard Goossen [Sat, 6 Aug 2011 15:23:03 +0000 (17:23 +0200)]
Move aassign common var detection to a separate function.
Gerard Goossen [Sat, 6 Aug 2011 16:24:12 +0000 (18:24 +0200)]
AASSIGN_COMMON var detection bug with logical operators, TODO test
Florian Ragwitz [Mon, 8 Aug 2011 14:37:33 +0000 (16:37 +0200)]
Upgrade bignum to version 0.29
Craig A. Berry [Sun, 7 Aug 2011 16:05:40 +0000 (11:05 -0500)]
Fix porting check for dots in directory names.
The existing check conflated two different potential problems,
multiple dots in a filename and dots in a directory name.
Multiple dots in a filename can cause various kinds of trouble,
depending on the VMS filesystem in use, but there are workarounds
for older filesystems and this problem is unlikely to cause a
build failure, so it's probably too stringent to make a test
fail when we find them (and there are lots of examples already
in the repository).
*Any* dots in a directory name are problematic because dot is the
directory delimiter. Newer (ODS-5) filesystems can handle these
if escaping is done but older (ODS-2) filesystems can't and the
manifest checker in configure.com can't. In other words, the
build falls down hard in this case.
The existing test was checking for multiple dots in a directory
name but not checking the filename at all. I've changed it to
check for any dots in a directory name.
Florian Ragwitz [Mon, 8 Aug 2011 13:53:59 +0000 (15:53 +0200)]
ExtUtils::Manifest 1.59 just made it to CPAN
Chris 'BinGOs' Williams [Mon, 8 Aug 2011 10:02:50 +0000 (11:02 +0100)]
Update Params-Check to CPAN version 0.32
[DELTA]
Changes for 0.32 Mon Aug 8 10:53:36 2011
============================================
* Removed unnecessary use Data::Dumper
H.Merijn Brand [Mon, 8 Aug 2011 10:06:45 +0000 (12:06 +0200)]
GNU gcc-4.6.1 revealed a broken system header on HP-UX 11.00
Chas. Owens [Sun, 7 Aug 2011 19:37:10 +0000 (12:37 -0700)]
[perl #96228] perlop misdocuments ${ qr/x/ } as undef
Nicholas Clark [Sun, 7 Aug 2011 14:16:00 +0000 (16:16 +0200)]
In embed.pl, inline hide() and bincompat_var() into their only call point.
hide() has only been used by bincompat_var() since commit
acfe0abcedaf592f
in 2001, and bincompat_var() only used in one place at the top level since
commit
87b9e16005b9e39b in 2010.
Nicholas Clark [Sun, 7 Aug 2011 14:04:26 +0000 (16:04 +0200)]
In embed.pl, refactor readvars() to return a sorted list.
Previously it would assign to the hash reference passed to it. However, the
rest of the code only ever used the keys of that hash, in sorted order, so it
is simpler to change readvars() to return that list directly.
Also move the declaration of the lexical $sym down to its first point of use.
Nicholas Clark [Sun, 7 Aug 2011 13:46:09 +0000 (15:46 +0200)]
In embed.pl, remove unused parameter $keep_pre from readvars().
$keep_pre was added by commit
c6af7a1aaf1f569e in 1998, and the last user
removed by commit
51371543ca1a75ed in 1999.
Chris 'BinGOs' Williams [Sun, 7 Aug 2011 09:56:50 +0000 (10:56 +0100)]
Update CPAN to CPAN version 1.9800
[DELTA]
2011-08-07 Andreas J. Koenig <andk@cpan.org>
* release 1.9800
* RT #69463: fix memory leak in CacheMgr (Serguei Trouchelle)
2011-06-27 Andreas J. Koenig <andk@cpan.org>
* release 1.97_51
* address #68835: Changed read_meta to ignore dynamic_config (David Golden)
* bugfix: refuse to store_persistent if the own build_dir is not
available (Andreas Koenig)
* cosmetics: remove "Going to" from the beginning of user-visible
strings (Jesse Vincent)
* flock adjustments for Win32 from activestate (Christian Walde)
Chris 'BinGOs' Williams [Sat, 6 Aug 2011 21:38:29 +0000 (22:38 +0100)]
Update DB_File to CPAN version 1.824
[DELTA]
1.824 6 Aug 2011
* Amendments to tests to work in blead
[RT #70108]
Chris 'BinGOs' Williams [Sat, 6 Aug 2011 16:38:01 +0000 (17:38 +0100)]
Update DB_File to CPAN version 1.823
[DELTA]
1.823 6 Aug 2011
* croak if attempt to freeze/thaw DB_File object
[RT #69985]
Sandy Andy [Sat, 6 Aug 2011 06:09:22 +0000 (08:09 +0200)]
prevent mixing non-native and native newlines in manifest files
Father Chrysostomos [Sat, 6 Aug 2011 12:55:57 +0000 (05:55 -0700)]
Remove comment from ck_glob that is no longer relevant
This code was made more failsafe by commit
4984aa345.
Chris 'BinGOs' Williams [Fri, 5 Aug 2011 17:38:51 +0000 (18:38 +0100)]
Update ExtUtils-MakeMaker to CPAN version 6.59
[DELTA]
6.59 Fri Aug 5 12:09:00 BST
No changes since 6.58_01
6.58_01 Wed Aug 3 21:12:00 BST
Doc Fixes
* Corrected the repository location [chorny]
Bug Fixes
* Removed the %INC check from _has_cpan_meta and updated the CPAN::Meta
bundled with EUMM to one that doesn't set $VERSION in a begin block
so it can't appear to be loaded, thus causing us to mistakenly try
and call methods on CPAN::Meta modules - this is due to older versions
in site_perl shadowing our installation of other bundled modules.
[rt.cpan.org 69465] [rt.cpan.org 69900] [MSTROUT]
David Mitchell [Fri, 5 Aug 2011 16:46:46 +0000 (17:46 +0100)]
RT #96354: \h \H \v and \V didn't check for EOL
The HORIZWS and similar regexp ops didn't check that the end of the string
had been reached; therefore they would blithely compare against the \0 at
the end of the string, or beyond.
Craig A. Berry [Fri, 5 Aug 2011 14:12:25 +0000 (09:12 -0500)]
Don't use [.lib.pods] staging directory in VMS builds.
It's arduous to maintain all the dependency rules, and since
7eb47696de, which removed the only reference to $(pod), we don't
even *run* any of those rules, i.e., the directory does not even
get populated during the build. Its existence appears to be a
carryover from a time before installperl copied [.pods] in the
build directory to [.lib.pods] in the install directory.
Reducing the size of vms/descrip_mms.template by 44% probably
won't cause too many tears to be shed, either.
Craig A. Berry [Fri, 5 Aug 2011 14:01:39 +0000 (09:01 -0500)]
Don't install perldoc.com twice.
It gets built and installed in [.utils], so there's no reason to
copy it into [.lib.pods], from whence it gets installed a second
time. Putting it in [.lib.pods] was introduced way back in
97abc6adff, well before installperl was even working on VMS.
Craig A. Berry [Fri, 5 Aug 2011 13:25:37 +0000 (08:25 -0500)]
No dots in directory names, please.
Dot is the directory delimiter on VMS, so it's awkward at best to use
it in directory names.
4eb81ef279, "Update Module-Metadata to CPAN
version 1.000005" introduced two new directories with dots in the
name, which confused the manifest checker and broke the build on VMS.
brian greenfield [Fri, 29 Jul 2011 12:55:10 +0000 (13:55 +0100)]
Fix typos in pod/perlgit.pod
Steffen Mueller [Thu, 4 Aug 2011 18:12:21 +0000 (20:12 +0200)]
Another ExtUtils::ParseXS version upgrade necessary
This is ExtUtils::ParseXS 3.02. Nothing to see here.
Steffen Mueller [Thu, 4 Aug 2011 15:52:18 +0000 (17:52 +0200)]
Promote ExtUtils::ParseXS to a stable release
Niko Tyni [Thu, 4 Aug 2011 15:33:39 +0000 (08:33 -0700)]
Skip the hanging eintr.t test on GNU/kFreeBSD too
As we're still using a list of hanging operating systems,
include 'gnukfreebsd' by matching for 'freebsd' anywhere in $^O.
H.Merijn Brand [Thu, 4 Aug 2011 07:20:32 +0000 (09:20 +0200)]
Support gcc-4.x on HP-UX PA-RISC/64
Correct the socketsize. Probably due to big-endian versus
little-endian, this has always worked on Intel CPUs. This
is a very very old problem, and it has been the reason I
never used gcc-4 on PA-RISC, because perl would not pass
the test suite in 64bitall.
Noticeable effects of wrong "$socksizetype" are return codes
of 0 (pass) from functions like getpeername (), but invalid
(or none) data in the returned structures or a return length
of 0 or 256. In the latter case, the length is stored in the
second part of the 64bit long and the 32bit first part is 0.
This might be true on Intel-like machines too, but the tests
will pass, as the significant part of the returned length is
in the first 32bits and a pointer to int will still see that
correct. Mind that in that case the 32bits after that might
have been overridden => can of worms.
Chris 'BinGOs' Williams [Wed, 3 Aug 2011 08:28:11 +0000 (09:28 +0100)]
Update Module-Metadata to CPAN version 1.000005
[DELTA]
1.0.5 2011-08-02 09:45:00
- Localize $package::VERSION during version discovery (MIYAGAWA)
- Fix references to Module::Build::ModuleInfo [RT #66133] (DAGOLDEN)
- Added 'new_from_handle()' method [RT #68875] (DAGOLDEN)
- Improved documentation (SYNOPSIS, broke out class/object method, and
other minor edits) (DAGOLDEN)
Chris 'BinGOs' Williams [Wed, 3 Aug 2011 08:17:26 +0000 (09:17 +0100)]
Update CPAN-Meta to CPAN version 2.112150
[DELTA]
2.112150 2011-08-02 22:25:41 America/New_York
[BUGFIX]
- Stringify any objects encountered during conversion. (RT #67295)
- Fixed some broken URLs in documentation and for LGPL in legacy
conversion (RT #68738)
- Fixed invalid private Pod in CPAN::Meta::Validator (RT #65925)
[SPEC]
- Clarified that file paths in the 'provides' section must be in
Unix-style (i.e. forward slashes) (RT #69045)
- Replaced examples using Module::Build::ModuleInfo with Module::Metadata
(RT #66135)
Craig A. Berry [Wed, 3 Aug 2011 00:06:41 +0000 (19:06 -0500)]
Add the correct PL_sig_ignoring skip for VMS in makedef.pl.
This only exists when FAKE_PERSISTENT_SIGNAL_HANDLERS is defined,
and that's only defined when HAS_SIGACTION is false.
The problem was exposed by
ed76ea85d1, which fixed a typo introduced
in
aadb217dbe, but that typo introduced code that was a noop on all
platforms, including VMS, where $^O is 'VMS', not 'vms'.
TODO: The existence of PL_sig_defaulting and PL_sig_handlers_initted
depends on the definedness of FAKE_DEFAULT_SIGNAL_HANDLERS, which
depends on KILL_BY_SIGPRC, which is written directly to config.h
without being recorded in config.sh and is thus not visible in Config.
So there's no good way to know when these symbols should be skipped.
KILL_BY_SIGPRC currently gets defined on all VMS versions and platforms,
so it's a breakage-in-waiting but does not actually fall down (yet).
Father Chrysostomos [Tue, 2 Aug 2011 21:41:58 +0000 (14:41 -0700)]
Remove Perl_mod
After mod was renamed to op_lvalue, this stub was added temporarily
to provide a smoother transition for the compilers. The compiler
maintainer is happy with its extirpation at this stage. See
ticket #78908.
Father Chrysostomos [Tue, 2 Aug 2011 21:33:25 +0000 (14:33 -0700)]
Increase $diagnostics::VERSION from 1.23 to 1.24
Matthew Horsfall (alh) [Mon, 1 Aug 2011 02:42:22 +0000 (22:42 -0400)]
RT #94988 - Support for %u in diagnostics.pm's printf()-format parser
Keith Thompson [Tue, 2 Aug 2011 20:58:09 +0000 (13:58 -0700)]
Fix typos in pod/perlexperiment.pod
Father Chrysostomos [Tue, 2 Aug 2011 19:36:32 +0000 (12:36 -0700)]
A few tweaks to the new perlexperiment.pod
• The :unique attribute has been deprecated already.
• The fields pragma has never been experimental and still exists.
• Grammar
Keith Thompson [Sat, 30 Jul 2011 00:17:00 +0000 (17:17 -0700)]
Fix typos in several pod/perl*.pod files
Father Chrysostomos [Tue, 2 Aug 2011 15:39:56 +0000 (08:39 -0700)]
Make verbatim pod in bignum.pm fit in 80 columns
brian d foy [Mon, 25 Oct 2010 05:10:06 +0000 (00:10 -0500)]
Add perlexperiment to detail experimental features
nearly all this work merged from brian d foy's briandfoy/perlexperiment branch,
tidied up and squished by rjbs
Vincent Pit [Tue, 2 Aug 2011 10:17:47 +0000 (12:17 +0200)]
SvREFCNT_dec already checks if the SV is non-NULL
Chris 'BinGOs' Williams [Mon, 1 Aug 2011 19:17:54 +0000 (20:17 +0100)]
Update Module-Load to version 0.20
[DELTA]
Changes for 0.20 Mon Aug 1 19:13:44 2011
============================================
* Resolve [rt #69886] reported by Laurent Dami,
trailing '::' silently ignored
Tony Cook [Mon, 1 Aug 2011 12:01:02 +0000 (22:01 +1000)]
Note the stat() change in perldelta
Tony Cook [Wed, 27 Jul 2011 11:32:37 +0000 (21:32 +1000)]
[rt #84590] try to preserve the inode number, even if it's large
This matches the checks done for other stat() fields.
Nicholas Clark [Mon, 1 Aug 2011 10:08:55 +0000 (12:08 +0200)]
Merge the refactored makedef.pl into blead.
This adds a new script, Porting/exercise_makedef.pl, to help test makedef.pl.
Nicholas Clark [Mon, 1 Aug 2011 10:07:44 +0000 (12:07 +0200)]
Note in perldelta that makedef.pl has been refactored.
Nicholas Clark [Thu, 28 Jul 2011 15:03:04 +0000 (17:03 +0200)]
In makedef.pl, refactor the code that reads *.sym files.
Hoist the test that chooses the prefix out of the loop. Tweak the regex to
avoid needing an explicit chomp/ Use 3-arg open and a lexical for the file
handle.
Nicholas Clark [Thu, 28 Jul 2011 13:08:27 +0000 (15:08 +0200)]
In makedef.pl, correct a typo in a comment.
Nicholas Clark [Thu, 28 Jul 2011 13:05:26 +0000 (15:05 +0200)]
In makedef.pl, avoid creating %PLATFORMS just for one existence check.
A single linear search of @PLATFORMS is simpler and possibly even faster
than building a hash from @PLATFORMS, making one lookup, then discarding the
hash.
Add a block to limit the scope of @PLATFORMS to the code that uses it.
Nicholas Clark [Thu, 28 Jul 2011 12:29:27 +0000 (14:29 +0200)]
In makedef.pl, use %ARGS instead of 4 variables for command line arguments.
This simplifies processing @ARGV.
Nicholas Clark [Thu, 28 Jul 2011 12:04:53 +0000 (14:04 +0200)]
In makedef.pl, consolidate all the C compiler flags parsing code.
This isn't quite a "pure" refactoring, as -Dfoo=bar read from %Config will
now be processed as $Config{foo} = 'bar'; instead of $Config{foo} = 1;
However, it won't change any behaviour, as the only time makedef.pl uses a
value of %define for anything other than a truth test is $define{PERL_DLL},
and that is passed in on the command-line by the Makefile invoking
makedef.pl
Nicholas Clark [Thu, 28 Jul 2011 11:24:36 +0000 (13:24 +0200)]
In makedef.pl, read ccflags and optimize from %Config.
Previously they were read by opening and parsing config.sh. Remove all code
related to reading config.sh, as it is no longer needed.
Nicholas Clark [Thu, 28 Jul 2011 11:06:26 +0000 (13:06 +0200)]
In makedef.pl, read 4 configuration values direct from %Config.
makedef.pl has been using Config since commit
9d6c7f2eccef26a6 in 2009.
Hence we can read them direct from %Config, instead of parsing config.sh
and storing the values in %define.
Nicholas Clark [Wed, 27 Jul 2011 21:21:14 +0000 (23:21 +0200)]
In makedef.pl, merge the code that reads config.sh
For now, retain compatibility (bug compatibility?) by not processing ccflags
and optimize on Win32, WinCE and NetWare.
Nicholas Clark [Fri, 29 Jul 2011 11:37:42 +0000 (13:37 +0200)]
In makedef.pl, export boot_* for static modules only on Win32 and WinCE.
The code as-is will only be run on Win32 and WinCE, because currently the
code to populate $static_ext is only run on Win32 and WinCE. As-is this code
can't be run on all platforms, because currently *nix (ie AIX) links static
extensions into the perl executable, rather than into the shared perl
library. Hence boot_* functions for static extensions aren't in the shared
perl library, so it would be an error to attempt to export them from it.
Nicholas Clark [Wed, 27 Jul 2011 13:36:35 +0000 (15:36 +0200)]
In makedef.pl, tidy up the MYMALLOC logic.
No need to call try_symbols() for PL_malloc_mutex, as it is found in
perlvars.h. Unlike PL_perlio_mutex, PL_malloc_mutex isn't listed in the
main !USE_ITHREADS skip list - perhaps it should be for consistency.
Nicholas Clark [Tue, 26 Jul 2011 20:26:13 +0000 (22:26 +0200)]
In makedef.pl, tidy up the USE_PERLIO logic.
No need to call try_symbols() for PL_perlio_mutex, as it is found in
perlvars.h, and no need to duplicate the skip for it if USE_ITHREADS is not
defined.
We do need to skip PL_perlio_mutex if if USE_PERLIO is not defined but
USE_ITHREADS is [not that this is a configuration that Configure will let
you select, until you edit it :-)]
Add a comment describing what the "Oddities from PerlIO" are.
Remove PerlIO_sv_dup from the list, as it's also in @layer_syms, and
inclusion in @layer_syms makes the former redundant. It was added to both in
commit
8437356be6fd345c in 2001.
Nicholas Clark [Tue, 26 Jul 2011 15:25:39 +0000 (17:25 +0200)]
In makedef.pl, consolidate all the code that tries platform-specific symbols.
Previously the code for OS/2 and VMS was run much earlier. Fortunately none
of the symbols tried were conditionally added to the skip list, else much
confusion would have ensued.
Move the OS/2 code that reads miniperl.map after the code that tries
platform-specific symbols.
Nicholas Clark [Tue, 26 Jul 2011 13:15:32 +0000 (15:15 +0200)]
In makedef.pl, remove duplicate symbols passed to try_symbols() for OS/2.
Code to try the 4 thread-specific symbols was added in 2003 by commit
5c728af092d5feba. However, all 4 symbols were already listed in makedef.pl,
added in 1999 by commit
3cfae81b38bc8edd.
(Unlike other platforms, on OS/2 adding symbols to %export that aren't
actually compiled in does not cause errors, as there is code later in
makedef.pl to read in miniperl.map, and strip from %export all symbols not
listed there.)
Nicholas Clark [Tue, 26 Jul 2011 13:04:57 +0000 (15:04 +0200)]
In makedef.pl, replace calls to try_symbol() with try_symbols().
Following the simplification of the previous commit, the two are now
equivalent.
Nicholas Clark [Tue, 26 Jul 2011 12:37:53 +0000 (14:37 +0200)]
In makedef.pl, change readvar() to add items to a passed-in hash reference.
Previously, readvar() returned a list of symbols, extracting the names of
the variables declared there, then transforming them either via a passed in
function, or prepending 'PL_'. The list was then either added to %skip, or
added to %export by try_symbols(), which had a kludge to normalise the
previous transformation to 'PL_'.
Instead, passing a reference to the target hash into readvar() allows that
kludge to be removed, considerably simplifying try_symbols().
Nicholas Clark [Tue, 26 Jul 2011 12:20:25 +0000 (14:20 +0200)]
In makedef.pl, no need to loop over a 1 item list.
Nicholas Clark [Tue, 26 Jul 2011 11:09:56 +0000 (13:09 +0200)]
In makedef.pl, inline output_symbol() into its only caller.
Remove code commented out by commit
51371543ca1a75ed in 1999 with the note
"binary compatibility between compilers is an exercise in frustration".
Nicholas Clark [Tue, 26 Jul 2011 10:46:48 +0000 (12:46 +0200)]
In makedef.pl, consolidate the actual output code in one place.
Previously, the platform specific header output code was near the top of
makedef.pl, before some of the emit/skip logic and some of the file reading
code, and far from the rest of the output logic.
Nicholas Clark [Tue, 26 Jul 2011 10:23:51 +0000 (12:23 +0200)]
In makedef.pl, rename emit_symbols() to try_symbols(), and pass it a list.
try_symbols() better describes what it does - add symbols to the list to
export, unless they are in the skip list.
Nicholas Clark [Tue, 26 Jul 2011 10:05:51 +0000 (12:05 +0200)]
In makedef.pl, inline emit_symbol.
All emit_symbol() did was add to the hash of symbols to emit the list it was
passed.
Nicholas Clark [Tue, 26 Jul 2011 09:16:02 +0000 (11:16 +0200)]
In makedef.pl, eliminate now-superfluous chomp and file-content processing.
emit_symbol() would chomp every symbol passed to it. The chomp was added in
3e3baf6d63945cb6, in the refactoring which replaced print statements with
emit_symbol(), because its callers (still) passed it the values previously
printed, values generated from the lines of files. The chomp in emit_symbol()
probably should have been removed as part of
22239a37ce131e4f, which unified
the code that parsed external files, adding chomp there, and added chomp to
the code which read from <DATA>.
The chomp of <DATA> added in
22239a37ce131e4f was moved wholesale with all
the file-content specific processing into a new routine try_symbol() in
commit
549a6b102c2ac8c4 on the cfgperl branch. That commit and subsequent
commits used try_symbol() as the general-purpose routine to add symbols to
the export list, even though it also had all the specific file processing
code to ignore comments and other text that did not look like symbols.
An analogous alternative routine to add symbols to the export list,
emit_symbols(), was added to blead 6 days earlier in commit
51371543ca1a75ed.
As makedef.pl no longer uses <DATA>, and reading from external files is
nicely encapsulated, all this vestigial code can be removed.
Technical debt from 1997 and 1999 finally being eliminated.
Nicholas Clark [Mon, 25 Jul 2011 22:02:22 +0000 (00:02 +0200)]
In makedef.pl, inline skip_symbols.
All skip_symbols() did was add to the hash of symbols to skip the list it was
passed.
Nicholas Clark [Mon, 25 Jul 2011 20:59:30 +0000 (22:59 +0200)]
In makedef.pl, readvar now returns a list, not an array reference.
Convert it from a loop to a map. Refactor its callers to use its results
directly, instead of assigning to a lexical variable which is used only once.