Re: problem building perl 5.10.1

[email protected] ("John E. Malmberg") Mon, 19 Jul 2010 20:45:09 -0500
Newsgroups perl.vmsperl
Message-ID <[email protected]>
Fabio Ciampi wrote:
> Hi
> 
> I'm a newbie of VMS. I've tried to build perl 5.10.1 on my IA64 

Welcome to VMS.

I see a couple of newbie mistakes below, but they probably are not 
causing the issues that you are seeing, just additional issues.
And these are somethings that people with experience should have learned 
but many have not.

> Operating System (Version V8.3-1H1) with ODS5 disks. I have MadGoat Make 
> Utility V4.1
> and compiler HP C V7.2-001.
> 
> I gave the following commands after  download  perl sources and unpacked 
> them:
> 
> set security/protection=(o:rwed) perl-5^.10^.1.DIR;1
> rename perl-5^.10^.1.DIR perl-5_10_1.DIR
> @configure "-des" "-Dprefix=DATE$MSA1:[PERL-5_10_1.]"

I have not used the -Dprefix.  On VMS, I use logical names to determine 
which version of an application to run.  Perl uses the logical name 
PERL_ROOT, regardless of what prefix that you assign.

Newbie note 1:
In general in managing VMS, physical device names should generally be 
referenced only in the startup procedures where logical names are mapped 
to them, and in utilities like backup or defragmenters that need to 
specifically operate on physical devices.

Any applications other than the above that require a physical device 
name instead of a logical name is broken, and not properly written for 
VMS.  Some applications have broken configuration routines that put 
physical device names in configuration files instead of logical names. 
In most cases, I have found that manually fixing the configuration files 
  makes the application more maintainable.

If I move the the application or its data to a new physical disk, all I 
should have to do is change how the logical names are mapped.  I should 
never have to reconfigure an application for that.

And I should never need to notify an end user when I change what 
physical devices that are being used by the computer or one of their 
applications.

VMS uses logical names for things that Unix uses symbolic links for, but 
logical names are far more powerful and flexible.

> mmk
> mmk test
> 
> The mmk process works (I only have some "Warning: long symbol....").
> During mmk test I saw some tests failed:
> t/op/exec.....................................................FAILED at 
> test 16
> ext/Compress-Raw-Bzip2/t/01bzip2..............................FAILED--expected 
> 157 tests, saw 10
> ext/Compress-Raw-Bzip2/t/09limitoutput........................FAILED--expected 
> 88 tests, saw 5
> ext/IO-Compress/t/001bzip2....................................FAILED at 
> test 58
> ext/IO-Compress/t/006zip......................................FAILED--expected 
> 77 tests, saw 17

Perl is sensitive to the logical name BIN, and foreign commands for ZIP 
and BZIP2 among others.

Older versions of the GNV product would incorrectly assign the logical 
name BIN in the system table, and many people will put in symbols for 
ZIP and BZIP2 in the SYLOGIN.COM or LOGIN.COM.

Other applications may set the BIN logical name and leave it behind.

If some of the tests find a ZIP or BZIP executable, they will try to use 
it just like a UNIX utility and may expect that they are running it 
under the Bash shell.

Perl also now supports the DECC$* feature logicals at run time.  Not all 
combinations have been tested, and some combinations will cause tests to 
fail because they change the behavior in ways that the tests do not yet 
expect.

It is also possible that running on your environment may need some more 
quota for a resource than the build procedure knows to test for.

For building and the initial testing of Perl, make sure that all the 
DECC$ feature logicals are set to their default.

Then read the two VMS specific text files in Perl for their usage.

Newbie note 2:

> [DIR$UTIL.PERL_5-010.PERL-5_10_1]PERL.EXE;1 

The use of '$' in logical names, filenames, directories, and symbols is 
reserved to HP/VMS and registered third party usage.  It should not be 
used in names that you make up for your own use unless directed to by 
the either the VMS or third party that has registered the prefix for 
that name.  This is a long standing rule in VMS, but it used to be 
easier to find in the documentation.

This prevents your names and names from HP or layered products from 
having a conflict.

There is documentation in the VMS doc set on getting those names 
registered by application developers.

With all the possibilities out there, the odds of a conflict of making 
up your own names with $ in them are low, but it is not zero.  Some 
layered products use undocumented prefixed logical names to enable 
debugging or other diagnostic procedures.

In addition, some TCPIP products use the $ in filenames to do encoding 
of case changes or other special characters in NFS exports and mounted 
disks.

-John
[email protected]
Personal Opinion Only