What is the stable version of Perl for VMS.

2005-01-31 Thread John E. Malmberg
I notice that a lot of the tests here are on Perl 5.8.4, yet CPAN shows 
that the current version of Perl is 5.8.6.

I am looking at building a version that supports the upcoming symlink 
support in OpenVMS, and wanted to know which base level of Perl I should 
start with.

Also which baselevel has the changes that I submitted for handling UNIX 
file specifications based on the DECC$ feature logicals?

Thanks,
-John



Re: What is the stable version of Perl for VMS.

2005-01-31 Thread Craig A. Berry
At 7:07 AM -0500 1/31/05, John E. Malmberg wrote:
I notice that a lot of the tests here are on Perl 5.8.4, yet CPAN shows that 
the current version of Perl is 5.8.6.

5.8.6 is current on all platforms.  It has a couple of MakeMaker test
failures on VMS that are unrelated to MakeMaker itself.  Immediately
upgrading to the latest version of PathTools (which includes
File::Spec and Cwd) from CPAN would correct the root causes of those
failures.

I am looking at building a version that supports the upcoming symlink support 
in OpenVMS, and wanted to know which base level of Perl I should start with.

New development should be done against the 5.9.x development stream
known as bleadperl.  The best way to get a copy is via rsync:

$ rsync -avz --delete ftp.linux.activestate.com::perl-current perl

This can be done on Linux, Mac OS X, under Cygwin on Windows, among
other unixy environments, and the resulting directory tree zipped up
and moved to VMS.  Unless of course you've got your VMS port of rsync
working (which I would be eager to know about).

Also which baselevel has the changes that I submitted for handling UNIX file 
specifications based on the DECC$ feature logicals?

Some future version.  We are still hampered by the fact that certain
parts of the Perl core written in Perl need to be modified to
accommodate the things the CRTL can do.  If we don't develop and put
in these changes simultaneously with your changes, basic
functionality will break.  For example, if someone has
DECC$EFS_CASE_PRESERVE enabled and the C parts of Perl honor it but
we have not yet modified MakeMaker to handle it, Perl won't even be
able to build itself.

So I apologize for how long this has taken.  I've been short on
volunteer time that comes in chunks bigger than half an hour, but I
have not forgotten your changes.  I was just thinking over the
weekend that we need to move forward with this somehow, and we need
also to look into supporting or using other v8.2 CRTL enhancements,
such as stream-based pipes.  Thanks for exploring symlink support.

-- 

Craig A. Berry
mailto:[EMAIL PROTECTED]

... getting out of a sonnet is much more
 difficult than getting in.
 Brad Leithauser


Re: What is the stable version of Perl for VMS.

2005-01-31 Thread John E. Malmberg
On Mon, 31 Jan 2005, Craig A. Berry wrote:

 At 7:07 AM -0500 1/31/05, John E. Malmberg wrote:

 I am looking at building a version that supports the upcoming symlink
 support in OpenVMS, and wanted to know which base level of Perl I
 should start with.

 New development should be done against the 5.9.x development stream
 known as bleadperl.  The best way to get a copy is via rsync:

 $ rsync -avz --delete ftp.linux.activestate.com::perl-current perl

 This can be done on Linux, Mac OS X, under Cygwin on Windows, among
 other unixy environments, and the resulting directory tree zipped up
 and moved to VMS.  Unless of course you've got your VMS port of rsync
 working (which I would be eager to know about).

It is not quite there yet, but I have made significant progress over the
past year.  I have to convert a number of thread specific static and local
variables to be in a thread specific structure, and I think I am past the
50% mark.  Unfortunately until I get that step to 100%, I will not be able
to do more than verify a converted module compiles.

 Some future version.  We are still hampered by the fact that certain
 parts of the Perl core written in Perl need to be modified to
 accommodate the things the CRTL can do.  If we don't develop and put
 in these changes simultaneously with your changes, basic
 functionality will break.  For example, if someone has
 DECC$EFS_CASE_PRESERVE enabled and the C parts of Perl honor it but
 we have not yet modified MakeMaker to handle it, Perl won't even be
 able to build itself.

I Would expect that it should be a reasonable restriction in at least
the short term if not longer, that the CONFIGURE.COM and build scripts for
Perl protect them selves from DECC$ feature logicals that prevent them
from building.  After all, the DECC$ feature logicals will affect the
build now even with out the patches.

The patches are only needed to make the behavior of the filenames that
are not returned from the CRTL consistent with the feature logicals.

 So I apologize for how long this has taken.  I've been short on
 volunteer time that comes in chunks bigger than half an hour, but I
 have not forgotten your changes.  I was just thinking over the
 weekend that we need to move forward with this somehow, and we need
 also to look into supporting or using other v8.2 CRTL enhancements,
 such as stream-based pipes.  Thanks for exploring symlink support.

My assigned task now is to get a build of perl that when run under GNV
will act like it is running on UNIX, with symlink support.  It seems that
a number of open source projects now require this.

I think that most of the symlink related routines are already in the
CRTL now in 7.3-2 and possilbly earlier, except that they will return an
error if a symlink is attempted to  be created with them, and they will
always return the status of no symlinks being present.

So programs that do not need to create symlinks or can tolerate that failing
should be able to be built now and still work properly when run on a OpenVMS
system that supports symlinks.

One question that I have is if the Perl self tests will add symlink tests to
what it runs if I enable the build of symlink support.  I suppose that I will
find out soon.

Thanks,
-John
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Personal Opinion Only



Re: What is the stable version of Perl for VMS.

2005-01-31 Thread Craig Berry
 
On Monday, January 31, 2005, at 08:39AM, John E. Malmberg [EMAIL PROTECTED] 
wrote:

I Would expect that it should be a reasonable restriction in at least
the short term if not longer, that the CONFIGURE.COM and build scripts for
Perl protect them selves from DECC$ feature logicals that prevent them
from building.  

They do, kinda.  At least in the case of DECC$EFS_CASE_PRESERVE, we ignore it 
and unversally downcase names like the old CRTL behavior, so everything based 
on that assumption still works.  If we try to honor case preservation, then we 
have to modify everything that depends on case-leveled names.

After all, the DECC$ feature logicals will affect the
build now even with out the patches.

Some of them might.  For case preservation, see above, but there are now lots 
of feature logicals and I can guarantee I've never done tests with all of them 
enabled.

My assigned task now is to get a build of perl that when run under GNV
will act like it is running on UNIX, with symlink support.  It seems that
a number of open source projects now require this.

I think that most of the symlink related routines are already in the
CRTL now in 7.3-2 and possilbly earlier, except that they will return an
error if a symlink is attempted to  be created with them, and they will
always return the status of no symlinks being present.

So your task should consist of locating the line in configure.com that says:

$ WC d_symlink='undef'

change it to

$ WC d_symlink=' + d_symlink + '

and work backwards from there to define the d_symlink DCL symbol when the 
capability is truly present in the local CRTL.  You'll need to create a small 
test program, traditionally called try.c, build it, and see if it works.  Look 
for d_fcntl_can_lock as an example.  (Incidentally, d_fcntl_can_lock should 
be defined for the first time under VMS v8.2, but I have not attempted to 
verify this.)

The change to configure.com may be all that's required.

So programs that do not need to create symlinks or can tolerate that failing
should be able to be built now and still work properly when run on a OpenVMS
system that supports symlinks.

Anything in Perl that appropriately checks for $Config{d_symlink} will know 
whether the capability is present.

One question that I have is if the Perl self tests will add symlink tests to
what it runs if I enable the build of symlink support.  I suppose that I will
find out soon.


It may not be done consistently.  Tests that check for $Config{d_symlink} 
should require no modification.  There may well be some, though, that skip on 
VMS without checking this.  You can find out pretty quickly what tests are 
relevant by doing the following search from the top of the Perl source tree:

$ search [...]*.t symlink

Holler if you need further help.  


Minor ODS-5 build issue.

2005-01-31 Thread John E. Malmberg
It appears that only a handful of files have multiple dots in them, and
as near as I can tell, on OpenVMS, these files are only referenced by the
CONFIGURE.COM script.

It should not be to hard to change the configure script to be able to
automatically on Alpha/I64 if those files like changes5^.8.* are in the
multiple dot format or in an ODS-2 compatable name.

-John
[EMAIL PROTECTED]
Personal Opinion Only





Re: Minor ODS-5 build issue.

2005-01-31 Thread Craig Berry
 
On Monday, January 31, 2005, at 03:00PM, John E. Malmberg [EMAIL PROTECTED] 
wrote:
It should not be to hard to change the configure script to be able to
automatically on Alpha/I64 if those files like changes5^.8.* are in the
multiple dot format or in an ODS-2 compatable name.

Luckily I seldom clean up my directories as I apparently fixed this last 
November and never submitted it.  See attached.



configure_manicheck.patch
Description: Binary data


LARGEFILE configure issue

2005-01-31 Thread John E. Malmberg
The configure tests for largefile support is based on if the integer type
is native 64 bits.

On VMS, the off_t type becomes 64 bits if the _LARGEFILE macro is defined
in the test program.

Which means logically the support for largefile on VMS should be based on
the presences of off_t being detected as being 64 bits by the test program
run by configure instead.  (Or simply by checking the minimum version on
the 64 bit OpenVMS platforms)

If largefile support is to be present, then the resulting config.h needs
to have a #define _LARGEFILE 1 in it.

Of course there could be bad consequences if perl is assuming that off_t
and int or long are interchangeable, which is what the current logic seems
to suggest.

Is there an easy solution to this?

-John
[EMAIL PROTECTED]
Personal Opinion Only




Re: LARGEFILE configure issue

2005-01-31 Thread Craig Berry
 
On Monday, January 31, 2005, at 04:40PM, John E. Malmberg [EMAIL PROTECTED] 
wrote:

The configure tests for largefile support is based on if the integer type
is native 64 bits.

If you're looking at 5.8.6, all of the 64-bit tests were lumped together under 
64-bit integers, which is just plain wrong.  I believe 64-bit integers and 
large file support now work correctly (and independently) in bleadperl and 
those changes should make it into 5.8.7.

64-bit integers and long doubles do also work, but are currently still lumped 
together.  In other words, I don't think we have provided for anyone who wants 
long doubles but not long ints.

There is a separate part of Perl's 64-bitness called maximal 64-bit support 
enabled by -Duse64bitall and/or -Dusemorebits.  It refers to very large memory 
support, and is not yet supported (yes, it's on my to-do list).  Up through 
5.8.6, we incorrectly reported that it was defined if any 64-bit option was 
chosen even though there was no attempt made to enable large memory support in 
the CRTL.

On VMS, the off_t type becomes 64 bits if the _LARGEFILE macro is defined
in the test program.

Which means logically the support for largefile on VMS should be based on
the presences of off_t being detected as being 64 bits by the test program
run by configure instead.  (Or simply by checking the minimum version on
the 64 bit OpenVMS platforms)

The appropriate checking is now done.  See

http://public.activestate.com/cgi-bin/perlbrowse?patch=23748

and

http://public.activestate.com/cgi-bin/perlbrowse?patch=23775


If largefile support is to be present, then the resulting config.h needs
to have a #define _LARGEFILE 1 in it.

I think I tried that, but that's too late.  The CRTL headers that need to see 
_LARGEFILE get included before config.h, so it had to be added on the command 
line via /DEFINE=_LARGEFILE.

Of course there could be bad consequences if perl is assuming that off_t
and int or long are interchangeable, which is what the current logic seems
to suggest.

Perl has it's own Off_t that translates to either off_t or off64_t depending on 
configuration choices, and it does all seem to be working correctly now.  If 
you configure bleadperl using -Duselargefiles and have any trouble getting it 
to work, do post here.

Is there an easy solution to this?

No, it wasn't easy, but the good new is wasn't is past tense.  It was easier 
to port Perl to Itanium than it was to make it recognize and support the large 
file capabilities in the CRTL, but it's done and working as far as I know.



Configuring socketpair() and statfs()

2005-01-31 Thread John E. Malmberg
It appears that the perl source wants HAS_SOCKETPAIR defined if the host
supports SOCKETPAIR, but the configure script only knows how to define it
if d_sockpair='define'.  A bit inconsistent and confusing.

Perl seems to know about the standard C routine fstatvfs() and the
non-standard fstatfs().

It does not seem to know about the standard C routine statvfs(), just the
non-standard statfs().

Neither of these seem to be VMS specific issues.

-John
[EMAIL PROTECTED]
Personal Opinion Only







Re: Configuring socketpair() and statfs()

2005-01-31 Thread John E. Malmberg
Craig A. Berry wrote:
At 5:38 PM -0600 1/31/05, John E. Malmberg wrote:
It appears that the perl source wants HAS_SOCKETPAIR defined if the host
supports SOCKETPAIR, but the configure script only knows how to define it
if d_sockpair='define'.  A bit inconsistent and confusing.
It does seem there's a conflation of whether the C routine
socketpair() is present and whether the Perl opcode sockpair is
available, but in practice it probably amounts to the same thing.
So the define is for making the perl opcode do something, and thus it 
follows the perl opcode name instead of the library routine name?

Perl seems to know about the standard C routine fstatvfs() and the
non-standard fstatfs().
It does not seem to know about the standard C routine statvfs(), just the
non-standard statfs().
 
If you have a specific need for statvfs(), I'm sure it could be
added.  I can't find any references in the Perl core to statfs().
Most likely Perl would operate on filehandles rather than file names
when querying the file system, so it's not surprising we see it using
fstatvfs() when it needs to do this.
I have no specific need for it.  Just noticed the define for it, and 
knew that it was provided in 8.2.

Looks like configure.com needs to be updated to register the presence
of socketpair and fstatvfs in VMS v8.2 and higher.  If it's likely
any of these will be made available on v7.3-2 via ECO, we should have
real tests rather than just hard-wiring by VMS version.
At this time, I am not aware of any plans to back port these features to 
before v8.2.  Some of these new features are dependent on what is in the 
operating system for them to work.

I have a test version of the 5.8.6 configure.com that is enabling those 
based on v8.2 being present.

The statvfs() main use is it it allows a C program to easily check disk 
quotas for free space.

-John
[EMAIL PROTECTED]
Personal Opinion Only