| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
We do a version comparison to determine whether Makefile.PL needs to
be run (in case a module version changed). The simple string compar-
ison we have done up till now fails if the two version numbers differ
simply by a trailing zero (as currently happens with DB_File, which
is at version 1.840, with XS_VERSION set to 1.84. Since version.pm’s
routines are compiled into miniperl, there is no reason not to do this
‘properly’, and it stops multiple ‘make’ invocations from rebuilding
DB_File again, and again....
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Switch from two-argument form. Filehandle cloning is still done with the two
argument form for backward compatibility.
Committer: Get all porting tests to pass. Increment some $VERSIONs.
Run: ./perl -Ilib regen/mk_invlists.pl; ./perl -Ilib regen/regcharclass.pl
For: RT #130122
|
|
|
|
|
| |
Add checks similar to what the Makefile would do: only copy the
files if the source file is newer than pm_to_blib
|
|
|
|
| |
I find this makes it easier rather than harder to see what's going on.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
A non-zero exit is fatal according to
http://www.nntp.perl.org/group/perl.qa/2008/08/msg11236.html so do not
continue building even if a Makefile was generated (an END block or code
after WriteMakefile() could have died for example).
This patch is from trying to fix problems in this thread
http://www.nntp.perl.org/group/perl.perl5.porters/2015/10/msg231903.html
|
|
|
|
| |
check MAKEFLAGS for -s|--silent|--quiet and honor it
|
|
|
|
|
|
|
| |
This reverts commit 24631c4f6929bc824e657b74b2edfada4c8d05b0.
The new flock emulation for amigaos now tested with parallel builds
and found to fare well.
|
|
|
|
|
|
| |
The semantics of locking are very different: first you lock,
then you open. (And for semaphore-like uses of files, you
use ... semaphores.)
|
|
|
|
|
|
|
|
| |
nytprof using full (not mini) Win32 perl reported 44 calls on line
"$ENV{PERL_CORE} = 1;" at 623 us spent on line for make_ext.pl --dynamic
Move the env var setting out from build_extension() to before the foreach
loop starts.
|
|
|
|
|
|
|
|
|
|
|
| |
Currently the auto-generated Makefile.PL for Pod::Checker raises a
warning with MakeMaker, since the abstract in the pod isn't parseable.
Also, the package's own Makefile.PL doesn't work with blead (I didn't
exactly understand what the issue was, but porting/dual_lift.t complained
about missing utilities).
So the most expedient hack is to special-case the ABSTRACT in make_ext.pl.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was removed a year ago, but it causes problems with
ABSTACT and ABSTACT_FROM; since there isn't an IO/Compress.pm
file. make_ext.pl special-cases Makefile.PL to get the abstract
from IO/Compress/Base.pm; but MakeMaker looks for, and fails to
find, 'IO::Compress - ...' in the pod for that file,and prints an error.
Rather than more special-casing, it's easier to just restore the
distribution's Makefile.PL, which already contains the correct
'ABSTRACT => ...' entry.
|
|
|
|
|
|
|
|
|
|
|
| |
On a fresh source tree, "[*]make config" then "[*]make all" are executed.
The "make config" is redundant in this case, and launching make process
twice, plus make's I/O calls is inefficient. On a dirty source tree, this
would break since the makefile will regenerate. If "make all" fails the
first time (presumably because because the makefile was regened, other
failures just run/print twice), run the "make all" more time. Dirty trees
still run make twice, clean trees drop from running make twice to just
once.
|
|
|
|
| |
See [perl #123123] for details.
|
|
|
|
|
| |
goto-LABEL is extremely slow in P5, so use a scalar to cache the result of
file not existing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the perl core, we shouldn’t be getting messages like this when
trying to build perl:
Should I do external tests?
These tests will fail if there is no internet connection or if a firewall
blocks or modifies some traffic.
[y/N] [n]
libnet’s Makefile.PL now does that. To make it easier to maintain
such Makefiles.PL to work both on CPAN and in the core, set
PERL_MM_USE_DEFAULT temporarily in make_ext.pl when running the
Makefile.PL.
|
|
|
|
|
|
|
|
|
| |
The values of the %pm hash already have ../../ prepended, so we
were trying to remove, for example, ../../../../lib/Exporter.pm
instead of ../../lib/Exporter.pm.
This fixes [perl #122820] wherein it was reported that a distclean
make left some build products under lib/.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
On certain machines, the file system timestamps are in local time, so
assigning a timestamp based on a time() call is prone to jump timezones to
UTC.
Anthony Heading is now a Perl 5 author.
For: RT #122609
|
| |
|
|
|
|
|
| |
Skip chdir messages by passing make -s through
Also silence make_ext.pl to speed up the build process. use -v or --verbose
|
| |
|
|
|
|
|
|
| |
Likewise regular files without periods in the names get one appended.
Also, the file generated is pm_to_blib.ts, not pm_to_blib.
|
|
|
|
|
| |
These try to ensure that `make clean` followed by `make distclean` is the
same as running just `make distclean`.
|
| |
|
|
|
|
| |
This gets us Digest and Memoize.
|
|
|
|
| |
Processing this old-style layout gains us another 6 extensions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For simple extensions consisting only of Perl modules and Pod, EU::MM
generates a Makefile where the only target that does any work as part of
'all' is 'pm_to_blib', and *that* is just running perl to call
ExtUtils::Installed::pm_to_blib() with those files as arguments, and then
touching pm_to_blib.
Because the top level Makefile's dependency rule for "is an extension built"
is looking for that file pm_to_blib, and all builds (and cleans) of
extension directories are performed by running make_ext.pl, not a direct
recursive make, it means that make_ext.pl can actually directly emulate the
entire work done by EU::MM and make in this particular case. This means that
we save (at least) three subprocesses:
* miniperl to run Makefile.PL
* make
* miniperl to run ExtUtils::Installed::pm_to_blib()
This change obviously adds some logic duplication, but it roughly halves the
time taken for `make test_prep` to figure out that nothing needs doing.
And obviously also saves at least that much time on the actual build, which
may well be 60 seconds / number of cores.
|
| |
|
|
|
|
|
| |
Previously it would accept anything matching /clean$/. Now we check for the 4
names that we know the top level Makefile defines.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the old cross-compilation model, lib/ for the target would
end up in xlib/; What Cross.pm did back then was change @INC
around a bit to have miniperl point to xlib; Additionally, it
was used to identify cross-compilation builds, and in make_ext.pl
to detect whenever a Makefile was from the host's build.
There is no longer any need for the first, and the second is now
a simple check for $Config{usecrosscompile}, it's still
possible for the hosts' Makefiles to be there, particularly
if the host was not compiled elsewhere using -Dmksymlinks,
like in Windows when targetting WinCE.
This commit changes make_ext.pl for cross-compiling builds
to only delete Makefiles when their CC != $Config{cc}.
|
|
|
|
| |
When cross-compiling we want to run miniperl etc on the compile host, not the test target
|
|\ |
|
| | |
|
|/
|
|
|
|
|
|
| |
These modules all work with the default Makefile.PL written by make_ext.pl.
(There are more Makefile.PLs in dist/ that could be removed too, but the
general policy with dist/ is to leave such files in place to make it easier
to roll CPAN releases from the blead source, which is canonical.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On a WinCE build. On the 2nd nmake run, using Makefile.ce, eventually calls
the Extensions target which calls make_ext.pl. What happens is nmake for CE
for each module is called on the Desktop per module makefile from the
earlier Desktop build. Since the Desktop Perl already was built
sucessfully, all rules/deps are met in the Desktop per module makefile, and
nothing happens during the module building phase for a CE build. Previously
I used external file management tools to delete the per module Makefiles
before running Makefile.ce.
*make_ext.pl
- implement deleting and rebuilding the per module makefile on a Cross
build
- use constants for constant folding, there are opportunities for other
variables to be converted to constants in the future
- fix a bug from commit baff067e71 where unlink() on a file with an open
handle ($mfh) didn't delete the file from disk and a new per module
makefile would be not be built by make_ext.pl later since the per module
makefile was still on disk. This was observed on Win32. Also harden the
unlink code with a new _unlink sub that is fatal if the file is still on
disk after unlink supposedly deleted it.
- var $header and the quotemeta is because of an issue in Perl #119793
*Makefile.ce
- bring the debugging symbol generation flags and optimization flags
to be closer to a Dekstop VC Perl build
- ICWD is obsolete as of commit f6b3c354c9 , remove it
- MINIMOD is obsolete as of commit 7b4d95f74b , remove it
- make a poisoned config.h so if there is a XS building mixup between
a desktop and CE perl, the poisoned config.h for CE will stop the build
gracefully
- $(MINIPERL) has never been defined in Makefile.ce from day 1 (10 years)
replace with $(HPERL) everywhere, this was causing things to not run
silently since $(MINIPERL) was empty string. Use HPERL instead of
MINIPERL to allow flexibility to use the full perl binary if necessery
one day
- better cleaning on root makefile clean target
*win32/win32.h
*win32/win32iop.h
- silence alot of redefinition warnings which gave pages of warnings on
each WinCE compliand
*mg.c
- win32_get_errno is only on WIN32 build not WINCE
a "nmake -f Makefile.ce all" will now build the CE interp and all modules
in 1 shot with no user intervention
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
configpm
- when debugging configpm, Config.pm is already loaded, so the alternate
Config.pm for CE isn't loaded, warn about the problem and delete the
native Config.pm to allow the cross Config.pm to be loaded
win32/Makefile.cd
- better build product cleanup, copy from the win32 makefile
- disable a bunch of module that dont/dont yet build on CE
- debugging configpm required a shortcut to make it easier to run in
isolation
- fix the defines that wind up in the cross Config.pm
- add -GS- to disable the MS Security Cookie feature on MSVC for ARM >=14
compilers, this stops a .lib linking error, security cookie overhead
isnt needed for a very space limited device
sdsdkenv.bat is the file I use to set env vars to compile for WM since
starting in SmartDevices SDK, there is no equivelent of vcvarsall.bat
for makefile building, there was a vcvarsall.bat equivelent in EVC4 tho
MSVC for non Intel CPUs sometimes isn't named cl.exe, fix config_sh.PL to
deal with it
how to compile CE Perl, some steps involving celib and MS SDKs not included
and 2 patches to CPAN modules, Socket and MakeMaker, are not in this commit
but they are required to build CE Perl
-in a Win32 x86/x64 command prompt do a "nmake all" to make a Desktop Perl
-then in a WinCE build env command prompt do a "nmake -f makefile.ce all"
-/xlib will have all your XS DLLs and PM files, /win32/$(MACHINE) will
have perl519.dll and perl.exe
Tony Cook: update MANIFEST
|
|
|
|
|
| |
Add David Steinbrunner to AUTHORS.
Update pod issues database.
|
|
|
|
|
|
|
|
|
| |
This eliminates this annoyance:
$ ./perl -Ilib -MStorable -e0
Storable object version 2.37 does not match bootstrap parameter 2.38 at lib/XSLoader.pm line 95.
Compilation failed in require.
BEGIN failed--compilation aborted.
|
| |
|
|
|
|
|
|
|
| |
The expedient fudge added by commit 23525070d6c0e51f was actually after the
closing } for the if block that auto-generated a Makefile.PL. Hence it was
*always* changing the timestamp on every Makefile.PL just before running it,
even the ones checked out from the repository. That seems a bit wrong.
|
|
|
|
|
|
| |
Remove from make_ext.pl code that predates the introduction of
buildcustomize.pl, as that now sets up @INC correctly before make_ext.pl even
runs. During the build process make_ext.pl is only run by miniperl.
|
|
|
|
|
| |
As Cwd is now required instead of used and hence doesn't export, qualify
the calls to getcwd() with the package name.
|
|
|
|
|
| |
This will allow Pod::Functions to use Pod::Simple as part of its build
process.
|
|
|
|
|
|
|
| |
In certain circumstances ( on virtual machines ) the generated Makefile.PL can
produce a Makefile that is older than the Makefile.PL
Altering the atime and mtime backwards by 4 seconds seems to resolve the issue.
|
|
|
|
|
|
| |
Even though it's presumably doing case-blind lookups of target
names, MMS currently (V3.9-00) falls down hard when passed a
target name in lower case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|