Re: debdelta service back on track

2007-07-20 Thread A Mennucc
hi

Mark Brown ha scritto:
 On Tue, Jul 17, 2007 at 11:23:53AM +0200, A Mennucc wrote:
 
 The problem was due to a subtle change in zlib1g: in newer versions, the
 compressed output has 0x02 instead of 0x00 at the 10th byte (that is in
 the header). This change occurred somewhere between version 1.2.3-13 and
 1.2.3.3.dfsg-5 .
 
 Byte 10 is the XFL field which contains compression method specific
 flags.  For deflate a value of two indicates that the compressor was
 aiming for maximum compression and a value of zero indicates nothing in
 particular.  The code was previously not bothering to provide any
 information about how hard it was trying to compress things.

thanks for the explanation (I was too lazy to go look into it myself :-)

  Since dpkg-deb uses zlib1g, this changed the .deb files. So a file
 reconstructed by debpatch would be different with the original in 2
 bytes.
 
 Two bytes?

a .deb file is an ar archive containing both a control.tar.gz and a
data.tar.gz


BTW: let me remind that one goal of debdelta is to obtain perfect
reconstruction. The change in zlib1g did break perfect
reconstruction; but the reconstructed .deb files were OK in all other
respects.

 I have added a workaround for that problem in 'debdelta' version 0.21 ,
 and I have installed it in the server that prepares deltas for
 'debdelta-upgrade' . Now it should work again as expected. (If it does
 not, mail me, or send a bug in the BTS).
 
 I'm not sure exactly what debdelta is doing here but it sounds like
 it ought to have specific code for handing the reconstruction of this
 header in order to be robust against reasonable upstream changes.

that is what I did. Currently  a delta file also saves the header file
and then puts it back forcibly.

 There
 are several fields in there which are informational and could be varied
 by the compressor pretty much at will.

debdelta relies on the fact that dpkg-deb uses zlib1g to compress
control.tar.gz and a data.tar.gz ; so debdelta calls minigzip, that
obtains the same exact result - unless zlib1g changes, of course.


debdelta currently is not robust w.r.t. strong changes in zlib1g ...
the only way to achieve robustness would be that I should ship a copy of
the source code of zlib1g inside the debdelta package (but that is
inconvenient in other respects).

a.



signature.asc
Description: OpenPGP digital signature


debdelta service back on track

2007-07-17 Thread A Mennucc
hi all,

about two weeks ago  'debdelta-upgrade' started failing. Unfortunately I
was away with (almost) no Internet access. Today I could finally fix the
problem.

The problem was due to a subtle change in zlib1g: in newer versions, the
compressed output has 0x02 instead of 0x00 at the 10th byte (that is in
the header). This change occurred somewhere between version 1.2.3-13 and
1.2.3.3.dfsg-5 .
(I am sending a CC to the upstream authors and to the Debian Mantainer,
in case they are not aware of this change).
 Since dpkg-deb uses zlib1g, this changed the .deb files. So a file
reconstructed by debpatch would be different with the original in 2
bytes.

I have added a workaround for that problem in 'debdelta' version 0.21 ,
and I have installed it in the server that prepares deltas for
'debdelta-upgrade' . Now it should work again as expected. (If it does
not, mail me, or send a bug in the BTS).

Note that endusers that only use 'debpatch' and 'debdelta-upgrade' do
not need to upgrade: the workaround is in the delta-ing code.

a.

 --- Info

debdelta is a program suite designed to compute changes between Debian
packages.
It contains various utilities, including 'debdelta-upgrade' that can be
used by people with slow access to Internet to speed up their apt-get
upgrade. The debian package is
http://packages.debian.org/unstable/devel/debdelta
More info are available at
http://tonelli.sns.it/pub/mennucc1/debdelta/README



signature.asc
Description: OpenPGP digital signature


Re: debdelta service back on track

2007-07-17 Thread Mark Brown
On Tue, Jul 17, 2007 at 11:23:53AM +0200, A Mennucc wrote:

 The problem was due to a subtle change in zlib1g: in newer versions, the
 compressed output has 0x02 instead of 0x00 at the 10th byte (that is in
 the header). This change occurred somewhere between version 1.2.3-13 and
 1.2.3.3.dfsg-5 .

Byte 10 is the XFL field which contains compression method specific
flags.  For deflate a value of two indicates that the compressor was
aiming for maximum compression and a value of zero indicates nothing in
particular.  The code was previously not bothering to provide any
information about how hard it was trying to compress things.

 (I am sending a CC to the upstream authors and to the Debian Mantainer,
 in case they are not aware of this change).

Not that it's likely to be important but you've only CCed me, not
upstream.

  Since dpkg-deb uses zlib1g, this changed the .deb files. So a file
 reconstructed by debpatch would be different with the original in 2
 bytes.

Two bytes?

 I have added a workaround for that problem in 'debdelta' version 0.21 ,
 and I have installed it in the server that prepares deltas for
 'debdelta-upgrade' . Now it should work again as expected. (If it does
 not, mail me, or send a bug in the BTS).

I'm not sure exactly what debdelta is doing here but it sounds like
it ought to have specific code for handing the reconstruction of this
header in order to be robust against reasonable upstream changes.  There
are several fields in there which are informational and could be varied
by the compressor pretty much at will.

-- 
You grabbed my hand and we fell into it, like a daydream - or a fever.


signature.asc
Description: Digital signature