Michael Schwern wrote: !> Had there been a translation concealed terminal logical name !> that last one would not have worked either. Here is !> an illustration: !> !> $ define/trans=(conc,term) perl_root DKA200:[perl-5_6_1_root.] ! !Which almost every installation of Perl on VMS does. *sigh*
It so happens that the perl_setup.com that is written out by configure.com only gives perl_root the translation concealed attribute and omits the terminal attribute. Of course we encourage folks to edit perl_setup.com to grant them binary re-locatability among other things. !Scratch that idea. :( ! !Isn't there some sort of principle about magic should go all the way down !and not just N levels deep? Oddly the limitation on how deep the roots go I think has to do with an old (pre VMS 7.1) file system limitation involving only going 8 directories deep. The rooted logical would have allowed you to go further (and indeed can be used to go to 16 levels on older ODS-2 implementations) but grounding the rooted logical in the physical device name prevents you from daisy chaining the logical names and thereby going 8*N levels deep. These days it might be considered an abhorrent anachronism with an obscure heritage. You had also mentioned (in another message in this thread): !Externally, it means this: "make install PREFIX=[foo.bar]" !(or your moral equivalent) will work on VMS. I think that you may be aware that configure.com does allow this: @ Configure "-des" "-Dprefix=DKA400:[PERL_ROOT.]" but that doing that is considered "tricky" you have to know enough to specify a string suited for use as a rooted logical name: physical device plus the final ".]" portion need to be given for that to work as intended (otherwise configure.com tries to figure something clever out on its own based on the device where the source is being built). You also wrote: I want to simplify MakeMaker by just doing this: PREFIX = VOL:[foo.bar.] INSTALLPRIVLIB = $(PREFIX)[lib.perl] Perhaps that could be made to work if you had some way to ensure that the user specified PREFIX was suited for use as a rooted logical (that is not easy) then: ..FIRST @ define/trans=conc PREFIX DEV:[FOO.BAR.] INSTALLPRIVLIB = PREFIX:[lib.perl] Or if you still wanted the INSTALLPRIVLIB as before then use something a bit like these completely untested speculative lines: ..FIRST @ define/trans=conc PREFIX DEV:[FOO.BAR.] PREFIX = PREFIX: INSTALLPRIVLIB = $(PREFIX)[lib.perl] Or something like that (perhaps it'd be easer to use splitdir() and catdir()?). Peter Prymmer