applydeltaiso command failing again

This appears to have been a bug in 2006 but it’s bitten me again. I am running Suse 11.0 x86_64 patched to current levels, but when I run the command

athlon:/sata # applydeltaiso SU10.3.i386/openSUSE-10.3-GM-DVD-i386.iso SU10.3.RC1.i386.delta/openSUSE-10.3-RC1_GM-DVD-i386.delta.iso new.openSUSE-10.3-GM-DVD-i3 86.iso
reading 363151280 bytes from old iso…done
3ddiag.i586 (bzip): applying delta
payload uncompress error

it fails. Any idea how to fix this so I can upgrade the iso image?
:\

Doesn’t look like a bug, looks more like you’re trying to apply delta patches on a machine that does not have the suitable compression codecs available.

In other words you need to upgrade your deltarpm/rpm.

I think deltaiso is specific to the distro version. If you are doing 10.3, try the 10.3 version.

I’ve tried both the 10.3 i386 and the 11.0 x86_64 deltaiso, and both come up with the same error. I am going to check the delta rpm to see if they’re the latest version.

The 11.0 x86_64 version is 3.4-78.1 (which seems to be current) and the 10.3 i386 version is 3.4-36 (if Yast2 is reading it correctly) Perhaps there are 2 problems, trying to do a deltaiso from a 64 bit platform on a 32-bit iso image and the deltarpm isn’t recent enough on my 10.3 platform? I will try to upgrade the 10.3 version and see if that fixes the problem

Opps, a blind installation of the updated deltarpm shows that I ignored the libc.so.6 change:

=== deltarpm-3.4-78.1.i586[mine] ===
deltarpm-3.4-78.1.i586[mine] will be installed by the user.
glibc-2.6.1-18.3.i686 is needed by deltarpm-3.4-78.1.i586[mine] (libc.so.6)
perl-base-5.8.8-76.2.i586 is needed by deltarpm-3.4-78.1.i586[mine] (usr/bin/perl)
rpm-4.4.2-140.i586 is needed by deltarepm-3.4-78.1.i586[mine] (librpm-4.4.so)
libbz2-1-1.0.4-42.2.i586 is needed by deltarpm-3.4-78.1.i586[mine] (libbz2.so.1)

so I guess I am stuck with compiling the source code on the 10.3 and seeing if I can get that to work?

I took the source rpm package for 3.4-78.1 and recompiled it on the 10.3 i586 platform (and had to add the bzlib and rpmlib development libs for the headers) but using this version of applydeltaiso failed with the same exact error too. I am wondering now if the problem isn’t somewhere else? The file size of the new iso is around 250,977,086 bytes so it doesn’t appear to be a 2 Gig limitation? The defines inside the Makefile looked like they were supposed to enable the 64 bit space on a 32 bit machine.

Again, the run with the recompiled applydeltaiso executable:

applydeltaiso SU10.3.i386/openSUSE-10.3-GM-DVD-i386.iso SU10.3.RC1.i386.delta/openSUSE-10.3-RC1_GM-DVD-i386.delta.iso new.openSUSE-10.3-GM-DVD-i386.iso
reading 363151280 bytes from old iso…done
3ddiag.i586 (bzip): applying delta
payload uncompress error

So could the problem be with the 3ddiag.i586 ??

I’ve compiled applydeltaiso.c with the debugger enabled and traced down through the program until I reached the failure which occurs at line 186. Apparently there is a mismatch on the count of bytes read in the cfile->read call.

The program snippet is

opcf = cfile_open(CFILE_OPEN_RD, CFILE_IO_FILE, fpold, CFILE_COMP_XX, nmp*, 0, 0);
if (!opcf)
{
fprintf(stderr, "payload open failed
");
exit(1);
}
if (opcf->read(opcf, paydata, paylen) != paylen)
{
fprintf(stderr, "payload uncompress error
");
exit(1);
}

I am really not sure of where to go from here. Why is the cfile->read() failing?*