| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
In Configure, check whether _NSGetExecutablePath() can be used to find the
absolute pathname of the executable. If so, set usensgetexecutablepath in
config.sh and USE_NSGETEXECUTABLEPATH in config.h. If this is set, then use
this approach in S_set_caret_X() to canonicalise $^X as an absolute
path. This approach works on OS X, and possible on other platforms that
use dyld.
|
|
|
|
|
|
|
|
|
|
| |
In Configure, check whether sysctl() and KERN_PROC_PATHNAME can be used
to find the absolute pathname of the executable. If so, set
usekernprocpathname in config.sh and USE_KERN_PROC_PATHNAME in config.h.
If this is set, then use this approach in S_set_caret_X() to canonicalise
$^X as an absolute path. This approach works on (at least) FreeBSD, and
doesn't rely on the /proc filesystem existing, or /proc/curproc/file being
present.
|
|
|
|
|
|
|
|
|
|
| |
Verify that the section of config file containing probed files is sorted
lexically. If --regen is used, updated the file on disk with a correctly
sorted version. (Except for configure.com, which has a different structure
not amenable to automatic analysis and update, hence still has to be
updated manually.)
Ensure all config files are correctly sorted.
|
| |
|
|
|
|
|
|
|
|
|
| |
This means that the core uses the compiler's bool type if one exists.
This avoids potential problems of clashes between perl's own implementation
of bool and the compiler's bool type, which otherwise occur when one
attempts to include headers which in turn include <stdbool.h>.
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
|
|
|
|
|
|
|
|
| |
global.sym was a file listing the exported symbols, generated by regen/embed.pl
from embed.fnc and regen/opcodes, which was only used by makedef.pl
Move the code that generates global.sym from regen/embed.pl to makedef.pl,
and thereby eliminate the need to ship a 907 line generated file.
|
| |
|
|
|
|
| |
Work initiated by Tony Cook
|
| |
|
| |
|
|
|
|
|
|
|
| |
If t/porting/podcheck.t can't find x2p/find2perl, then it is unable to find an
external target for a pod link in perlutil.pod, which it flags up as an error.
find2perl was already a dependency of the 'all' target, hence without this
rule podcheck.t would pass for 'make all test', but not 'make test'.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some of the tests in t/ make directories with names generated by the test.pl
tempfile(), and if they exit abnormally without deleting them, this would cause
distclean to fail. So change `rm -f t/tmp*` to `rm -rf t/tmp*`
Remove other cruft from the same line in the Makefile.
t/misctmp* hasn't been generated since 7a7e49369367a634.
t/forktmp* hasn't been generated since 1c25d394345c1b97.
t/io/fs.t has deleted t/c itself since 44a8e56aa037ed0f.
(Whilst it might abort and fail to delete it, there's no special treatment
in the Makefile for the other file that it creates, "t/TEST$$")
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
Done with:
./perl -Ilib Porting/bump-perl-version -s 5.13.9 5.13.10 > /tmp/scan
./perl -Ilib Porting/bump-perl-version -u < /tmp/scan
And then manually editing the README.vms file to update the vmstar
example.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
Commit b6b9a09997c80269 removed the last vestiges of the code that generated
any files named *-old, but the code to clean them up remained. It serves no
purpose.
|
| |
|
|
|
|
|
|
| |
This reverts commit 7dc5472a0a41a8396671d5586d4c1254a1cb5e8c.
Back out XS switch over
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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 #81880]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=81880 >
Signed-off-by: Abigail <abigail@abigail.be>
|
| |
|
| |
|
|
|
|
|
| |
All files have been modified more recently than their tag, rendering
information in the tag redundant.
|
|
|
|
| |
Sorry for the huge config_h.SH re-order. Don't know (yet) what caused that
|
|
|
|
|
|
| |
makeaperl was added in perl5.000k, wrapped as makeaperl.SH in perl5.000l, but
neither used in the core build nor installed. All it does is acts as a
command-line wrapper to makeaperl() in ExtUtils::MakeMaker.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Let ExtUtils::MakeMaker deal with running these extraction scripts, rather than
repeating the logic in (at least) 5 places.
|
|
|
|
|
| |
Let ExtUtils::MakeMaker deal with running these extraction scripts, rather than
repeating the logic in (at least) 5 places.
|
|
|
|
|
| |
Let ExtUtils::MakeMaker deal with running these extraction scripts, rather than
repeating the logic in (at least) 5 places.
|
|
|
|
|
| |
Let ExtUtils::MakeMaker deal with running this extraction script, rather than
repeating the logic in (at least) 5 places.
|
|
|
|
|
| |
This has not been spotted because is has a dependency on $(plextract) which
in turn depends on x2p/s2p
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make embed.pl fully responsible for generating prototypes and embedding macros
for pp_* and ck_* functions, placing them in embed.h and proto.h
opcode.pl no longer generates pp_proto.h
Remove the (effectively) duplicate explicit entries for (all but 2) ck_*
functions from embed.fnc
We can't actually remove pp_proto.h from the distribution *yet*, as
ExtUtils::MM_Unix and ExtUtils::MM_VMS have hardcoded lists of the installed
headers. Once this is resolved, we can.
|
|
|
|
|
| |
XS-APItest-KeywordRPN has turned out to be less useful as an independent
module than expected, and less strictly about RPN than it originally was.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When porting/makerel runs, all files copied into the directory for the
tarball have the executable bit stripped and then only a specific set of
files have the executable bit restored.
There are many files in the repo that have the executable bit set in the
repo that will be stripped. So that the state of files in the repo is
as close as possible to the state of files in the release tarball, the
executable bit has been stripped from such files.
In one recent case, a file added from a dual-life module needed the
executable bit set. Because it had the bit in the repo but was
not listed in makerel to get an executable bit, tests using it
passed in the repo and failed in the tarball.
This commit refactors the list into a new file, Porting/exec-bit.txt
and add tests to detect a mismatch between files listed there
and actual executable bits in the repo.
|
| |
|
|
|
|
|
|
| |
Unless the file explicitly lists a gcc version I know
to work, I picked safe default values for the new
d_static_inline and perl_static_inline variables.
|
| |
|