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

Reply via email to