On Thu, 3 Feb 2005, Craig A. Berry wrote:

> At 11:29 AM -0600 2/3/05, John E. Malmberg wrote:
> >On Wed, 2 Feb 2005, Craig A. Berry wrote:
> >
> >> At 2:41 PM -0600 2/2/05, John E. Malmberg wrote:
>
> >With OpenVMS 8.2 and when using the standard compliant stat structure,
> >the code handling the NULL device is producing the wrong answer.
>
> Go ahead and conditionalize it out when __CRTL_VER is older than the
> earliest version you can easily test with or find documented in CRTL
> ECOs: 7.2, 7.3, or whatever.  If we can move the version number
> back at some point, so much the better, but not a priority since the
> workaround does work on all pre-8.2 versions as far as I know.
>
> >In looking at what it would take to use the standard stat structure in
> >Perl, the only stumbling block I am seeing is the routine Perl_cando().
> >
> >With the standard compliant stat, there is no pointer to the device name,
> >instead a unique 64 bit number for the st_dev member is returned, and
> >I am currently ignorant of anyway to use that to determine the real device
> >name as Perl_cando() needs.
> >
> >Until that is resolved, building Perl with _USE_STD_STAT will not work
> >right.
>
> Ah, good, we can also conditionalize out the encode_dev() hack, which
> has served us well for years but shouldn't be necessary with the new
> stat structure if I understand what you are saying.  The reason that
> Perl_cando() uses the device name from the stat structure is that
> lib$fid_to_name returns a device name that may not be up to snuff.
> For example, it will return DISK$USER as the device name if the
> volume label is USER even if DISK$USER has been overriden by an outer
> mode logical.  I'm not sure if that helps, and I'm not sure what to
> suggest about st_devnam.

A partial answer is that a translation of the innermode logical name that
was set up by the mount command can be used to get the real device name.
I will have to look if the existing routines in vms.c can be used to get this.

> >And with the _LARGEFILE option, mystat might as well use __ino64_t for
> >the ino_type and not use the rvn and fill members.
> >
> Hmm.  I'll try to look at that sometime.  Is that only when
> _USE_STD_STAT is in effect, or regardless?

Regardless.  Look at the code in stat.h.

> >
> >Also, the dbgminiperl.exe is not being LINKED/DEBUG, should it be?
> >Now I have to use LINK/DEBUG before running the build.
>
> What do you see when you do
>
> $ search config.sh vmsdebug
> config_args='-"Dusedevel" -"Dusevmsdebug" -"des"'
> usevmsdebug='define'

That was a while back and I did not save config.sh file.  The code got
compiled /DEBUG, just nothing was linked in debug.

I also discovered that CONFIGURE.COM does not protect itself from
LINK :== link/debug

I am chasing down my next problem now.

@make_ext "Sys$Disk:[]miniperl.exe" "MMS"

        Making attrs (dynamic)
Descrip.MMS out-of-date with respect to MAKEFILE.PL, [--.LIB]CONFIG.PM,
[--]CONFIG.H
Cleaning current config before rebuilding Descrip.MMS ...
Rename/NoConfirm Descrip.MMS Descrip.MMS_old
MMS /Descrip=Descrip.MMS_old clean
MCR [--]miniperl.exe "-I[--.lib]" "-I[--.lib]" "-MExtUtils::Command" -e rm_f *.M
ap *.Dmp *.Lis *.cpp *.exe *.obj *.olb *.Opt attrs.bs attrs.bso .MM_Tmp
MCR [--]miniperl.exe "-I[--.lib]" "-I[--.lib]" "-MExtUtils::Command" -e rm_rf
[--.lib.auto.attrs]extralibs.all attrs.c pm_to_blib.ts Makeaperl.MMS perlmain.c
MCR [--]miniperl.exe "-I[--.lib]" "-I[--.lib]" "-MExtUtils::Command" -e rm_rf
[--.lib.auto.attrs]extralibs.ld blib pm_to_blib
MCR [--]miniperl.exe "-I[--.lib]" "-I[--.lib]" Makefile.PL "INST_LIB=[--.lib]"
"
INST_ARCHLIB=[--.lib]" "PERL_CORE=1"
Writing Descrip.MMS for attrs
Descrip.MMS has been rebuilt.
Please run MMS to build the extension.
Skip [--.lib]attrs.pm (unchanged)
MCR [--]miniperl.exe "-I[--.lib]" "-I[--.lib]" -e "use ExtUtils::Mksymlists;"
-e "Mksymlists('NAME' => 'attrs', 'DL_FUNCS' => {  }, 'DL_VARS' => [],
 'FUNCLIST' => [])"
MCR [--]miniperl.exe -e "print ""[--.lib.auto.attrs]attrs.olb/Include=attrs\n[--
.lib.auto.attrs]attrs.olb/Library\n"";" >>ATTRS.OPT
MCR [--]miniperl.exe -e "print qq{[--]DBGPerlShr.exe/Share\n}" >>ATTRS.OPT

MCR [--]miniperl.exe -e "print qq{[--]DBGPerlShr.exe/Share\n}" >>ATTRS.OPT
Copy/NoConfirm ATTRS.OPT [--.LIB.AUTO.ATTRS]ATTRS.OPT
%MMS-F-GWKNOACTS, Actions to update ATTRS.C are unknown.

%MMS-F-ABORT, For target DYNEXT, CLI returned abort status: %X10EE805C.


Inspecting the resuling DESCRIPT.MMS shows the dependency and the translation
of the MMS macro that are failing:

XSUBPPDEPS = [--.lib.ExtUtils]typemap

attrs.c : $(XSUBPPDEPS)

And it is right, there is no rule for how to build attrs.c if it is missing
or that rule fails.

So not being able to figure out what the problem is, I backed out all the
changes that I have made to 5.8.6 and ran the configure with "-de" option.

As I am typing it, it just stopped at:

$   @BUILD_ROOT:[000000]configure.com "-de"

$mms

MCR Sys$Disk:[]miniperl.exe "-I[.lib]" "-I[.ext.re]" [.lib.extutils]xsubpp -nop
Perl v0.0.0 required--this is only v5.8.6, stopped at [.lib.extutils]xsubpp lin
%SYSTEM-F-ABORT, abort
%MMS-F-ABORT, For target [.EXT.DYNALOADER]DL_VMS.C, CLI returned abort status:
-SYSTEM-F-ABORT, abort


-John
[EMAIL PROTECTED]
Personal Opinion Only


Reply via email to