John E. Malmberg wrote:
John E. Malmberg wrote:

Craig A. Berry wrote:

At 5:48 PM +0100 9/29/07, Nicholas Clark wrote:



At least one of the reasons ppm.t fails is that ppm is attempting to
do things with the tar format that may never work on VMS.  For
example, you can't store object code in an archive that doesn't
preserve record boundaries.  Perhaps current versions of the tar
specification have ways to store metadata in a way that could
preserve VMS attributes; I ought to look into it but have never found
the time.  We could also reimplement the relevant pieces to use
Info-Zip or the native backup format.  For now I think we need to
mark this as TODO.
d0:[craig.perl.lib.module.build.t]ppm.................ok 2/12
: checksum error at d0:[craig.perl.lib.module.build.t]ppm.t line 122
: checksum error at d0:[craig.perl.lib.module.build.t]ppm.t line 122
: checksum error at d0:[craig.perl.lib.module.build.t]ppm.t line 122
: checksum error at d0:[craig.perl.lib.module.build.t]ppm.t line 122
Invalid header block at offset unknown at d0:[craig.perl.lib.module.build.t]ppm.t line 122 Invalid header block at offset unknown at d0:[craig.perl.lib.module.build.t]ppm.t line 122 Invalid header block at offset unknown at d0:[craig.perl.lib.module.build.t]ppm.t line 122

The issue of not restoring VMS attributes does not appear to have anything to do with the errors that are being displayed.

I have not yet determined if the tarball is being created corrupted, or if the problem is in reading it.


I still have not found what is causing the checksum errors.

However it is not the cause of test 3 failing in ppm.t.

The problem is that VMS by default is returning all files in lowercase instead of the case that they are in, and exists_ok is not finding them as keys for the hash in $files.

127: $fname = DynaLoader::mod2fname([$fname]) if defined &DynaLoader::mod2fname; 128: exists_ok($files, "blib/arch/auto/Simple/$fname." . $mb->config('dlext'));
129==>  exists_ok($files, 'blib/lib/Simple.pm');
130:    exists_ok($files, 'blib/script/hello');
131
132:    SKIP: {
133: skip( "manpage_support not enabled.", 2 ) unless $manpage_support;
134
135:      exists_ok($files, 'blib/man3/Simple.' . $mb->config('man3ext'));
  DB<160> x $files
0  HASH(0x16c9990)
   'blib' => 1
   'blib/arch' => 1
   'blib/arch/auto' => 1
   'blib/arch/auto/simple' => 1
   'blib/arch/auto/simple/pl_simple.exe' => 1

Continuing this saga, vmstar can only find the files above in the tarball, and will restore pl_simple.exe.

GNU tar 1.14 is reporting that the file is corrupt past that point.

EAGLE> tar -tvf PPM-Simple-0_01.tar
drwxrwxrwx unknown/unknown   0 2007-09-30 22:37:18 blib
drwxrwxrwx unknown/unknown   0 2007-09-30 22:30:41 blib/arch
drwxrwxrwx unknown/unknown   0 2007-09-30 22:30:41 blib/arch/auto
drwxrwxrwx unknown/unknown   0 2007-09-30 22:32:16 blib/arch/auto/simple
-r-xr-xr-x unknown/unknown 7366 2007-09-30 22:30:41 blib/arch/auto/simple/pl_simple.exe
/EAGLE$DQA0/VMS$COMMON/GNV/bin/TAR.EXE: Skipping to next header
/EAGLE$DQA0/VMS$COMMON/GNV/bin/TAR.EXE: Read 1338 bytes from PPM-Simple-0_01.tar /EAGLE$DQA0/VMS$COMMON/GNV/bin/TAR.EXE: Error exit delayed from previous errors
%NONAME-E-NOMSG, Message number 00000002

GNU tar refuses to restore the archive as it claims mkdir is failing as "not owner". I have confirmed that it is the owner.

VMStar restores what it can find of the archive, basically creates the directories and PL_SIMPLE.EXE.

PL_SIMPLE.EXE tests that it was restored properly.

-John
[EMAIL PROTECTED]
Personal Opinion Only


Reply via email to