Your message dated Wed, 05 Aug 2009 12:32:03 +0000
with message-id <[email protected]>
and subject line Bug#540005: fixed in debdelta 0.29
has caused the Debian Bug report #540005,
regarding lzma support
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
540005: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=540005
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: debdelta
Version: 0.28
debdelta does not support deb files with lzma compressed data.tar.
Attached is a patch that adds lzma support. To apply cleanly first apply
Lars' hashlib patch[1] and my popen2 patch[2] (bug 537869 and 539911).
One warning, I have only tested this on Ubuntu 9.10 (development
branch). The only problem is that compressing data.tar.lzma for big
packages is very slow, but that is of course not debdeltas fault.
The patch also adds lzma as a third compression method to try on
patch.sh. In my tests this wins over gzip/bzip2 in more than 60% of the
deltas.
[1]
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=debdelta.md5.patch;att=1;bug=537869
[2]
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=debdelta_no_popen2.patch;att=1;bug=539911
Regards,
Pär Andersson
diff --git a/debdelta b/debdelta
index 8be8c27..946999f 100755
--- a/debdelta
+++ b/debdelta
@@ -529,6 +529,8 @@ def _delta_info_unzip_(TD):
system('gunzip PATCH/patch.sh.gz',TD)
elif os.path.exists(TD+'PATCH/patch.sh.bz2'):
system('bunzip2 PATCH/patch.sh.bz2',TD)
+ elif os.path.exists(TD+'PATCH/patch.sh.lzma'):
+ system('unlzma PATCH/patch.sh.lzma',TD)
def get_info_slow(delta,T=None):
if T:
@@ -844,8 +846,11 @@ def do_patch_(delta,olddeb,newdeb, TD, info=None, diversions=None):
ar_list_old= list_ar(TD+'OLD.file')
if 'data.tar.bz2' in ar_list_old:
system('ar p '+TD+'OLD.file data.tar.bz2 | tar -x --bzip2 -p -f - -C '+TD+'OLD/DATA', TD)
- else:
+ elif 'data.tar.gz' in ar_list_old:
system('ar p '+TD+'OLD.file data.tar.gz | tar -x -z -p -f - -C '+TD+'OLD/DATA', TD)
+ elif 'data.tar.lzma' in ar_list_old:
+ system('ar p '+TD+'OLD.file data.tar.lzma | unlzma | tar -x -p -f - -C '+TD+'OLD/DATA', TD)
+ else: assert(0)
_fix_data_tree_(TD)
elif 'old-control-tree' == a:
if olddeb == '/':
@@ -1118,6 +1123,12 @@ def do_delta_(olddeb,newdeb,delta,TD):
script.write('bzip2 '+f+'\n')
f=f[:-4]
c='.bz2'
+ elif f[-5:] == '.lzma' :
+ system('unlzma '+f,TD)
+ if in_script_as_well or ( in_script_as_well == None and f[:3] != 'NEW' ):
+ script.write('unlzma '+f+'\n')
+ f=f[:-5]
+ c='.lzma'
else: assert(0)
return (f,c)
@@ -1127,6 +1138,8 @@ def do_delta_(olddeb,newdeb,delta,TD):
script.write("$echo '"+ s +"' >> "+n+cn +' && ./minigzip -9 < '+n+' | tail -c +'+str(len(newhead)+1)+' >> '+n+cn+' && rm '+n+' \n')
elif cn == '.bz2' :
script.write(' ./minibzip2 -9 < '+n+' >> '+n+cn+' && rm '+n+' \n')
+ elif cn == '.lzma' :
+ script.write('lzma -9 < '+n+' >> '+n+cn+' && rm '+n+' \n')
else: assert(0)
def delta_files__(o,n,p,algo='bsdiff'):
@@ -1807,6 +1820,9 @@ def do_delta_(olddeb,newdeb,delta,TD):
info.append('needs-minibzip2')
def x():
return os.popen('cd '+TD+'; ar p OLD.file '+name+' | bzip2 -cd')
+ elif name[-5:] == '.lzma' :
+ def x():
+ return os.popen('cd '+TD+'; ar p OLD.file '+name+' | unlzma -c')
else: assert(0)
delta_tar(x,n,'DATA',old_conffiles,old_md5,new_md5,\
debdelta_conf_skip=debdelta_conf_skip)
@@ -1847,14 +1863,18 @@ def do_delta_(olddeb,newdeb,delta,TD):
patchsize = os.stat(TD+'PATCH/patch.sh')[ST_SIZE]
v=''
#if VERBOSE > 1 :v ='-v' #disabled... it does not look good inlogs
+ patch_files = []
+ system('lzma -q -9 -k '+v+' PATCH/patch.sh', TD)
+ patch_files.append((os.path.getsize(TD+'PATCH/patch.sh.lzma'), 'lzma', 'patch.sh.lzma'))
system('bzip2 -q --keep -9 '+v+' PATCH/patch.sh', TD)
- system('gzip -q -9 -n '+v+' PATCH/patch.sh', TD)
- if os.path.getsize(TD+'PATCH/patch.sh.gz') > os.path.getsize(TD+'PATCH/patch.sh.bz2') :
- if VERBOSE > 1 : print ' bzip2 wins on patch.sh '
- patch_append('patch.sh.bz2')
- else:
- if VERBOSE > 1 : print ' gzip wins on patch.sh '
- patch_append('patch.sh.gz')
+ patch_files.append((os.path.getsize(TD+'PATCH/patch.sh.bz2'), 'bzip2', 'patch.sh.bz2'))
+ system('gzip -q -9 -n '+v+' PATCH/patch.sh', TD)
+ patch_files.append((os.path.getsize(TD+'PATCH/patch.sh.gz'), 'gzip', 'patch.sh.gz'))
+
+ # Use the smallest compressed patch.sh
+ patch_files.sort()
+ if VERBOSE > 1 : print ' '+patch_files[0][1]+' wins on patch.sh'
+ patch_append(patch_files[0][2])
#OK, OK... this is not yet correct, since I will add the info file later on
elaps = time.time() - start_sec
diff --git a/debian/control b/debian/control
index 597a7e6..dc37214 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Standards-Version: 3.7.3
Package: debdelta
Architecture: any
-Depends: python, xdelta, bsdiff, bzip2, ${shlibs:Depends}
+Depends: python, xdelta, bsdiff, bzip2, lzma, ${shlibs:Depends}
Recommends: python-apt, xdelta3
Description: diff and patch utilities which work with Debian packages
debdelta is a program suite designed to compute changes between
pgp2CMCRQg7yg.pgp
Description: PGP signature
--- End Message ---
--- Begin Message ---
Source: debdelta
Source-Version: 0.29
We believe that the bug you reported is fixed in the latest version of
debdelta, which is due to be installed in the Debian FTP archive:
debdelta_0.29.dsc
to pool/main/d/debdelta/debdelta_0.29.dsc
debdelta_0.29.tar.gz
to pool/main/d/debdelta/debdelta_0.29.tar.gz
debdelta_0.29_i386.deb
to pool/main/d/debdelta/debdelta_0.29_i386.deb
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
A Mennucc1 <[email protected]> (supplier of updated debdelta package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.8
Date: Wed, 05 Aug 2009 14:09:02 +0200
Source: debdelta
Binary: debdelta
Architecture: source i386
Version: 0.29
Distribution: unstable
Urgency: low
Maintainer: A Mennucc1 <[email protected]>
Changed-By: A Mennucc1 <[email protected]>
Description:
debdelta - diff and patch utilities which work with Debian packages
Closes: 506383 511765 537869 540005
Changes:
debdelta (0.29) unstable; urgency=low
.
* Really depend on 'binutils' (Closes: 511765)
* Bug fix: "crash when /proc is not mounted",
thanks to Paul Wise (Closes: #506383).
* Use hashlib, not md5 module, in newer python,
thanks to Lars Wirzenius (Closes: #537869).
* Support lzma , thanks to Pär Andersson (Closes: #540005)
Checksums-Sha1:
8e608b5da15260f9767f682161ac232fe20cc458 701 debdelta_0.29.dsc
e2acda630871ee0ddc756bca2b457bfbcddbf806 131170 debdelta_0.29.tar.gz
e48aef7f68cbd1874c9cf9047e19fb529e22fe4c 48004 debdelta_0.29_i386.deb
Checksums-Sha256:
e670ba5474a681e33b9f0e1d73663bd4b489d31c2980c5a2fa765c4ae3fcec2f 701
debdelta_0.29.dsc
352ef9cbe988b49fb3b54b53f07e3cae6b0df3449f062b0840d9844c2753db0a 131170
debdelta_0.29.tar.gz
9f6d629c14b9a85f5fe953e8c34602ec77597501fc52ccf3a97d6377d732d3fc 48004
debdelta_0.29_i386.deb
Files:
b2b8fb7f64e33bf500f7e306d9ac2b17 701 devel optional debdelta_0.29.dsc
338224e2cd03c27a6789140343b81633 131170 devel optional debdelta_0.29.tar.gz
e1f8e9bbdd2a338e4363c13f8dab95fa 48004 devel optional debdelta_0.29_i386.deb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkp5eX0ACgkQ9B/tjjP8QKSNMgCdGQK30e5qyP4V8pDE9J+uQ1iY
vN8AnAqql7OTDJwH+q8XUOWUSNfw1PDP
=2UxW
-----END PGP SIGNATURE-----
--- End Message ---