Hello community, here is the log from the commit of package duplicity for openSUSE:Factory checked in at 2016-08-26 23:14:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/duplicity (Old) and /work/SRC/openSUSE:Factory/.duplicity.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "duplicity" Changes: -------- --- /work/SRC/openSUSE:Factory/duplicity/duplicity.changes 2016-08-16 13:02:47.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.duplicity.new/duplicity.changes 2016-08-26 23:14:17.000000000 +0200 @@ -1,0 +2,10 @@ +Tue Aug 23 07:40:58 UTC 2016 - w...@rosenauer.org + +- update to 0.7.10 + * fixed several issues + - Restore from S3 fails with --with-prefix-archive if prefix + includes '/' + * Changes for connecting to IBM Bluemix ObjectStorage. See man page + * Allow duplicity to create remote folder + +------------------------------------------------------------------- Old: ---- duplicity-0.7.09.tar.gz New: ---- duplicity-0.7.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ duplicity.spec ++++++ --- /var/tmp/diff_new_pack.iibZ0S/_old 2016-08-26 23:14:18.000000000 +0200 +++ /var/tmp/diff_new_pack.iibZ0S/_new 2016-08-26 23:14:18.000000000 +0200 @@ -19,7 +19,7 @@ %{!?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 -Version: 0.7.09 +Version: 0.7.10 Release: 0 Summary: Encrypted bandwidth-efficient backup using the rsync algorithm License: GPL-3.0+ ++++++ duplicity-0.7.09.tar.gz -> duplicity-0.7.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/CHANGELOG new/duplicity-0.7.10/CHANGELOG --- old/duplicity-0.7.09/CHANGELOG 2016-07-24 18:09:16.000000000 +0200 +++ new/duplicity-0.7.10/CHANGELOG 2016-08-20 21:10:14.000000000 +0200 @@ -1,3 +1,21 @@ +New in v0.7.10 (2016/08/20) +--------------------------- +* Merged in lp:~mwilck/duplicity/0.7-series + - Speedup of path_matches_glob() by about 8x. See + https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301332 + for more details. +* Remove -w from setsid in functional tests. +* Fixed conflict in merge from Martin Wilck and applied + - https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301492 + - merge fixes setsid usage in functional testing. +* Fixed bug #1612472 with patch from David Cuthbert + - Restore from S3 fails with --with-prefix-archive if prefix includes '/' +* Merged in lp:~arashad.ahamad/duplicity/duplicity_latest + - Changes for connecting to IBM Bluemix ObjectStorage. See man page. +* Merged in lp:~fenisilius/duplicity/acd_init_mkdir + - Allow duplicity to create remote folder + + New in v0.7.09 (2016/07/24) --------------------------- * Fixed bug #1600692 with patch from Wolfgang Rohdewald diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/Changelog.GNU new/duplicity-0.7.10/Changelog.GNU --- old/duplicity-0.7.09/Changelog.GNU 2016-07-24 18:14:17.000000000 +0200 +++ new/duplicity-0.7.10/Changelog.GNU 2016-08-20 21:01:34.000000000 +0200 @@ -1,3 +1,33 @@ +2016-08-20 Kenneth Loafman <kenn...@loafman.com> + + * Prep for 0.7.10 + +2016-08-18 Kenneth Loafman <kenn...@loafman.com> + + * Merged in lp:~fenisilius/duplicity/acd_init_mkdir + - Allow duplicity to create remote folder + +2016-08-12 Kenneth Loafman <kenn...@loafman.com> + + * Fixed bug #1612472 with patch from David Cuthbert + - Restore from S3 fails with --with-prefix-archive if prefix includes '/' + * Merged in lp:~arashad.ahamad/duplicity/duplicity_latest + - Changes for connecting to IBM Bluemix ObjectStorage. See man page. + +2016-07-31 Kenneth Loafman <kenn...@loafman.com> + + * Fixed conflict in merge from Martin Wilck and applied + - https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301492 + - merge fixes setsid usage in functional testing. + +2016-07-28 Kenneth Loafman <kenn...@loafman.com> + + * Merged in lp:~mwilck/duplicity/0.7-series + - Speedup of path_matches_glob() by about 8x. See + https://code.launchpad.net/~mwilck/duplicity/0.7-series/+merge/301332 + for more details. + * Remove -w from setsid in functional tests. + 2016-07-24 Kenneth Loafman <kenn...@loafman.com> * Merged in lp:~aaron-whitehouse/duplicity/07-fix_deja_dup_error_on_locked_files diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/bin/duplicity new/duplicity-0.7.10/bin/duplicity --- old/duplicity-0.7.09/bin/duplicity 2016-07-24 18:27:49.000000000 +0200 +++ new/duplicity-0.7.10/bin/duplicity 2016-08-20 21:13:49.000000000 +0200 @@ -2,7 +2,7 @@ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- # # duplicity -- Encrypted bandwidth efficient backup -# Version 0.7.09 released July 24, 2016 +# Version 0.7.10 released August 20, 2016 # # Copyright 2002 Ben Escoto <b...@emerose.org> # Copyright 2007 Kenneth Loafman <kenn...@loafman.com> @@ -1278,7 +1278,7 @@ log Python, duplicity, and system versions """ log.Log(u'=' * 80, verbosity) - log.Log(u"duplicity 0.7.09 (July 24, 2016)", verbosity) + log.Log(u"duplicity 0.7.10 (August 20, 2016)", verbosity) log.Log(u"Args: %s" % util.ufn(' '.join(sys.argv)), verbosity) log.Log(u' '.join(platform.uname()), verbosity) log.Log(u"%s %s" % (sys.executable or sys.platform, sys.version), verbosity) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/bin/duplicity.1 new/duplicity-0.7.10/bin/duplicity.1 --- old/duplicity-0.7.09/bin/duplicity.1 2016-07-24 18:27:49.000000000 +0200 +++ new/duplicity-0.7.10/bin/duplicity.1 2016-08-20 21:13:49.000000000 +0200 @@ -1,4 +1,4 @@ -.TH DUPLICITY 1 "July 24, 2016" "Version 0.7.09" "User Manuals" \" -*- nroff -*- +.TH DUPLICITY 1 "August 20, 2016" "Version 0.7.10" "User Manuals" \" -*- nroff -*- .\" disable justification (adjust text to left margin only) .\" command line examples stay readable through that .ad l @@ -1965,10 +1965,13 @@ .B REQUIREMENTS above. -It uses four environment variables for authentification: +It uses following environment variables for authentification: .BR SWIFT_USERNAME " (required)," .BR SWIFT_PASSWORD " (required)," .BR SWIFT_AUTHURL " (required)," +.BR SWIFT_USERID " (required, only for IBM Bluemix ObjectStorage)," +.BR SWIFT_TENANTID " (required, only for IBM Bluemix ObjectStorage)," +.BR SWIFT_REGIONNAME " (required, only for IBM Bluemix ObjectStorage)," .BR SWIFT_TENANTNAME " (optional, the tenant can be included in the username)" If the user was previously authenticated, the following environment diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/bin/rdiffdir new/duplicity-0.7.10/bin/rdiffdir --- old/duplicity-0.7.09/bin/rdiffdir 2016-07-24 18:27:49.000000000 +0200 +++ new/duplicity-0.7.10/bin/rdiffdir 2016-08-20 21:13:49.000000000 +0200 @@ -1,6 +1,6 @@ #!/usr/bin/env python2 # rdiffdir -- Extend rdiff functionality to directories -# Version 0.7.09 released July 24, 2016 +# Version 0.7.10 released August 20, 2016 # # Copyright 2002 Ben Escoto <b...@emerose.org> # Copyright 2007 Kenneth Loafman <kenn...@loafman.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/bin/rdiffdir.1 new/duplicity-0.7.10/bin/rdiffdir.1 --- old/duplicity-0.7.09/bin/rdiffdir.1 2016-07-24 18:27:49.000000000 +0200 +++ new/duplicity-0.7.10/bin/rdiffdir.1 2016-08-20 21:13:49.000000000 +0200 @@ -1,4 +1,4 @@ -.TH RDIFFDIR 1 "July 24, 2016" "Version 0.7.09" "User Manuals" \" -*- nroff -*- +.TH RDIFFDIR 1 "August 20, 2016" "Version 0.7.10" "User Manuals" \" -*- nroff -*- .\" disable justification (adjust text to left margin only) .\" command line examples stay readable through that .ad l diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/duplicity/backends/_boto_single.py new/duplicity-0.7.10/duplicity/backends/_boto_single.py --- old/duplicity-0.7.09/duplicity/backends/_boto_single.py 2016-07-02 14:44:03.000000000 +0200 +++ new/duplicity-0.7.10/duplicity/backends/_boto_single.py 2016-08-12 22:45:39.000000000 +0200 @@ -265,7 +265,7 @@ # Because of the need for this optimization, it should be left as is. # for k in self.bucket.list(prefix = self.key_prefix + 'd', delimiter = '/'): filename_list = [] - for k in self.bucket.list(prefix=self.key_prefix, delimiter='/'): + for k in self.bucket.list(prefix=self.key_prefix): try: filename = k.key.replace(self.key_prefix, '', 1) filename_list.append(filename) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/duplicity/backends/acdclibackend.py new/duplicity-0.7.10/duplicity/backends/acdclibackend.py --- old/duplicity-0.7.09/duplicity/backends/acdclibackend.py 2016-07-02 14:44:03.000000000 +0200 +++ new/duplicity-0.7.10/duplicity/backends/acdclibackend.py 2016-08-18 17:23:13.000000000 +0200 @@ -59,6 +59,16 @@ self.subprocess_popen(self.acd_cmd + " sync") + # Initialize remote directory + remote_path = urllib.unquote(self.parsed_url.path.replace('///', '/')).rstrip() + commandline = self.acd_cmd + " ls '%s'" % (remote_path) + try: + self.subprocess_popen(commandline) + except BackendException as e: + if e.code == 50: # Remote directory not there, create a new one + commandline = self.acd_cmd + " mkdir '%s'" % remote_path + self.subprocess_popen(commandline) + def _put(self, source_path, remote_filename=None): """Transfer source_path to remote_filename""" if not remote_filename: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/duplicity/backends/swiftbackend.py new/duplicity-0.7.10/duplicity/backends/swiftbackend.py --- old/duplicity-0.7.09/duplicity/backends/swiftbackend.py 2016-05-30 15:23:23.000000000 +0200 +++ new/duplicity-0.7.10/duplicity/backends/swiftbackend.py 2016-08-12 22:47:24.000000000 +0200 @@ -80,6 +80,12 @@ os_options.update({'tenant_name': os.environ['SWIFT_TENANTNAME']}) if 'SWIFT_ENDPOINT_TYPE' in os.environ: os_options.update({'endpoint_type': os.environ['SWIFT_ENDPOINT_TYPE']}) + if 'SWIFT_USERID' in os.environ: + os_options.update({'user_id': os.environ['SWIFT_USERID']}) + if 'SWIFT_TENANTID' in os.environ: + os_options.update({'tenant_id': os.environ['SWIFT_TENANTID']}) + if 'SWIFT_REGIONNAME' in os.environ: + os_options.update({'region_name': os.environ['SWIFT_REGIONNAME']}) else: conn_kwargs['auth_version'] = '1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/duplicity/globals.py new/duplicity-0.7.10/duplicity/globals.py --- old/duplicity-0.7.09/duplicity/globals.py 2016-07-24 18:27:49.000000000 +0200 +++ new/duplicity-0.7.10/duplicity/globals.py 2016-08-20 21:13:49.000000000 +0200 @@ -26,7 +26,7 @@ # The current version of duplicity -version = "0.7.09" +version = "0.7.10" # Prefix for all files (appended before type-specific prefixes) file_prefix = "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/duplicity/globmatch.py new/duplicity-0.7.10/duplicity/globmatch.py --- old/duplicity-0.7.09/duplicity/globmatch.py 2016-07-02 14:40:18.000000000 +0200 +++ new/duplicity-0.7.10/duplicity/globmatch.py 2016-07-28 16:08:18.000000000 +0200 @@ -49,8 +49,9 @@ return list(map(glob_to_regex, prefixes)) -def path_matches_glob(path, glob_str, include, ignore_case=False): - """Tests whether path matches glob, as per the Unix shell rules, taking as +def path_matches_glob_fn(glob_str, include, ignore_case=False): + """Return a function test_fn(path) which + tests whether path matches glob, as per the Unix shell rules, taking as arguments a path, a glob string and include (0 indicating that the glob string is an exclude glob and 1 indicating that it is an include glob, returning: @@ -83,15 +84,19 @@ scan_comp_re = re_comp("^(%s)$" % "|".join(_glob_get_prefix_regexs(glob_str))) - if match_only_dirs and not path.isdir(): - # If the glob ended with a /, only match directories - return None - elif glob_comp_re.match(path.name): - return include - elif include == 1 and scan_comp_re.match(path.name): - return 2 - else: - return None + def test_fn(path): + + if match_only_dirs and not path.isdir(): + # If the glob ended with a /, only match directories + return None + elif glob_comp_re.match(path.name): + return include + elif include == 1 and scan_comp_re.match(path.name): + return 2 + else: + return None + + return test_fn def glob_to_regex(pat): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/duplicity/selection.py new/duplicity-0.7.10/duplicity/selection.py --- old/duplicity-0.7.09/duplicity/selection.py 2016-07-24 14:25:01.000000000 +0200 +++ new/duplicity-0.7.10/duplicity/selection.py 2016-07-28 15:41:24.000000000 +0200 @@ -33,7 +33,7 @@ from duplicity import diffdir from duplicity import util # @Reimport from duplicity.globmatch import GlobbingError, FilePrefixError, \ - path_matches_glob + path_matches_glob_fn """Iterate exactly the requested files in a directory @@ -544,13 +544,10 @@ ignore_case = True # Check to make sure prefix is ok - if not path_matches_glob(self.rootpath, glob_str, include=1): + if not path_matches_glob_fn(glob_str, include=1)(self.rootpath): raise FilePrefixError(glob_str) - def sel_func(path): - return path_matches_glob(path, glob_str, include, ignore_case) - - return sel_func + return path_matches_glob_fn(glob_str, include, ignore_case) def exclude_older_get_sf(self, date): """Return selection function based on files older than modification date """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/po/duplicity.pot new/duplicity-0.7.10/po/duplicity.pot --- old/duplicity-0.7.09/po/duplicity.pot 2016-07-24 18:15:56.000000000 +0200 +++ new/duplicity-0.7.10/po/duplicity.pot 2016-08-20 21:02:00.000000000 +0200 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: Kenneth Loafman <kenn...@loafman.com>\n" -"POT-Creation-Date: 2016-07-24 11:15-0500\n" +"POT-Creation-Date: 2016-08-20 14:02-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/setup.py new/duplicity-0.7.10/setup.py --- old/duplicity-0.7.09/setup.py 2016-07-24 18:27:49.000000000 +0200 +++ new/duplicity-0.7.10/setup.py 2016-08-20 21:13:49.000000000 +0200 @@ -28,7 +28,7 @@ from setuptools.command.sdist import sdist from distutils.command.build_scripts import build_scripts -version_string = "0.7.09" +version_string = "0.7.10" if sys.version_info[:2] < (2, 6) or sys.version_info[:2] > (2, 7): print("Sorry, duplicity requires version 2.6 or 2.7 of python.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/testing/functional/__init__.py new/duplicity-0.7.10/testing/functional/__init__.py --- old/duplicity-0.7.09/testing/functional/__init__.py 2016-01-06 14:40:33.000000000 +0100 +++ new/duplicity-0.7.10/testing/functional/__init__.py 2016-07-31 14:00:36.000000000 +0200 @@ -39,6 +39,24 @@ class FunctionalTestCase(DuplicityTestCase): + _setsid_w = None + + @classmethod + def _check_setsid(cls): + if cls._setsid_w is not None: + return + if platform.platform().startswith('Linux'): + # setsid behavior differs between distributions. + # If setsid supports -w ("wait"), use it. + import subprocess + try: + with open("/dev/null", "w") as sink: + subprocess.check_call(["setsid", "-w", "ls"], stdout=sink, stderr=sink) + except subprocess.CalledProcessError: + cls._setsid_w = False + else: + cls._setsid_w = True + def setUp(self): super(FunctionalTestCase, self).setUp() @@ -55,6 +73,7 @@ if bl: backend_inst.delete(backend_inst.list()) backend_inst.close() + self._check_setsid() def run_duplicity(self, options=[], current_time=None, fail=None, passphrase_input=[]): @@ -66,6 +85,8 @@ # console unexpectedly (like for gpg password or such). if platform.platform().startswith('Linux'): cmd_list = ['setsid'] + if self._setsid_w: + cmd_list.extend(["-w"]) else: cmd_list = [] cmd_list.extend(["duplicity"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/testing/gnupg/README new/duplicity-0.7.10/testing/gnupg/README --- old/duplicity-0.7.09/testing/gnupg/README 2014-04-28 14:35:53.000000000 +0200 +++ new/duplicity-0.7.10/testing/gnupg/README 2016-07-28 15:41:24.000000000 +0200 @@ -11,3 +11,5 @@ ID: 9B736B2A Name: Recipient Two <t...@example.com> No password + +See also the comments in gpg.conf. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.09/testing/gnupg/gpg.conf new/duplicity-0.7.10/testing/gnupg/gpg.conf --- old/duplicity-0.7.09/testing/gnupg/gpg.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/duplicity-0.7.10/testing/gnupg/gpg.conf 2016-07-28 15:41:24.000000000 +0200 @@ -0,0 +1,9 @@ +# gpg2 doesn't try all secrets by default, so add this option +# Otherwise the tests with hidden encryption key will fail +try-all-secrets + +# gpg2 2.1.13 has a bug that prevents the line above from working +# (https://bugs.gnupg.org/gnupg/issue1985) +# Uncomment the line below if you have gnupg2 2.1.13 +# (but that line will break gpg 1.x, so we can't use it by default) +#try-secret-key 96B629431B77DC52B1917B40839E6A2856538CCF