Hello community,

here is the log from the commit of package duplicity.1690 for 
openSUSE:12.1:Update checked in at 2013-05-27 16:00:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.1:Update/duplicity.1690 (Old)
 and      /work/SRC/openSUSE:12.1:Update/.duplicity.1690.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "duplicity.1690"

Changes:
--------
New Changes file:

--- /dev/null   2013-05-23 01:40:31.032032505 +0200
+++ /work/SRC/openSUSE:12.1:Update/.duplicity.1690.new/duplicity.changes        
2013-05-27 16:00:25.000000000 +0200
@@ -0,0 +1,353 @@
+-------------------------------------------------------------------
+Sun May 19 17:23:14 UTC 2013 - [email protected]
+
+- Add duplicity-data-corruption.patch to fix data corruption when
+  resuming an interrupted unencrypted backup (bnc#813319).
+  No data corruption with encrypted backups was noted when tested
+  on 12.1, but there was on 12.2 and 12.3, so we should assume
+  that was possible here as well.
+
+-------------------------------------------------------------------
+Sat Oct  1 22:41:35 CEST 2011 - [email protected]
+
+- Update to version 0.6.15:
+  + Ignore 404 errors when deleting a file on Ubuntu One.
+  + Ignore ENOENT (file missing) errors where it is safe.
+  + Set minimum Python version to 2.4 in README.
+  + introduce --numeric-owner parameter
+  + duplicity:restore_check_hash "Invalid data - *** hash mismatch"
+    lists the offending filename
+  + fixes to unit tests to support SIGN_PASSPHRASE
+  + Bugs fixed: lp#524922, lp#703142, lp#794576, lp#815635,
+    lp#818178, lp#821368, lp#823556, lp#824678
+- Changes from version 0.6.14:
+  + Provide Ubuntu One integration
+  + Bugs fixed: lp#433591, lp#487720, lp#507904, lp#512628,
+    lp#680425, lp#705499, lp#739438, lp#753858, lp#761688,
+    lp#777377, lp#778215, lp#782294, lp#782321, lp#792704,
+    lp#782294, lp#782337, lp#794123, lp#797758, lp#793096.
+
+-------------------------------------------------------------------
+Sun Sep 18 17:17:12 UTC 2011 - [email protected]
+
+- Remove redundant tags/sections from specfile
+  (cf. packaging guidelines)
+
+-------------------------------------------------------------------
+Mon Jun 20 15:18:31 UTC 2011 - [email protected]
+
+- update to 0.6.13
+  fixed bugs:
+  * Assertion error "time not moving forward at appropriate pace"
+  * silent data corruption with checkpoint/restore
+  * File "/usr/bin/duplicity", error after upgrade from 6.11 to 6.12
+  features:
+  * In boto backend check for existing bucket before trying to create
+- update to 0.6.12
+  fixed bugs:
+  * Only full backups done on webdav
+  * Use log codes for common backend errors
+  * Inverted "Current directory" "Previous directory" in error message
+  * OSError: [Errno 2] No such file or directory
+  * sslerror: The read operation timed out with cf
+  * boto backend uses Python 2.5 conditional
+  * symbolic link ownership not preserved
+  * Cygwin: TypeError: basis_file must be a (true) file
+  * Duplicity 0.6.11 aborts if RSYNC_RSH not set
+  * Backup fails silently when target is full (sftp, verbosity=4)
+  * Exception in log module
+  features:
+  * ftps support using lftp (ftpsbackend)
+
+-------------------------------------------------------------------
+Sat Jan  1 18:17:06 UTC 2011 - [email protected]
+
+- update to 0.6.11
+  * Add an option to connect to S3 with regular HTTP (and not HTTPS)
+  * Use log codes for common backend errors
+  * missing ssh on rsyncd url - rsync: Failed to exec ssh: ...
+  * backed up to S3, wiped drive, reinstalled, unable to restore backup
+  * os.execve should get passed program as first argument
+  * sftp: "Couldn't delete file: Failure'" only logged on level 9
+  * 0.6.10 does not work with S3
+  * RsyncBackend instance has no attribute 'subprocess_popen_persist'
+
+-------------------------------------------------------------------
+Tue Sep 28 08:18:11 UTC 2010 - [email protected]
+
+- update to 0.6.10
+  - changes in 0.6.10
+    * Offer command to remove old incremental backups from target
+    * Use log codes for common backend errors
+    * duplicity --short-filenames crashes with TypeError
+    * NameError: global name 'parsed_url' is not defined
+    * ftpbackend fails if target directory doesn't exist
+    * Command-line verbosity parsing crash
+  - changes in 0.6.9
+    * Unknown error while uploading duplicity-full-signatures
+    * Duplicity returns 1 when continuing an interrupted backup
+    * duplicity doesn't handle with large files well
+    * --ssh-options options passing options to ssh do not work
+    * username not url decoded in backend (at least rsync)
+    * Assertion error "time not moving forward at appropriate pace"
+    * Diminishing performance on large files
+    * Upgraded tahoebackend to new parse_url.
+    * Fix two warning messages in sshbackend.
+- GnuPGInterface and pexpect are part of duplicity
+  -> removed RPM requirements
+- Require ncftp
+- Recommend (optional components depending on which backup medium
+  should be used)
+  * ncftp 
+  * python-boto (optional requirement for use with S3; module not 
+    in Factory yet though)
+
+-------------------------------------------------------------------
+Mon Mar 15 07:03:15 UTC 2010 - [email protected]
+
+- update to 0.6.08b:
+  * fix bug where encrypted backup without --gpg-options crashes;
+
+- changes from 0.6.08:
+  * fix lp#519110: need accurate man page info on use of scp/sftp usage
+  * fix lp#532051: rdiffdir attempts to reference undefined variables with
+    some command arguments
+  * fix lp#529869: TypeError: unsupported operand type(s) for -:
+    'NoneType' and 'int'
+  * fix lp#530910: TypeError: unsupported operand type(s) for +:
+    'NoneType' and 'str'
+
+- changes from 0.6.07:
+  * fix lp#459511: --tempdir option doesn't override TMPDIR
+  * fix lp#467391: WebDAV backend doesn't work
+  * fix lp#487686: re-add scp backend and make available via command line 
option
+  * fix lp#490619: use optparse not getopt
+  * fix lp#497243: 0.6.06, archive dir: cache desynchronization caused by 
remove*
+  * fix lp#501093: SSHBackend doesn't handle spaces in path
+  * fix lp#505739: "sslerror: The read operation timed out" with S3
+  * fix lp#520470: don't warn when there's old backup to delete
+  * fix lp#522544: OSError: [Errno 40] Too many levels of symbolic links
+  * fix lp#388673: allow renaming paths as they are restored
+
+-------------------------------------------------------------------
+Mon Feb  8 10:26:24 UTC 2010 - [email protected]
+
+- Update to version 0.6.06: 
+  * Merged in lp:~mterry/duplicity/list-old-chains
+    List/keep old signature chains
+  * Applied patches from Kasper Brand that fixed device file handling.
+  * Applied 422477; [PATCH] IMAP Backend Error in delete()
+  * Merged in lp:~mterry/duplicity/iterate-warnings Add machine 
+    codes to various warnings when iterating over source files
+  * Fixed 435975 gpg asks for password in 0.6.05, but not in 0.5.18
+- Bugs fixed in v0.6.05 (2009/08/28)
+  * 407968: GIO backend can't restore
+  * 408059: Failure due to _logger.log failure for content with special
+    characters: TypeError decoding Unicode not supported
+  * 409593: deja-dup (or duplicity) deletes all signatures
+  * 412667: "duplicity remove-older-than" asks for passphrase even though
+    not required
+  * 418170: [PATCH] file names longer then 512 symbols are not supported
+- Bugs fixed in v0.6.04
+  * 405734: duplicity fails to restore files that contain a newline character
+  * 403790: Backup error: No such file or directory
+- Bugs fixed in v0.6.03
+  * 377528: --file-to-restore doesn't work with trailing slash
+  * 394757: Backend imports should be made optional
+  * 398230: Deja-dup backup fails with message: "Unable to locate last file"
+  * 401303: 0.6.2 manpage inconsistent wrt. archive-dir/name
+  * 405646: Small i18n error
+  * 405975: duplicity.gpg.gpg_failed() breaks and spews on GnuPG error
+  * 402794: duplicity public-key-only incompatible with gnupg 2.0.11
+- Bugs fixed in v0.6.02
+  * 394629: Hang on first collection-status
+  * 379386: Fix 'list-current-files' with missing archive dir
+  * 395826: "No such file or directory" when backing up second time
+  * 394627: User-friendly archive dir print
+  * 388699: Manifest mismatch error
+- Bugs fixed in v0.6.01
+  * 388034: Unable to backup
+  * 378940: python2-6 issue / UTF-8 charset / Ubuntu 9.04
+  * 379386: Fix list-current-files w/ missing archive dir
+  * 387102: Asynchronous upload not working properly
+  * 387218: Make scp/ssh into sftp-only backend
+  * 388992: List of Orphaned Files Growing
+  * 392905: NoneType object has no attribute 'startswith'
+  * 393372: Error creating directory
+  * 383412: Add InfoCodes for upload events
+  * 383419: Add gio backend
+- For older changes please see 
+  /usr/share/doc/packages/duplicity/CHANGELOG 
+  or http://duplicity.nongnu.org/CHANGELOG
+-------------------------------------------------------------------
+Fri Aug 29 11:48:00 ADT 2008 - [email protected]
+
+- Apply fix for http://savannah.nongnu.org/bugs/?23985
+  --no-encryption option does no more work with duplicity 0.4.12
+
+-------------------------------------------------------------------
+Thu Jul 24 22:04:48 CEST 2008 - [email protected]
+
+- update to version 0.4.12
+  * Dan Muresan created a patch to minimize the number of password
+    prompts.  To do so, it sometimes requests a password once without
+    confirmation; if later it turns out that a full backup is needed,
+    the user is prompted for confirmation.
+  * bug #23540: doc bug in man page (environment FTP_PASSWORD)
+    https://savannah.nongnu.org/bugs/index.php?23540
++++ 156 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:12.1:Update/.duplicity.1690.new/duplicity.changes

New:
----
  duplicity-0.6.15.tar.gz
  duplicity-data-corruption.patch
  duplicity-remove_bogus_shebang.patch
  duplicity-rpmlintrc
  duplicity.changes
  duplicity.spec

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ duplicity.spec ++++++
#
# spec file for package duplicity
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%{!?python_sitelib:  %global python_sitelib  %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}

Name:           duplicity
BuildRequires:  librsync >= 0.9.6
BuildRequires:  python-devel
Summary:        Encrypted bandwidth-efficient backup using the rsync algorithm
License:        GPL-3.0+
Group:          Productivity/Archiving/Backup
Version:        0.6.15
Release:        0
Url:            http://duplicity.nongnu.org/
Source:         
http://code.launchpad.net/%{name}/0.6-series/%{version}/+download/%{name}-%{version}.tar.gz
Source99:       duplicity-rpmlintrc
# PATCH-FIX-UPSTREAM duplicity-data-corruption.patch bnc#813319 
[email protected] -- data corruption when resuming interrupted backup
Patch0:         duplicity-data-corruption.patch
Patch1:         duplicity-remove_bogus_shebang.patch
Requires:       gpg
Recommends:     python-boto ncftp
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%{py_requires}

%description
Duplicity incrementally backs up files and directories by encrypting
tar-format volumes with GnuPG and uploading them to a remote (or local)
file server. In theory many remote backends are possible; right now
local, ssh/scp, ftp, rsync, HSI, WebDAV, and Amazon S3 backends are
written.

Because duplicity uses librsync, the incremental archives are space
efficient and only record the parts of files that have changed since
the last backup. Currently duplicity supports deleted files, full unix
permissions, directories, symbolic links, fifos, etc., but not hard
links.


%prep
%setup -q
%patch0 -p1
%patch1

%build
%{__python} setup.py build

%install
%{__python} setup.py install --prefix=/usr --root="$RPM_BUILD_ROOT" 
--record-rpm=files.lst
%__rm -rf $RPM_BUILD_ROOT/usr/share/doc/duplicity-%{version}
%__perl -n -i -e 'print unless 
m,(%{_bindir}|%{_mandir}|%{_datadir}/doc|%{_datadir}/locale),' files.lst
%find_lang %{name}
cat %{name}.lang files.lst > rpmfiles.lst

%files -f rpmfiles.lst
%defattr(-,root,root)
%doc CHANGELOG COPYING README
%{_bindir}/duplicity
%{_bindir}/rdiffdir
%doc %{_mandir}/man1/duplicity.1%{ext_man}
%doc %{_mandir}/man1/rdiffdir.1%{ext_man}

%changelog
++++++ duplicity-data-corruption.patch ++++++
>From 23d3c39c52b47c2a9f5b8618b317f93bb9050791 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <[email protected]>
Date: Sun, 19 May 2013 12:15:20 -0500
Subject: [PATCH] Backport data corruption fix to 0.6.15

https://bugs.launchpad.net/duplicity/+bug/1091269
https://bugzilla.novell.com/show_bug.cgi?id=813319
---
 duplicity       |   18 +++++++++++++-----
 src/diffdir.py  |    7 +++++++
 src/dup_temp.py |    6 ++++--
 src/gpg.py      |    9 ++++-----
 4 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/duplicity b/duplicity
index cff3af1..2f8f914 100644
--- a/duplicity
+++ b/duplicity
@@ -217,7 +217,13 @@ def restart_position_iterator(tarblock_iter):
         # Just spin our wheels
         while tarblock_iter.next():
             if (tarblock_iter.previous_index == last_index):
-                if (tarblock_iter.previous_block > last_block):
+                # If both the previous index and this index are done, exit now
+                # before we hit the next index, to prevent skipping its first
+                # block.
+                if not last_block and not tarblock_iter.previous_block:
+                    break
+                # Only check block number if last_block is also a number
+                if last_block and tarblock_iter.previous_block > last_block:
                     break
             if tarblock_iter.previous_index > last_index:
                 log.Warn(_("File %s complete in backup set.\n"
@@ -877,11 +883,10 @@ def sync_archive(decrypt):
         """
         Copy data from src_iter to file at fn
         """
-        block_size = 128 * 1024
         file = open(filename, "wb")
         while True:
             try:
-                data = src_iter.next(block_size).data
+                data = src_iter.next().data
             except StopIteration:
                 break
             file.write(data)
@@ -929,9 +934,9 @@ def sync_archive(decrypt):
             def __init__(self, fileobj):
                 self.fileobj = fileobj
 
-            def next(self, size):
+            def next(self):
                 try:
-                    res = Block(self.fileobj.read(size))
+                    res = Block(self.fileobj.read(self.get_read_size()))
                 except Exception:
                     if hasattr(self.fileobj, 'name'):
                         name = self.fileobj.name
@@ -945,6 +950,9 @@ def sync_archive(decrypt):
                     raise StopIteration
                 return res
 
+            def get_read_size(self):
+                return 128 * 1024
+
             def get_footer(self):
                 return ""
 
diff --git a/src/diffdir.py b/src/diffdir.py
index 47b445b..5c40438 100644
--- a/src/diffdir.py
+++ b/src/diffdir.py
@@ -517,6 +517,13 @@ class TarBlockIter:
             self.remember_next = False
         return result
 
+    def get_read_size(self):
+        # read size must always be the same, because if we are restarting a
+        # backup volume where the previous volume ended in a data block, we
+        # have to be able to assume it's length in order to continue reading
+        # the file from the right place.
+        return 64 * 1024
+
     def get_previous_index(self):
         """
         Return index of last tarblock, or None if no previous index
diff --git a/src/dup_temp.py b/src/dup_temp.py
index 1ab2d6c..bd81083 100644
--- a/src/dup_temp.py
+++ b/src/dup_temp.py
@@ -245,9 +245,9 @@ class SrcIter:
     def __init__(self, src):
         self.src = src
         self.fp = src.open("rb")
-    def next(self, size):
+    def next(self):
         try:
-            res = Block(self.fp.read(size))
+            res = Block(self.fp.read(self.get_read_size()))
         except Exception:
             log.FatalError(_("Failed to read %s: %s") %
                            (self.src.name, sys.exc_info()),
@@ -256,5 +256,7 @@ class SrcIter:
             self.fp.close()
             raise StopIteration
         return res
+    def get_read_size(self):
+        return 128 * 1024
     def get_footer(self):
         return ""
diff --git a/src/gpg.py b/src/gpg.py
index 2a6bcfe..9fdc91a 100644
--- a/src/gpg.py
+++ b/src/gpg.py
@@ -281,17 +281,16 @@ def GPGWriteFile(block_iter, filename, profile,
     def get_current_size():
         return os.stat(filename).st_size
 
-    block_size = 128 * 1024        # don't bother requesting blocks smaller, 
but also don't ask for bigger
     target_size = size - 50 * 1024 # fudge factor, compensate for gpg buffering
     data_size = target_size - max_footer_size
     file = GPGFile(True, path.Path(filename), profile)
     at_end_of_blockiter = 0
     while True:
         bytes_to_go = data_size - get_current_size()
-        if bytes_to_go < block_size:
+        if bytes_to_go < block_iter.get_read_size():
             break
         try:
-            data = block_iter.next(min(block_size, bytes_to_go)).data
+            data = block_iter.next().data
         except StopIteration:
             at_end_of_blockiter = 1
             break
@@ -340,10 +339,10 @@ def GzipWriteFile(block_iter, filename,
     at_end_of_blockiter = 0
     while True:
         bytes_to_go = size - file_counted.byte_count
-        if bytes_to_go < 32 * 1024:
+        if bytes_to_go < block_iter.get_read_size():
             break
         try:
-            new_block = block_iter.next(min(128*1024, bytes_to_go))
+            new_block = block_iter.next()
         except StopIteration:
             at_end_of_blockiter = 1
             break
-- 
1.7.7

++++++ duplicity-remove_bogus_shebang.patch ++++++
--- src/tarfile.py.orig 2010-03-15 09:24:24.000000000 +0100
+++ src/tarfile.py      2010-03-15 09:24:26.000000000 +0100
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
 # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
 #-------------------------------------------------------------------
 # tarfile.py
++++++ duplicity-rpmlintrc ++++++
addFilter("W: python-naming-policy-not-applied .*")

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to