At 4:31 PM -0600 2/23/05, John E. Malmberg wrote: >To be more precise, > >The test [.t.io]fs.t will only pass when hard links {d_link} if you set >the default RMS protections to be (O:RW, G:RW, W:RW). > >I think that it is a cross platform bug where the test is assuming such >a default protection would be in place.
I see a lot of mode setting. I think chmod on VMS sanely refuses to override the RMS defaults with a less secure setting, but on Unix, an explicit setting overrides the defaults if you have privilege to do the chmod. Someone correct me if that's not right. Probably the best thing to do for the test is create a temporary directory with the necessary settings and set default to it before running the test. >Also the modules utils/c2ph.pl, x2p/pl will not allow Perl to be built >with hard link support unless they are modified. They are trying to >create hard links from a different base filename than exists on OpenVMS. > >This also requires that to support hard links in Perl that the build be >done on an ODS-5 volume with hard links enabled. > >And of course the disk that the tests are run on needs to have hard links >enabled. :-) > >The following makes the build complete, but someone more familiar with >what is really meant to be done may want to do something different. > >$ gdiff -u -b x2p/s2p.pl_5_8_6 x2p/s2p.pl >--- x2p/s2p.pl_5_8_6 Thu Feb 10 15:22:08 2005 >+++ x2p/s2p.pl Thu Feb 10 15:26:16 2005 >@@ -2048,7 +2048,11 @@ > unlink 'psed'; > print "Linking s2p to psed.\n"; > if (defined $Config{d_link}) { >+ if ($^O eq 'VMS') { >+ link 's2p.com', 'psed'; >+ } else { > link 's2p', 'psed'; >+ } > } else { > unshift @INC, '../lib'; > require File::Copy; > >$ gdiff -u -b utils/c2ph.pl_5_8_6 utils/c2ph.pl >--- utils/c2ph.pl_5_8_6 Thu Feb 0 13:24:12 2005 >+++ utils/c2ph.pl Thu Feb 10 15:23:57 2005 >@@ -1437,7 +1437,11 @@ > unlink 'pstruct'; > print "Linking c2ph to pstruct.\n"; > if (defined $Config{d_link}) { >+ if ($^O eq 'VMS') { >+ link 'c2ph.com', 'pstruct'; >+ } else { > link 'c2ph', 'pstruct'; >+ } > } else { > unshift @INC, '../lib'; > require File::Copy; I think something along the lines of the following untested patch would be more appropriate. We've already got a platform-independent version of the filename we're creating, so we might as well use it: --- x2p/s2p.PL;-0 Mon Aug 12 07:28:26 2002 +++ x2p/s2p.PL Tue Mar 1 13:51:29 2005 @@ -2046,9 +2046,9 @@ close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; unlink 'psed'; -print "Linking s2p to psed.\n"; +print "Linking $file to psed.\n"; if (defined $Config{d_link}) { - link 's2p', 'psed'; + link $file, 'psed'; } else { unshift @INC, '../lib'; require File::Copy; >Currently the diffs in the configure.com include several patches from >Craig Berry and for enabling symbolic link support, which I do not have >done yet. > >But here is the test for hard link support for 8.2. A creative person >can make a test that works for 7.3-1 and 7.3-2. > >... > > $ use64bitint = "n" >+$ uselargefiles = "n" >+$ usesymlinks = "n" >+$ usehardlinks > >.... >+$ config_symbols4 >="|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions > |uselargefiles|usehardlinks|usesymlinks|" >.... I don't think there's any reason we would want to make hard links and symlinks configuration options. If we have 'em we should say so, and if we don't we should say that too. The definition of "have 'em" I think we should use is that the APIs are present in the CRTL and they actually work on the disk where we're building. If you want the features in Perl, building on an ODS-5 disk where the features are enabled seems like a reasonable requirement. -- ________________________________________ Craig A. Berry mailto:[EMAIL PROTECTED] "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser