Stephen Hoffman wrote:

>   In addition to the (expected but) bizzare behaviour seen here when
>   the DISK$ logical names are redefined, PCSI will also get very confused 
>   by this particular redefinition -- if there are any kits installed on 
>   this target disk...
> 
>   File Identifiers (FIDs) are volume-specific.  If you want to translate 
>   from a FID to a full file specification, you need the FID and the DVI.
> 
>   The documentation of lib$fid_to_name is confusing in at least one way,
>   but any site that is redefining reserved logical names (in undocumented
>   and unsupported fashion) is perilous practice at best...
> 
>   The creation of logical names containing "dollar" signs is reserved
>   to registered facilities.  (BTW, I am registering the "PERL" prefix,
>   have reworked configure.com and am creating a PCSI Perl kit, but that 
>   is another discussion entirely.)
> 
>   I was asked where Compaq OpenVMS documents this -- while the dollar 
>   prefix requirements are documented, it is impossible to document all 
>   of the different potential failure modes.  We do document what is 
>   supported, and I would be very surprised to find the redefinition of 
>   the DISK$mumble logical name documented.
> 
>   As Dan succinctly commented: "don't do that."

Correction: the DISK$volnam logical was not redefined. "volnam" was used
to form a rooted logical name that did not point to DISK$volnam:[000000].
In fact, no user defined logical names employ dollar signs in them on the
machine in question with the single exception of DISK$ORACLE, which is 
apparently required as part of an Oracle installation.

Oddly, perl 5.005_02, 5.005_03, and 5.005_62 (modulo vms kit build patching) 
did not have any trouble building from the root of the device in question.  
That is, untarring kits into DISK$volnam:[PERL5_005_02], 
DISK$volnam:[PERL5_005_02], etc. did not have any trouble invoking the 
writemain.pl script during the build.

The mount command for the volume in question was:

$ MOUNT/NOASSIST/SYSTEM DKB100 USER USER

The rooted logical name was pointing into a sub directory on that device:

$   DEFINE /SYSTEM /TRANSLATION_ATTRIBUTES=(CONCEAL,TERMINAL) USER DKB100:[u.]

This presents a problem only to perl5.6.0 RC2, not to 5.005_02 or 5.005_03.

Here for example is the portion of the build of perl 5.005_03 that would
kill 5.6.0 RC2:

MCR Sys$Disk:[]miniperl.exe "-I[.lib]" [.VMS]Writemain.pl "DynaLoader Socket"
Adding DynaLoader . . .
Adding Socket . . .
CC/DECC 
/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj/NoList/Define=PERL
_CORE PERLMAIN.C

that is, the 5.005_03 miniperl had no trouble finding the [.vms]writemain.pl
script despite the fact that the build is taking place in:

$ show default
  DKB100:[PERL5_005_03]

We are in a position that allows us to change the parameters to the mount 
command, however we apparently only need to do so because the compilation 
of perl has changed, not the DEC C version, not the OS, not lib$fid_to_name() 
etc.  Unfortunately I don't have enough time right now to look into what 
has changed in [.VMS]VMS.C to have caused this.

Peter Prymmer

Reply via email to