| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
and update Changes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the system perl on darwin
The system compiler on sufficienctly recent darwin doesn't appear to
find header files installed with the system perl if the CORE include
directory is specified with -I, even if we've checked that directory
contains EXTERN.h.
EU::MM adopted a change from Apple's patches, and this change adapts
that change for ExtUtils::CBuilder.
This problem prevented ExtUtils::ParseXS tests from completing
successfully, failing to find EXTERN.h.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When not set to be quiet, the system commands being run are printed out
before running them. This can assist with diagnosing issues. It is
implied that this is a command that could be run by a user.
Since the command is internally run with system using list form, it does not
involve the shell, and does not need any extra quoting. The printed out
command however, would be run by a user through a shell. Just joining
the arguments with spaces will not quote them correctly for use through
a shell.
Add a new method for quoting a string for the shell. And use this method
when printing out the command line that we are running.
|
|
|
|
|
|
|
|
|
|
| |
Switches from generating an image-base address using the basename of the
output file to using GCC's built-in `--enable-auto-image-base` linker
option.
This aligns the linking behaviour for Win32/gcc with that of
ExtUtils-MakeMaker which removed image-base generation in commit
<https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/343d21a453c4d03cf7304dbd4c4dd8180df574ad>.
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
0.280235 - 2020-11-01
Fix:
- Fix compilation on darwin with XCode 12 (-Werror=implicit-function-declaration)
Thanks to DrHyde for the patch.
|
| |
|
|
|
|
| |
Committer: additional email address for contributor
|
|
|
|
|
|
| |
For: RT 133966
Committer: Bump $VERSION in dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
|
|
|
|
|
|
|
|
|
| |
0.280230 - 2017-11-22
Fixed:
- Updated Changes
- Used OurPkgVersion instead of PkgVersion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using vars pragma is discouraged and has been superseded
by 'our' declarations available in Perl v5.6.0 or later.
Additionally using 'vars' pragma increase the memory consumption of a
program by about 700 kB for no good reason.
This commit is about replacing the usage of 'vars' pragma
by 'our' in blead where it makes sense. ( leaving 'cpan' directory
outside of the scope )
-- using vars
perl -e 'use vars qw(@ISA $AUTOLOAD $VERSION); print qx{grep RSS /proc/$$/status} '
VmRSS: 2588 kB
-- using our instead
perl -e 'our (@ISA, $AUTOLOAD, $VERSION); print qx{grep RSS /proc/$$/status} '
VmRSS: 1864 kB
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: James E Keenan <jkeenan@cpan.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
File::Basename::fileparse(), when called with two arguments, is
documented to return a list of three elements:
The non-suffix part of the file's basename.
The file's dirname, plus trailing path separator.
The suffix part of the file's basename.
Thus,
my ($name,$path,$suffix) = fileparse('/tmp/perl/p5p/foo.patch', qr/\.[^.]*/);
returns:
$name: foo
$path: /tmp/perl/p5p/
$suffix: .patch
If we want to take those values and compose a path with
File::Spec->catfile(), we have to bear in mind that File::Spec generally
expects to have directories precede filenames in its arguments. Thus,
the correct way to use the values returned by fileparse() would be:
my $cf = File::Spec->catfile($path, $name . $suffix);
In ExtUtils::CBuilder::Base::new(), however, the return values from
fileparse() were named in a way that suggested that the first value
would be the dirname and the second would be the non-suffix part of the
basename:
my ($ccpath, $ccbase, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);
$ccpath -- which here is really a basename -- was then used as the first
argument to catfile():
File::Spec->catfile( $ccpath, $cxx, $ccsfx )
In addition, in the above $ccsfx should not have been a separate
argument. Rather, it should have been concatenated without a path
separator to the second argument.
For: RT # 131749. See also:
https://github.com/Perl-Toolchain-Gang/ExtUtils-CBuilder/pull/6 (thanks
to stphnlyd of Perl Toolchain Gang).
Signed-off-by: James E Keenan <jkeenan@cpan.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-.UPDATEALL is dmake only, doesn't exist in gmake, create more targets
instead
GNUmakefile:1319: warning: overriding recipe for target '.UPDATEALL'
GNUmakefile:1024: warning: ignoring old recipe for target '.UPDATEALL'
-fix ok/nok targets on dmake and gmake
-dont delete old mini config.h, the copy overwrites it, for dmake and gmake
1 less process to run this way
-modify whitespace and comments between 2 makesfiles so there are less
delta lines if the 2 are diffed, this aids in diagnostics
-remove perlmainst.c/perlmain.c build products, just use runperl.c directly
1 less disk file to create and later clean and git status and 2 less nodes
in the make graph to traverse, also better for C debugger, since
"runperl.c" is around after a git clean of the source tree, and runperl.c
is in every single callstack in perl.
-remove copying mini config.h to CORE dir, pointless since (mini) config.h
isn't an input to config_h.PL, remove the exit 1 from commit 137443ea0a
from 5.003, rewriting config.h is not a reason to stop the build with a
fatal error, vivify CORE dir or else sub copy() fails
-deshell UNIDATAFILES/mktables, 1 less cmd.exe process and 1 less .bat file
written to disk for gmake (dmake always uses cmd.exe ATM)
-combining mini config.h AKA $(MINIDIR)\.exists shell append lines is for
another commit
-perlglob.exe is not installed, it doesn't need to be rebased, it is only
needed for module building, removing the dep makes the dep graph simpler
-rename PERLIMPLIB so the lib is built in its final location in CORE dir
this removes an extra xcopy process run. Since perl dll's .a/.lib
is not longer in the root of the source tree, change the 2 tests and
ExtUtils::CBuilder::Platform::Windows to look at the uninstalled final
location dir, not the root dir
-fix typo 0.282224->0.280224 in dist/ExtUtils-CBuilder/Changes
-for GCC PERLEXPLIB must be used, passing "perldll.def" on cmd line to g++
means all data globals with EXTCONST are exported (which have dllexport
on their declaration) instead of just what is in perldll.def and
globvar.sym, INTERN/EXTERN.h could be revised to fix that, but I am not
doing that at this time. Also drop linking GCC perl523.dll from 3
processes to just 1 process like with VC builds. Removing 2nd run of
dlltool fixes a race condition where libperl523.a was generated twice.
This caused a race condition failure where linking a XS DLL failed
because the GCC linker of the XS DLL saw a partially written
libperl523.a.
-Relocation was tested with $(LINK32) -v -mdll -o $@
-Wl,--disable-auto-image-base -Wl,--image-base -Wl,0x400000
$(BLINK_FLAGS) $(PERLDLL_OBJ) $(shell @type Extensions_static)
$(LIBFILES) $(PERLEXPLIB)
to g++ linker to force an address conflict and verified with VMMap
(unrelocated perl523.dll has ~40KB private memory, relocated has ~240KB
private memory on Win 7 32b), historically there are problems with
dllexport and dlltool and relocation problems with mingw
-$(COREDIR)\ppport.h in gmake is separate lines since gmake normally
launches processes directly, not through the shell, so it is more
efficent to keep it as multiple lines for gmake, while dmake likes to
burn CPU and IO between each line, and runs each line through cmd.exe
-disable parallel building in make_ext.pl by not passing MAKEFLAGS env
var to any subprocess, EUMM is not ready for parallelness inside a module
building on Win32
-have harness proc and child .t procs share same disk perl.exe and
perl523.dll files, this way they share memory pages, makefile.mk does
the same thing
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
0.280223 - 2015-06-02
Fixed:
- Impose deterministic order on cpp-definition options.
Heretofore, ExtUtils::CBuilder put cpp-definition options
into the cc command line in non-deterministic order. This
produced noise when diffing build logs.
Make this order deterministic. (RT #124106)
Added:
- Add tests for ascii-betical order in t/04-base.t.
|
|
|
|
|
|
|
|
|
|
|
| |
Heretofore, ExtUtils::CBuilder put cpp-definition options into the cc command line in
non-deterministic order. This produced noise when diffing build logs. Make
this order deterministic.
Add tests for ascii-betical order in t/04-base.t. Increment $VERSION in three
packages. Remove commented-out line.
For: RT #124106
|
| |
|
|
|
|
|
|
| |
VAX C was a pre-ANSI compiler that was superceded about fifteen
years ago, so there is no reason to include special cases for it
now.
|
|
|
|
|
|
| |
Update $VERSION in each platform-specific module.
For: RT #122860
|
|
|
|
|
|
|
|
| |
Switch to using VERSION_FROM in Makefile.PL.
For: RT #122675
Add update to ExtUtils::CBuilder to perldelta.
|
|
|
|
|
|
|
| |
This is done because quite a bit of CPAN assumes that
if libperl.so links to something, then you'll get those
functions for free, but that is not the case on
Android.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Several modules on CPAN expect being able to pass the library
name returned by ->link to DynaLoader::dl_load_file and have it Just Work.
However, because ->link returns relative paths, those modules ran afoul
of Android's linker, which will only look in a handful of hardcoded
system directories for relative libraries, plus whatever LD_LIBRARY_PATH
pointed to at the start of execution.
This commit makes ->link on Android always return an absolute path,
which will be found by the linker.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Bump $VERSION.
|
|
|
|
|
|
|
|
|
| |
use IO::File was added with the upgrade to 0.23 (commit c3fb68a339256eb3 in
April 2008), but the use of IO::File in the code was eliminated by the
upgrade to 0.2800 (commit 06e8058f27e4269b in Dec 2010), which replaced
the code in question with use of File::Temp. The latter refactoring also
added the use Data::Dumper; line, but did not add any code which uses
Data::Dumper.
|
| |
|
|
|
|
| |
on other OSes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Near the start of link(), $output gets set to a blib\arch\auto path.
A little later that gets copied into $spec{output}, but $spec{manifest}
is left unset so it gets set later to a $spec{builddir} path, which is
not what $spec{output} was set to earlier.
The manifest file is always created alongside the DLL, so the correct
fix is simply to append '.manifest' to the DLL path to find the manifest.
(EU-MM does that too.)
Patch taken from [cpan #35943] which reported the same problem. The other
concern raised there, about the VC version being checked to deduce the
existence of the manifest file rather than testing that directly, has
long since been incorporated already and also explains why this problem
has not been seen recently: the faulty attempt to embed the manifest has
not been attempted ever since the existence test was added because it was
also failing and hence no 'mt' command was being run. [cpan #35943] is
thus resolved by this change too.
Bump $VERSION in all ExtUtils::CBuilder files (to 0.280208) to keep them
all in sync as before.
|
|
|
|
|
|
| |
Correct the test for the existence of the manifest file.
Bump $VERSION in all ExtUtils::CBuilder files (to 0.280207) to keep them
all in sync, as is currently the case.
|
|
|
|
|
| |
Adds a documentation note about support. Adds a README.patching
file with instructions for bumping versions, Changes, etc.
|
|
|
|
|
|
| |
[dagolden bumped $VERSION and added ambs to the AUTHORS file]
Signed-off-by: David Golden <dagolden@cpan.org>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Since ExtUtils::CBuilder 0.27_04 (bleadperl commit 06e8058f27e4),
CFLAGS and LDFLAGS from the environment have overridden the Config.pm
ccflags and ldflags settings. This can cause binary incompatibilities
between the core Perl and extensions built with EU::CBuilder.
Append to the Config.pm values rather than overriding them.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On VMS only, the /DEFINE and /INCLUDE qualifiers are parsed off the
local copy of $Config{ccflags} and consumed in the process. This is
necessary because you're only allowed one of each of these clauses
in the compile command, so to add whatever has been requested for a
specific compile, we have to combine them with whatever Perl was
built with.
But since they are consumed, multiple compiles on the same EU::CB
object were only using the correct flags for the first one. Even
calling the have_compiler() check before compile() would make the
latter miss the defines and includes that were used to build Perl.
The solution is add a platform override that resets the local copy
of $Config{ccflags} from its original in %Config every time a
compiler operation is initiated.
Fixes smoke failures in ExtUtils::ParseXS.
|
| |
|
| |
|
|
ExtUtils::CBuilder now has blead as its upstream repository. The
distribution has been moved to the dist/ directory consistent with
this change.
|