On Dec 31, 2012, at 12:32 PM, Thomas Pfau <[email protected]> wrote:
> I finally got 5.16.2 to complete the build process on Integrity today.
Thanks to your reports, 3 or 4 bugs that needed fixing have been fixed and the
fixes checked into the repository so they'll be part of 5.18. As far as I can
remember, all of the problems you encountered had to do with choosing
non-default configuration options that haven't been fully maintained.
> Apparently DECC$READDIR_DROPDOTNOTYPE enabled causes problems. We have that
> set at work for something else. I had to define it locally to "disabled" and
> the build completed.
This doesn't surprise me at all. There is latent support that I suspect
hasn't been tested much. Also note that whether you can build with it or not
doesn't say much either way about whether you can run with it. Anyone
interested can poke at what's there by doing:
$ search [.vms]vms.c DROPDOTNOTYPE
in the source tree.
> Also, I haven't had any luck building on an ODS-5 volume on either Alpha or
> Integrity. Tests are running now.
Building on ODS-5 definitely works for a default build, but I think you were
building with case sensitive symbols. This is more difficult than it should be
because the case of some symbol names is derived from the case of some object
file names via the object library into which they're inserted. The names of
the object files in turn are determined by the names of the source files, which
are determined in some cases by the compiler and in some cases by MMS/MMK,
which tend to upcase things willy nilly in the process of macro expansion.
MakeMaker currently upcases symbol names in an attempt to match that behavior,
which doesn't work (on an ODS-5 disk) for symbol names that don't go through
macro expansion.
I only got far enough before the holidays to see what a mess it is. The patch
below reverses MakeMaker's current upcasing behavior, but then we don't match
the symbols that have been upcased by macro expansion. I don't know of any way
to make the correct case survive macro expansion and work on both ODS-2 and
ODS-5 disks. I think it would be reasonable to require ODS-5 for case
preserved symbol builds, but I don't know of a way to make even that work.
--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm;-0 2012-12-17 04:22:23
-0600
+++ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 2012-12-23 15:18:05
-0600
@@ -970,18 +970,14 @@ $(BASEEXT).opt : Makefile.PL
push @m, ' $(PERL) -e "print ""$(INST_STATIC)/Include=';
if ($self->{OBJECT} =~ /\bBASEEXT\b/ or
$self->{OBJECT} =~ /\b$self->{BASEEXT}\b/i) {
- push @m, ($Config{d_vms_case_sensitive_symbols}
- ? uc($self->{BASEEXT}) :'$(BASEEXT)');
+ push @m, '$(BASEEXT)';
}
else { # We don't have a "main" object file, so pull 'em all in
- # Upcase module names if linker is being case-sensitive
- my($upcase) = $Config{d_vms_case_sensitive_symbols};
my(@omods) = split ' ', $self->eliminate_macros($self->{OBJECT});
for (@omods) {
s/\.[^.]*$//; # Trim off file type
s[\$\(\w+_EXT\)][]; # even as a macro
s/.*[:>\/\]]//; # Trim off dir spec
- $_ = uc if $upcase;
};
my(@lines);
________________________________________
Craig A. Berry
mailto:[email protected]
"... getting out of a sonnet is much more
difficult than getting in."
Brad Leithauser