| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
| |
This just does the general bookkeeping necessary when a new pod
(like the one in the previous commit) is added.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces the latter's long-standing method of running
perl.h through the C preprocessor and parsing the output in
order to see what symbols need exporting in the linker options
file.
vms/gen_shrfls.pl remains part of the process for now since it
knows various things about generating linker options files on
different architectures and other VMS-specific gotchas such as
symbol case sensitivity and long symbol shortening. These
features could be added to makedef.pl but are unlike anything
currently done there.
This should slightly increase the chances that folks can modify
the API without breaking the build, and it should make us a bit
stricter about only exporting the symbols we intend to, but the
result is still far from optimal. It replaces one set of
heuristics and manually-maintained inclusion and exclusion lists
with different heuristics and even longer lists of inclusions and
exclusions.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When it sees the unixy ? as a single-character wildcard rather than
the native %, it intended to leave it alone when the CRTL's extended
character set processing was enabled, but it was actually checking
for a different and unrelated feature setting (case preservation),
meaning it would substitute % for ? in some cases where it meant
not to. This likely did no harm in most cases as LIB$FIND_FILE
will honor either, but if the pattern were to be re-used in a context
that required POSIX semantics, the ? really ought to be preserved
and now it is.
Broken in dca5a9130eb9e045fd52f88cf3dedee7093e19f7.
|
|
|
|
| |
Update a few missing or moved items in the realclean target.
|
|
|
|
|
|
|
|
|
| |
Even if that action says "Don't do anything." MMK silently ignores
this but MMS falls down hard with:
%MMS-F-GWKNOACTS, Actions to update PREPLIBRARY are unknown.
This was broken in ebca06e95b02d1a8cf073328af30c9f4b9af6891.
|
|
|
|
|
|
| |
This is a bug I introduced in 66b82e1fdff51a4c821a3a249fe707cf8014a185.
Surprising it hasn't caused more trouble. When building with MMS, it's
a hard error, whereas MMK silently ignores it.
|
| |
|
| |
|
| |
|
|
|
|
| |
It has been deprecated in 5.14. Now is the time to remove it.
|
|
|
|
| |
6f83ef0e5a45c465f83de3304c5818ba44492250.
|
|
|
|
|
|
|
|
|
|
|
| |
Use it to eliminate the large switch statement in Perl_sv_magic().
As the table needs to be keyed on magic type, which is expressed as C character
constants, the order depends on the compiler's character set. Frustratingly,
EBCDIC variants don't agree on the code points for '~' and ']', which we use
here. Instead of having (at least) 4 tables, get the local runtime to sort the
table for us. Hence the regen script writes out the (unsorted) mg_raw.h, which
generate_uudmap sorts to generate mg_data.h
|
|
|
|
|
|
|
|
|
|
|
| |
Previously perl.h contained a long section of MGVTBL_SET() macros declaring
the core's various magic vtables. Convert the information into data structures
in a new script regen/mg_table.pl, and use this to generate a new file
mg_vtable.h, included by perl.h
This is the first step in reducing the number of places that data relating to
magic vtables is declared (and has to be kept in sync), and will allow more
flexibility in parts of the core's implementation.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
We were only using the base archname (e.g., "VMS_AXP"), which is
ok for a default bulid, but if any additions were made to it,
such as "-thread", there would be a discrepancy between the
actual directory on disk and what perl.c:S_incpush would look for
when loading up @INC. The net effect was that the architecture-
specific directory would not get loaded into @INC.
|
|
|
|
|
| |
sys_trnlnm was a copy-and-paste clone of simple_trnlnm and
sys_crelnm was never used, so nuke them.
|
| |
|
|
|
|
|
|
| |
Set $ENV{PERL_CORE_MINITEST} based on defined &DynaLoader::boot_DynaLoader,
instead of relying on a -minitest parameter. &DynaLoader::boot_DynaLoader is
undefined in miniperl, defined in perl, for both -Dusedl and -Uusedl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quoth Porting/perldelta_template.pod:
"Run C<perl pod/buildtoc --build-all> to update the F<perldelta>
version in the following files:
MANIFEST
Makefile.SH
pod.lst
pod/perl.pod
vms/descrip_mms.template
win32/Makefile
win32/makefile.mk
win32/pod.mak"
|
| |
|
|
|
|
|
|
|
| |
This avoids a build-time race condition where lib/re.pm might be read midway
through the *second* copy of it (when ext/re/Makefile is being run). It also
simplifies many [Mm]akefile* rules, which previously had a special case to
copy it early.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the build tools now shipped in various subdirectories of cpan/ and dist/
we need to add several paths to @INC when invoking MakeMaker (etc) to build
extensions.
The previous approach of using $ENV{PERL5LIB} was fragile, because:
a: It was hitting the length limit for %ENV variables on VMS
b: It was running the risk of race conditions in a parallel build -
ExtUtils::Makemaker "knows" to add -I../..lib, which puts lib at the *front*
of @INC, but if one parallel process happens to copy a module into lib/
whilst another is searching for it, the second may get a partial read
c: Overwriting $ENV{PERL5LIB} breaks any system where any of the installed
build tools are actually implemented in Perl, if they are relying on
$ENV{PERL5LIB} for setup
This approach
a: Doesn't have %ENV length limits
b: Ensures that lib/ is last, so copy targets are always shadowing copy
sources
c: Only affects miniperl, and doesn't touch $ENV{PERL5LIB}
Approaches that turned out to have fatal flaws:
1: Using $ENV{PERL5OPT} with a module fails because ExtUtils::MakeMaker
searches for the build perl without setting lib, and treats the error
caused by a failed -M as "not a valid perl 5 binary"
2: Refactoring ExtUtils::MakeMaker to *not* use -I for lib, and instead rely
on $ENV{PERL5LIB} [which includes "../../lib"] fails because:
some extensions have subdirectories, and on these EU::MM correctly uses
-I../../../lib, where as $ENV{PERL5LIB} only has space for relative paths,
and only with two levels.
This approach actually takes advantage of ExtUtils::MakeMaker setting an -I
option correct for the depth of directory being built.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The existing perlhack is huge and takes a long time to get to key
information like "how to submit a patch". It also contains a massive
amount of (very useful) detail on the Perl interpreter, debugging,
portability issues, and so on.
Some parts of perlhack are just obsolete. For example, Larry really
isn't deeply involved on p5p any more.
Meanwhile, perlrepository _also_ contains a lot of useful information
on patching Perl, as well as a small git tutorial focused on working
with the Perl repository.
Taken together, the two documents overlap and conflict with each other.
This commit does the following:
== Reconcile conflicts and overlaps, remove obsolete information
I've separated out distinct pieces of information and organized them
into individual pod files. More on that below. I've also removed anything
that was obviously out of date.
== Make it easier for casual contributors to contribute.
The perlhack document now gets to "how to make a patch" very quickly. My
assumption is that most contributors to Perl are doing something small,
like fixing pod, adding a test, etc.
The documentation aimed at people doing more extensive hacking is still
there, but it's been moved so that it comes at the end of the document
or has been moved to another document.
I've made an effort to cross-reference the various documents so that
nothing gets lost.
== Get to the point
The perlhack document had a lot of discussion of general Perl culture.
I've trimmed a lot of this and moved some of it so it comes later.
== Per-file summary
=== perlrepository.pod
This is gone. Some of its content is now in perlhack. This includes
the bits on writing good commit messages, how (and where) to submit a
patch, etc.
The rest is now called perlgit, and is _only_ a git how-to.
=== perlhack.pod
This has been cut down quite a bit.
I changed the opening so it starts with a quick guide to submitting
small patches.
The document covers bug reporting, the p5p list, a quick how-to on
getting the source (including git, gitweb, and rsync), and a lot of
general information on patching perl and running tests.
Much of this material was already present, but I've done a fair amount
of editing for modernization and clarity.
Most of the information specific to C-level hacking has been moved to
other documents.
=== perlsource.pod
This is a guide to the Perl source tree. Most of the content was extracted
from perlhack. I've edited existing content and added details on some
parts of the tree that weren't covered.
=== perlinterp.pod
This is a tour of the Perl interpreter source and a walkthrough of
how it works that originally lived in perlhack. This has received very
little editing.
=== perlhacktut.pod
This is a walkthrough of creating a sample patch to the C core code that
originally lived in perlhack. This has received very little editing.
=== perlhacktips.pod
The perlhack document contained a lot of useful information on low-level
hacking details like debugging, compilation issues, portability, etc.
This has received very little editing.
I did remove some bits on ancient stuff related to Tru64 and IRIX.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Prepend + or - in front of all the keyword names in __DATA__ to mark weak and
strong keywords, needed for keyword.c
As keywords.c needs Devel::Tokenizer::C 0.05, not a core module (and not a
common module either) we can no longer run it as part of regen.pl. So store
the sha256 of the source in the generated files, and use this in to check that
they are not stale (in t/porting/regen.t)
|
|
|
|
|
|
|
|
| |
As it and Perl_yylex() both need FEATURE_IS_ENABLED, feature_is_enabled() is
no longer static, and the two macro definitions move from toke.c to perl.h
Previously, one had to cut and paste the output of perl_keywords.pl into the
middle of toke.c, and it was not clear that it was generated code.
|
| |
|
|
|
|
|
| |
re-run pod/buildtoc to propagate the new file to the relevant platform
makefiles.
|
|
|
|
|
| |
pod/buildtoc knows which one is current, so we might as well
substitute it in one place and be done with it.
|
|
|
|
|
|
|
|
|
|
|
| |
Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13
locations that relied on them.
regen/opcode.pl now generates prototypes for the PP functions directly, into
pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads
this, removing the only ordering dependency in the regen scripts. opcode.pl
is now responsible for prototypes for pp_* functions. (embed.pl remains
responsible for ck_* functions, reading from regen/opcodes)
|
|
|
|
|
|
|
|
|
| |
# New Ticket Created by (Peter J. Acklam)
# Please include the string: [perl #81918]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=81918 >
Signed-off-by: Abigail <abigail@abigail.be>
|
| |
|
|
|
|
| |
Follow-up to 1daf3b755691d9e2e52b73fcc1111714808c874a.
|
|
|
|
| |
hadn't worked for years before that.
|
| |
|
|
|
|
|
|
|
|
| |
In imitation of e64ca59f2852bc5d0450eea5ed412609a046829d, we don't
really need different prototypes or macros for MULTIPLICITY and
non-MULTIPLICITY. For now, leave drop-in replacements of CRTL
functions alone as there may be more going on there (arguably
these really have no business passing around Perl thread context).
|
|
|
|
| |
Brought to you by -Duser_c_flags=/WARN=(ENABLE=LEVEL5,INFORMATIONAL=ALL)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Follow-up to fbcaf61123069fe46010699dd41ca5f60f448361 at Nicholas's
suggestion.
|
| |
|
| |
|