| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
The build was broken by the move of Carp from lib to dist, because
miniperl calls perlmodlib.PL, perlmodlib.PL loads FindBin, and FindBin
wants Carp.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
regen/uconfig_h.pl can't be run (by default) by regen.pl, as regen.pl needs
to be cross-platform, whilst regen/uconfig_h.pl relies on having a Bourne
Shell. However, if one has managed to extract Makefile from Makefile.SH,
that's clear proof that one has a working Bourne Shell available :-)
|
|
|
|
|
|
| |
uudmap.h bitcount.h mg_data.h are all generated by generate_uudmap, and all
need to be deleted as part of the clean targets, so it makes sense to
reference all 3 together using a single makefile macro.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Also fixes link issues with usedtrace on Solaris, since perlmini.o
wasn't being processed by dtrace.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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'.
|
|
|
|
|
|
|
| |
shared library
of course, it could be that these dependencies are as redundant as the
rest.
|
|
|
|
|
|
|
|
|
| |
1) Text/ParseWords isn't XS, so never appears in dynamic_ext
2) there's no lib/auto/Scalar/Util.$dlext target, the file would be
lib/auto/Scalar/Util/Util.$dlext , but it's built as part of
List-Util, so there's no dependency lib/auto/Scalar/Util/Util.$dlext
anyway.
|
| |
|
|
|
|
|
|
| |
these were added because the build process for Encode and SDBM_File
changes directory, invalidating the original "../lib:../../lib"
PERL5LIB. With buildcustomize.pl they can change directory safely.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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"
|
|
|
|
| |
Signed-off-by: David Golden <dagolden@cpan.org>
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
In the other makefiles test_prep (or test-prep) depends on all, so
they shouldn't need updating.
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
| |
As outlined in the RT ticket due to miniperl's dependencies differing to
the final perl binary dtrace -G needs to be called separately for each.
Build tested on Mac OS X 10.6, Solaris 11 and Scientific Linux with
SystemTap from git.
(Solaris is the only system I have access to where DTRACE_O actually gets
defined. Neither the dtrace binary on OS X nor SystemTap's dtrace
compatibility layer accept the -G option.)
|
| |
|
|
|
|
| |
cbeaa1895 removed the reference to $perlpath
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Jerry D. Hedden was right to question whether this was now superfluous, because
as best I can tell it was *always* superfluous. Perl 5.000 shipped with a
Makefile rule to build perlmain.c using a shell script, with a dependency for
perlmain.c on makefile. [Lowercase makefile, now abstracted as $(FIRSTMAKEFILE).
This is generated by makedepend from Makefile, by calculating the dependency
rules to append to it.] The rule to generate perlmain.c had a prerequisite on
$(FIRSTMAKEFILE), and in turn $(FIRSTMAKEFILE) has a dependency on $(c), which
included perlmain.c. Hence there was a circular dependency, and the "solution"
to avoiding repeated rebuilds was to touch perlmain.c (if it exists), after
running makedepend.
As best I can tell there is no *actual* dependency for the correct generation
of perlmain.c on the contents of $(FIRSTMAKEFILE), as the relevant variables
are the same in both Makefile and $(FIRSTMAKEFILE). Hence this command should
have been removed, along with the dependency, years ago. However, no-one
spotted this until Jerry observed that fbcaf61123069fe4 changed the build
rules, and removed the dependency, but not the touch command.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise miniperl gets built by ./makedepend, as it calls `make clist`,
clist depends on the initial list of C files, and perlmain.c has rules to
(re)build it which depend on miniperl.
There is no dependency problem with removing perlmain.c from the list of C
files, and hence the list of files for which makefile dependency rules are
generated, as its (new) dependency on miniperl means that it will always be
rebuilt if miniperl is rebuilt, and in turn miniperl will always be rebuilt
it miniperlmain.o is out of date. perlmain.o has the same dependencies as
miniperlmain.o, so the requirement to rebuild is always satisfied.
Thanks to Florian Ragwitz for spotting this problem.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This allows writemain.SH to be removed. This also has the side effect of testing
that ExtUtils::Miniperl actually works. :-)
|
|
|
|
|
|
|
|
|
| |
Without this, a parallel make for a static build can fail, as x2p/Makefile
uses ../perl for a static build, but there was no rule to ensure that ../perl
was built.
A static build currently still fails some tests, I think because Encode doesn't
link all encodings staticly.
|
| |
|
| |
|
|
|
|
| |
f4d47668d36d0dd4 unintentionally removed it.
|
| |
|
|
|
|
| |
Initially move only Tie::Hash::NamedCapture::flags from universal.c to it.
|
|
|
|
|
|
|
|
| |
The x2p and utils .PL extractions use the Cwd module, which is not
available in miniperl in a static build. (For a dynamic build, miniperl
only loads the pure perl portion of Cwd, but building the whole extension
ensures that the pure perl part is correctly built and available. It might
be cleaner just to always require the full perl.)
|
| |
|
|
|
|
|
| |
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.
|