| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The perl_setup.com command procedure initializes the root logical
name, the shareable image logical name pointing to the main Perl
dynamic library, and either command symbols or command table
entries that reference those logical names. It's always by
default hard-coded the prefix chosen at configuration time as the
basis for where Perl should be located.
The original rationale for that was that it gets run right before
installperl and sets things up correctly for installation. But
that optimizes for a single use case that is easily handled by
specifying the correct install location as a parameter and
pessimizes for every other use case, notably relocating an
installed Perl directory tree.
So make it infer the correct root from its own location and
specify the install location only at installation time. Among
other benefits, this allows the install location to be chosen
at installation time by overriding the default prefix like so:
MMK/MACRO=(PREFIX="DSA0:[homedir.MyPerl2.]") install
|
| |
|
| |
|
|
|
|
|
| |
Though the list of C files does not appear to actually be used in
the build.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adding a first argument as a reference to the filename "perlmain.c" makes
ExtUtils::Miniperl::writemain() open and close the file for us. This is
safer than having the Makefile create the file using output redirection as
that can create an empty file if compilation aborts. This change means that
the file is only moved into place with the correct name if it has been
written completely without error. If an error happens the file is not
created, the make aborts, and any subsequent make will re-attempt to create
the file, instead of continuing with an incorrect file, hiding the real
cause of the problems.
|
|
|
|
|
|
|
|
|
|
|
| |
That commit moved VMS::Filespec from vms/ext to ext/, but it also
deleted the vmspipe.com dependency from the LIBPREREQ target in
vms/descrip_mms.template. (vmspipe.com has nothing to do with
VMS::Filespec.) Which meant vmspipe.com was not availabe for
building extensions or running tests, and -- worse yet -- would
not get installed. So every pipe creation would involve creating
a temporary version of this file using fallback code in vms/vms.c,
thus making the very pokey pipe implementation even more expensive.
|
|
|
|
|
|
|
|
|
| |
It does increase the lines of code slightly but it replaces a bunch of
platform specific special case code in the Makefiles for *nix, Win32 and VMS
with one unified implementation. And in Perl, rather than 3+ different
languages.
This feels like the right maintainability trade-off.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rules to remove C and object files from vms/ext were made redundant when
commit 26dd53a231877708 in Sep 2009 moved the XS extensions from there to
ext/
The wildcard rule to remove t/lib/vms*.t, which has been in
vms/descrip_mms.template since the file was added by commit 97abc6adffcd3efc
in June 1998 was effectively made redundant when it was duplicated by 4
specific rules for the 4 files it matched added by commit 493ba88a837f5a6b
in June 2001.
The rule to delete t/lib/vmsish.t was made redundant when vms/ext/vmsish.*
were moved to lib/ by commit 9f84c00564fd021b in Nov 2001.
|
|
|
|
|
|
|
| |
This simplifies the VMS Makefile. It would have simplified the VMS Makefile
further if it had had the correct rules to delete [.lib.VMS]Filespec.pm
which are now no longer needed. (The generated ext/VMS-Filespec/DESCRIP.MMS
will now take care of this.)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We need to do whatever the configuration says we are doing via
$Config{dbgprefix} and/or $Config{usevmsdebug} for extension
building to work, so it makes sense for the top-level build to
also base what it is doing on the configuration choice rather
than on the special invocation of MMK with /MACRO=__DEBUG__=1.
So this patch makes the top-level build do what we've configured
to do and eliminates the instruction to use the macro.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
write_buildcustomize.pl now opens lib/buildcustomize.pl itself, instead of
writing to STDOUT and relying on the Makefile to set up redirection. This
means that an empty lib/buildcustomize.pl is not created if
write_buildcustomize.pl fails to compile (for whatever reason), and permits
write_buildcustomize.pl to delete (or attempt to delete) the output file if
it detects an error.
Hard code the output file name (lib/buildcustomize.pl), as it's the same on
all platforms, and @ARGV is already used to optionally pass a directory for
write_buildcustomize.pl to change to before running.
Experimentation suggests that various make utilities don't delete a file
created by redirection even if an error occurs. Hence this should be more
robust.
Add -f to the miniperl commandline when running write_buildcustomize.pl to
avoid reading in any existing lib/buildcustomize.pl. write_buildcustomize.pl
doesn't need the setup provided by lib/buildcustomize.pl, and running it
might cause errors which prevents writing out a correct version, making an
incomplete build harder to recover from.
|
|
|
|
|
|
|
|
|
|
|
| |
Now that lib/buildcustomize.pl is built at the same time as building
miniperl, it will always have added paths to Cwd into @INC. Hence there's no
longer a need for Makefile macros to do this.
On Win32 we can't eliminate $(ICWD) completely as it's also being used for some
invocations of the (real) perl binary. Only miniperl loads buildcustomize.pl
to set up @INC to include paths for the initial locations of modules such
as Cwd.
|
|
|
|
|
|
|
|
|
| |
Doing them together ensures that we always have lib/buildcustomize.pl
available. This simplifies things. The seemingly cranky ordering of having
miniperl notionally depend on lib/buildcustomize.pl, and the rule for
lib/buildcustomize.pl actually also building miniperl permits the rest of
the Makefile to depend on (the obvious) miniperl, not the obscure
lib/buildcustomize.pl
|
|
|
|
|
|
| |
Previous descrip_mms.template carried separate rules to build perlintern.pod
and perlapi.pod, each of which caused autodoc.pl to run. autdoc.pl builds
both files when it runs, so this was duplicate work.
|
|
|
|
|
|
|
|
|
|
| |
fakethr.h and FAKE_THREADS were for a "green" threads implementation of
5005threads. 5005threads itself is long gone, and it's not clear that
-DFAKE_THREADS *ever* built correctly. Certainly it did not work for the
5.005 release, and it did not work at the time of the commits for the initial
checkin. The closest that it seems to have been to working is around commit
c6ee37c52f2ca9e5 (Dec 1997), where the headers no longer contained errors,
but perl.c failed to compile.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The way this file has been getting copied from vms/ext/filespec.t
during the build involves the expansion of the standard macro
MMS$TARGET, a process which caused the name of the copied file to
always end up in upper case.
Before we started preserving case, all filenames were downcased
by readdir(), so .t matched .t and everything was peachy. But
when we started preserving case in Perl on VMS we started silently
skipping this test because .T does not match the pattern we look
for in t/TEST.
So take advantage of the fact that MMS and MMK don't upcase
user-written macros when expanded and use one of those as the
copy target, thus preserving the case of the copied file, which
then matches what t/TEST is looking for.
|
| |
|
|
|
|
|
|
| |
Both MMS and MMK upcase whenever there is a double macro expansion,
but by going through only one expansion, we can preserve the case
of the target filename on copy under extended parse.
|
|
|
|
|
|
|
| |
The MINIPERL macro expands to 40 characters longer than the
MINIPERLQ macro in order to include Cwd, but Cwd isn't needed
when doing a simple one-liner, and the extra length can make us
exceed the command buffer on older VMS systems.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Because we now have:
#include "../unicode_constants.h"
which is a Unix-style path and cannot be combined with [.x2p] and
get a valid result.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On most platforms, installperl copies *.h from the top-level source
directory to an appropriate installed location. On VMS, we stage
everything to an archcore directory first and installperl copies
them from there. Whether this is a good way to be doing things in
this day and age is questionable, but the more immediate problem is
that we have been (badly) maintaining our own list of what should
get staged in the archcore directory. By my count, 5.16.0 shipped
with 18 of 69 include files missing.[1] Ouch.
So this commit abolishes the separately-maintained, explicitly-named
list of include files and just copies all of them to the staging
directory, where installperl will pick them up.
[1] For folks counting at home, we have vmsish.h, which no one else
has, so that's why there are 69, not 68.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This ensures that it gets re-run, and lib/Pod/Functions.pm rebuilt, if
perlfunc.pod is changed.
|
| |
|
|
|
|
|
|
|
|
| |
installperl now requires Porting/pod_lib.pl, which uses Digest::MD5,
which means we need something that can do dynamic loading (or has
extensions statically linked in). But it doesn't really matter
because presumably we wouldn't be installing Perl if we hadn't
built it, so use the perl we've built rather than miniperl.
|