Dear mentors,
I am looking for a sponsor for the version 1.2.8-7 of my package "rdiff-backup". The upload would fix these bugs: 585508, 587370 The package can be found on mentors.debian.net: * http://mentors.debian.net/package/rdiff-backup $ dget http://mentors.debian.net/debian/pool/main/r/rdiff-backup/rdiff-backup_1.2.8-7.dsc This is a Non-maintainer upload, before change it myself, I've waited for an answer long enough on both bugs (585508 615729) without a reply. So I just made the changes needed to fix both bugs and ask someone to sponsor it. I would be glad if someone uploaded this package for me. I am attaching also the debdiff. This new version should be pushed to stable, testing and sid (the package version is the same on all cases). Thanks! -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Carlos Alberto Lopez Perez http://neutrino.es Igalia - Free Software Engineering http://www.igalia.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff -u rdiff-backup-1.2.8/debian/changelog rdiff-backup-1.2.8/debian/changelog --- rdiff-backup-1.2.8/debian/changelog +++ rdiff-backup-1.2.8/debian/changelog @@ -1,3 +1,13 @@ +rdiff-backup (1.2.8-7) unstable; urgency=low + + * Non-maintainer upload + * Added debian/patches/02_python_2.6_deprecationwarning.dpatch + - Fixes annoying deprecation warning with python 2.6 (Closes: #587370). + * Added debian/patches/03_fix_hardlinks.dpatch + - Fixes hardlink bug (Closes: #558035). + + -- Carlos Alberto Lopez Perez <clo...@igalia.com> Tue, 03 Jan 2012 11:51:55 +0100 + rdiff-backup (1.2.8-6) unstable; urgency=low * debian/control diff -u rdiff-backup-1.2.8/debian/patches/00list rdiff-backup-1.2.8/debian/patches/00list --- rdiff-backup-1.2.8/debian/patches/00list +++ rdiff-backup-1.2.8/debian/patches/00list @@ -1,0 +2,2 @@ +02_python_2.6_deprecationwarning.dpatch +03_fix_hardlinks.dpatch only in patch2: unchanged: --- rdiff-backup-1.2.8.orig/debian/patches/02_python_2.6_deprecationwarning.dpatch +++ rdiff-backup-1.2.8/debian/patches/02_python_2.6_deprecationwarning.dpatch @@ -0,0 +1,27 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 02_python_2.6_deprecationwarning.dpatch by <andr...@pc13267v15.midgard.liu.se> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: patch adapted from the one at https://savannah.nongnu.org/bugs/?26064 +## DP: This fix the following warning: "DeprecationWarning: os.popen2 is +## DP: deprecated. Use the subprocess module." +## DP: Also, the *nix version of rdiff-backup requires shell=True instead of +## DP: shell=False in the subprocess.Popen call + +@DPATCH@ +diff -urNad rdiff-backup-1.2.8~/rdiff_backup/SetConnections.py rdiff-backup-1.2.8/rdiff_backup/SetConnections.py +--- rdiff-backup-1.2.8~/rdiff_backup/SetConnections.py 2009-03-16 15:36:21.000000000 +0100 ++++ rdiff-backup-1.2.8/rdiff_backup/SetConnections.py 2009-10-03 19:27:54.935647306 +0200 +@@ -135,10 +135,10 @@ + if not remote_cmd: return Globals.local_connection + + Log("Executing " + remote_cmd, 4) +- if os.name == "nt": ++ if map(int, sys.version.split()[0].split('.')[:2]) >= [2, 6]: + import subprocess + try: +- process = subprocess.Popen(remote_cmd, shell=False, bufsize=0, ++ process = subprocess.Popen(remote_cmd, shell=True, bufsize=0, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE) + (stdin, stdout) = (process.stdin, process.stdout) only in patch2: unchanged: --- rdiff-backup-1.2.8.orig/debian/patches/03_fix_hardlinks.dpatch +++ rdiff-backup-1.2.8/debian/patches/03_fix_hardlinks.dpatch @@ -0,0 +1,98 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## fix_hardlinks.dpatch by <clo...@igalia.com> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Apply hard-links bug fix patch +## DP: https://savannah.nongnu.org/bugs/index.php?26848 + +@DPATCH@ +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' rdiff-backup-1.2.8~/rdiff_backup/Hardlink.py rdiff-backup-1.2.8/rdiff_backup/Hardlink.py +--- rdiff-backup-1.2.8~/rdiff_backup/Hardlink.py 2009-03-16 14:36:21.000000000 +0000 ++++ rdiff-backup-1.2.8/rdiff_backup/Hardlink.py 2012-01-03 11:44:21.708987145 +0000 +@@ -95,7 +95,13 @@ + src_rorp.getnumlinks() == dest_rorp.getnumlinks() == 1): + return 1 # Hard links don't apply + +- if src_rorp.getnumlinks() < dest_rorp.getnumlinks(): return 0 ++ """The sha1 of linked files is only stored in the metadata of the first ++ linked file on the dest side. If the first linked file on the src side is ++ deleted, then the sha1 will also be deleted on the dest side, so we test for this ++ & report not equal so that another sha1 will be stored with the next linked ++ file on the dest side""" ++ if (not islinked(src_rorp) and not dest_rorp.has_sha1()): return 0 ++ if src_rorp.getnumlinks() != dest_rorp.getnumlinks(): return 0 + src_key = get_inode_key(src_rorp) + index, remaining, dest_key, digest = _inode_index[src_key] + if dest_key == "NA": +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' rdiff-backup-1.2.8~/rdiff_backup/compare.py rdiff-backup-1.2.8/rdiff_backup/compare.py +--- rdiff-backup-1.2.8~/rdiff_backup/compare.py 2009-03-16 14:36:21.000000000 +0000 ++++ rdiff-backup-1.2.8/rdiff_backup/compare.py 2012-01-03 11:43:33.792989189 +0000 +@@ -25,7 +25,7 @@ + """ + + from __future__ import generators +-import Globals, restore, rorpiter, log, backup, static, rpath, hash, robust ++import Globals, restore, rorpiter, log, backup, static, rpath, hash, robust, Hardlink + + def Compare(src_rp, mirror_rp, inc_rp, compare_time): + """Compares metadata in src_rp dir with metadata in mirror_rp at time""" +@@ -80,14 +80,15 @@ + bad_files = 0 + for repo_rorp in repo_iter: + if not repo_rorp.isreg(): continue +- if not repo_rorp.has_sha1(): ++ verify_sha1 = get_hash(repo_rorp) ++ if not verify_sha1: + log.Log("Warning: Cannot find SHA1 digest for file %s,\n" + "perhaps because this feature was added in v1.1.1" + % (repo_rorp.get_indexpath(),), 2) + continue + fp = RepoSide.rf_cache.get_fp(base_index + repo_rorp.index, repo_rorp) + computed_hash = hash.compute_sha1_fp(fp) +- if computed_hash == repo_rorp.get_sha1(): ++ if computed_hash == verify_sha1: + log.Log("Verified SHA1 digest of " + repo_rorp.get_indexpath(), 5) + else: + bad_files += 1 +@@ -95,11 +96,24 @@ + "doesn't match recorded digest of\n %s\n" + "Your backup repository may be corrupted!" % + (repo_rorp.get_indexpath(), computed_hash, +- repo_rorp.get_sha1()), 2) ++ verify_sha1), 2) + RepoSide.close_rf_cache() + if not bad_files: log.Log("Every file verified successfully.", 3) + return bad_files + ++def get_hash (repo_rorp): ++ """ Try to get a sha1 digest from the repository. If hardlinks ++ are saved in the metadata, get the sha1 from the first hardlink """ ++ Hardlink.add_rorp(repo_rorp) ++ if Hardlink.islinked(repo_rorp): ++ verify_sha1 = Hardlink.get_sha1(repo_rorp) ++ elif repo_rorp.has_sha1(): ++ verify_sha1 = repo_rorp.get_sha1() ++ else: ++ verify_sha1 = None ++ Hardlink.del_rorp(repo_rorp) ++ return verify_sha1 ++ + def print_reports(report_iter): + """Given an iter of CompareReport objects, print them to screen""" + assert not Globals.server +@@ -199,12 +213,13 @@ + """Like above, but also compare sha1 sums of any regular files""" + def hashes_changed(src_rp, mir_rorp): + """Return 0 if their data hashes same, 1 otherwise""" +- if not mir_rorp.has_sha1(): ++ verify_sha1 = get_hash(mir_rorp) ++ if not verify_sha1: + log.Log("Warning: Metadata file has no digest for %s, " + "unable to compare." % (mir_rorp.get_indexpath(),), 2) + return 0 + elif (src_rp.getsize() == mir_rorp.getsize() and +- hash.compute_sha1(src_rp) == mir_rorp.get_sha1()): ++ hash.compute_sha1(src_rp) == verify_sha1): + return 0 + return 1 +
signature.asc
Description: OpenPGP digital signature