On Dec 31, 2012, at 12:32 PM, Thomas Pfau <tfp...@gmail.com> 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:craigbe...@mac.com "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser