On Thu, Dec 24, 2015 at 09:12:19PM +0100, viq wrote: > On Thu, 2015-12-24 at 20:42 +0100, viq wrote: > > On Tue, 2015-12-15 at 22:46 +0100, Daniel Jakots wrote: > > > On Sun, 13 Dec 2015 13:51:43 +0100, viq <vic...@gmail.com> wrote: > > > > > > > Here's a tarball of duplicity 0.7.06, so it's easier to import > > > > next > > > > to > > > > existing 0.6.x. I can provide it in a form of a diff as well. > > > > > > I guess that it would have been easier with a diff, but that's my > > > opinion :) > > > > Let's work with a diff then ;) > > > > > > Works for me for my simple usage (duply backups to hubic). > > > > I would very much like this version to be available, as this > > > > allows > > > > to > > > > backup to newer, cheaper backends than the 0.6 series. > > > > "But they say it's a development version!" - yes, they do. Well, > > > > they > > > > call it "stable development version", and call 0.6 deprecated and > > > > everywhere I saw tell people to actually use the 0.7 version. > > > > > > I approve of the move to the 0.7 series. > > > > > > I tried your archive. Between 0.6 and 0.7 they moved from > > > #!/usr/bin/env python to #!/usr/bin/env python2. The former is > > > changed > > > to #!/usr/local/bin/python2.7 but not the latter. As it doesn't > > > work > > > I > > > updated the patch patch-bin_duplicity and the Makefile for it, but > > > it's > > > more a workaround IMHO. > > > > Hm, I'm not sure what to do with this, especially as I'm not sure > > duplicity works with python3 > > > > > I tested the update with restoring backups made on 5.8 with -stable > > > duplicity on amd64 and also backupping and restoring, on amd64 and > > > i386 > > > works fine. > > > > > > Also FYI mandoc -Tlint duplicity.1 gives one error and a bunch of > > > warning. > > > > > > Updated diff, I hope I didn't miss anything from your update. > > > > You missed removal of patches/patch-duplicity_globals_py, attached > > patch fixing this. I'll try and look at the mandoc stuff now. > > And an updated diff, fixing the error and some of warnings. I'm not > sure how to go about the bunch of WARNING: skipping paragraph macro: PP > empty > -- > viq <vic...@gmail.com>
Does anyone have any objections? If not then I will commit. Small comment below. > Index: Makefile > =================================================================== > RCS file: /cvs/ports/sysutils/duplicity/Makefile,v > retrieving revision 1.34 > diff -u -p -u -d -r1.34 Makefile > --- Makefile 29 Sep 2015 10:52:34 -0000 1.34 > +++ Makefile 24 Dec 2015 20:00:19 -0000 > @@ -1,10 +1,12 @@ > # $OpenBSD: Makefile,v 1.34 2015/09/29 10:52:34 sthen Exp $ > > +# optional dependencies > +# py-pyrax > + > COMMENT = encrypted backup using rsync algorithm > > -MODPY_EGG_VERSION = 0.6.26 > +MODPY_EGG_VERSION = 0.7.06 > DISTNAME = duplicity-${MODPY_EGG_VERSION} > -REVISION = 0 > > CATEGORIES = sysutils > > @@ -22,19 +24,19 @@ WANTLIB += pthread rsync ${MODPY_WANTLIB > LIB_DEPENDS += net/librsync \ > ${MODPY_LIB_DEPENDS} > > -RUN_DEPENDS += net/py-boto \ > +RUN_DEPENDS += devel/py-pexpect \ > net/ncftp \ > + net/py-boto \ > + gnupg-<2:security/gnupg \ > sysutils/py-lockfile > > MAKE_ENV += LIBRSYNC_DIR=${LOCALBASE} > > +pre-build: > + ${SUBST_CMD} ${WRKSRC}/bin/duplicity > + Need to use MODPY_ADJ_FILES = bin/duplicity bin/rdiffdir > # Some regression tests are hanging > # TEST_DEPENDS = devel/py-mock > NO_TEST = Yes > - > -# XXX 600 mode prevents from reading the man page; > -# check if still required at next update > -post-extract: > - chmod 644 ${WRKSRC}/bin/*.1 > > .include <bsd.port.mk> > Index: distinfo > =================================================================== > RCS file: /cvs/ports/sysutils/duplicity/distinfo,v > retrieving revision 1.18 > diff -u -p -u -d -r1.18 distinfo > --- distinfo 4 Jun 2015 04:19:12 -0000 1.18 > +++ distinfo 24 Dec 2015 20:00:19 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (duplicity-0.6.26.tar.gz) = > i++KXYBbea4XflTUIVIji84bKq+a0y4DosOiDL1OB0o= > -SIZE (duplicity-0.6.26.tar.gz) = 1270436 > +SHA256 (duplicity-0.7.06.tar.gz) = > AHVZXtuJQ5nPAPrpFUquk6B+qtwDH+3l30zFlUNsf4w= > +SIZE (duplicity-0.7.06.tar.gz) = 1417252 > Index: patches/patch-bin_duplicity > =================================================================== > RCS file: /cvs/ports/sysutils/duplicity/patches/patch-bin_duplicity,v > retrieving revision 1.6 > diff -u -p -u -d -r1.6 patch-bin_duplicity > --- patches/patch-bin_duplicity 14 Nov 2014 07:49:33 -0000 1.6 > +++ patches/patch-bin_duplicity 24 Dec 2015 20:00:19 -0000 > @@ -1,13 +1,20 @@ > $OpenBSD: patch-bin_duplicity,v 1.6 2014/11/14 07:49:33 brad Exp $ > ---- bin/duplicity.orig Fri May 9 09:27:41 2014 > -+++ bin/duplicity Sat Aug 9 00:18:15 2014 > -@@ -1223,9 +1223,12 @@ def check_resources(action): > +--- bin/duplicity.orig Mon Dec 7 12:03:39 2015 > ++++ bin/duplicity Thu Dec 24 19:43:00 2015 > +@@ -1,4 +1,4 @@ > +-#!/usr/bin/env python2 > ++#!${MODPY_BIN} > + # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- > + # > + # duplicity -- Encrypted bandwidth efficient backup > +@@ -1257,10 +1257,12 @@ def check_resources(action): > log.ErrorCode.get_ulimit_failed) > maxopen = min([l for l in (soft, hard) if l > -1]) > if maxopen < 1024: > - log.FatalError(_("Max open files of %s is too low, should be >= > 1024.\n" > - "Use 'ulimit -n 1024' or higher to > correct.\n") % (maxopen,), > -- log.ErrorCode.maxopen_too_low) > +- log.ErrorCode.maxopen_too_low) > +- > + try: > + resource.setrlimit(resource.RLIMIT_NOFILE, (1024, hard)) > + except resource.error: > Index: patches/patch-bin_duplicity_1 > =================================================================== > RCS file: /cvs/ports/sysutils/duplicity/patches/patch-bin_duplicity_1,v > retrieving revision 1.2 > diff -u -p -u -d -r1.2 patch-bin_duplicity_1 > --- patches/patch-bin_duplicity_1 14 Nov 2014 07:49:33 -0000 1.2 > +++ patches/patch-bin_duplicity_1 24 Dec 2015 20:00:19 -0000 > @@ -1,47 +1,64 @@ > $OpenBSD: patch-bin_duplicity_1,v 1.2 2014/11/14 07:49:33 brad Exp $ > Document the ssh backend change from paramiko to pexpect. > ---- bin/duplicity.1.orig Fri May 9 09:27:41 2014 > -+++ bin/duplicity.1 Sat Aug 9 00:18:15 2014 > -@@ -108,7 +108,7 @@ There are two > - for scp/sftp/ssh access (also see > - .BR "A NOTE ON SSH BACKENDS" ). > - .TP > --.BR "ssh paramiko backend" " (enabled by default)" > -+.B "ssh paramiko backend" > - .B paramiko > - (SSH2 for python) > - - http://pypi.python.org/pypi/paramiko (downloads); > http://github.com/paramiko/paramiko (project page) > -@@ -117,7 +117,7 @@ for scp/sftp/ssh access (also see > - (Python Cryptography Toolkit) > - - http://www.dlitz.net/software/pycrypto/ > - .TP > --.B ssh pexpect backend > -+.BR "ssh pexpect backend" " (default on OpenBSD)" > - .B sftp/scp client binaries > - OpenSSH - http://www.openssh.com/ > +--- bin/duplicity.1.orig Mon Dec 7 12:03:39 2015 > ++++ bin/duplicity.1 Thu Dec 24 19:56:18 2015 > +@@ -432,7 +432,7 @@ should be given relative to the root of the directory > + > + > .TP > -@@ -874,9 +874,9 @@ This password is also used for passphrase-protected ss > +-.BI "--file-prefix, --file-prefix-manifest, --file-prefix-archive, > --file-prefix-signature > ++.BI "--file-prefix, --file-prefix-manifest, --file-prefix-archive, > --file-prefix-signature" > + Adds a prefix to all files, manifest files, archive files, and/or signature > files. > + > + The same set of prefixes must be passed in on backup and restore. > +@@ -850,7 +850,6 @@ currently supports only the > + or > + .B -oIdentityFile > + setting. If needed provide more host specific options via ssh_config file. > +-.RE > + > .TP > - .BI "--ssh-backend " backend > - Allows the explicit selection of a ssh backend. Defaults to > --.BR paramiko . > -+.BR "pexpect on OpenBSD" . > - Alternatively you might choose > --.BR pexpect . > -+.BR paramiko . > + .BI "--ssl-cacert-file " file > +@@ -1151,9 +1150,9 @@ scp://.. or > + .br > + sftp://user[:password]@other.host[:port]/[relative|/absolute]_path > + .PP > +-.BR "defaults" " are paramiko+scp:// and paramiko+sftp://" > ++.BR "defaults" " are pexpect+scp://, pexpect+sftp://, lftp+sftp://" > + .br > +-.BR "alternatively" " try pexpect+scp://, pexpect+sftp://, lftp+sftp://" > ++.BR "alternatively" " try paramiko+scp:// and paramiko+sftp://" > .br > See also > - .BR "A NOTE ON SSH BACKENDS" . > -@@ -1578,7 +1578,7 @@ backend allows to define > + .BR --ssh-askpass , > +@@ -1471,7 +1470,7 @@ which aren't followed by 'foo'. However, it wouldn't > + if /home/ben/1234567 existed. > + > + .SH A NOTE ON AZURE ACCESS > +-The Azure backend requires the Microsoft Azure Storage SDK for Python to be > ++The Azure backend requires the Microsoft Azure Storage SDK for Python to be > + installed on the system. > + See > + .B REQUIREMENTS > +@@ -1764,7 +1763,7 @@ about the requirements for a server to support > + .I scp/ssh > + access. > + To make it even more confusing the user can choose between several ssh > backends via a scheme prefix: > +-paramiko+ (default), pexpect+, lftp+... . > ++paramiko+, pexpect+ (default), lftp+... . > + .br > + paramiko & pexpect support > + .BR --use-scp , > +@@ -1776,7 +1775,7 @@ backend allows to define > .BR --scp-command " and" > .BR --sftp-command . > .PP > --.BR "SSH paramiko backend " "(selected by default)" > -+.B "SSH paramiko backend" > +-.BR "SSH paramiko backend " "(default)" > ++.BR "SSH paramiko backend" > is a complete reimplementation of ssh protocols natively in python. > Advantages > are speed and maintainability. Minor disadvantage is that extra packages are > needed as listed in > -@@ -1591,7 +1591,7 @@ mode ( > +@@ -1789,7 +1788,7 @@ mode ( > .I --use-scp > ) though scp access is used for put/get operations but listing is done via > ssh remote shell. > .PP > @@ -50,3 +67,12 @@ Document the ssh backend change from par > is the legacy ssh backend using the command line ssh binaries via pexpect. > Older versions used > .I scp > +@@ -2050,7 +2049,7 @@ see pydrive backend > + (Python Cryptography Toolkit) > + - http://www.dlitz.net/software/pycrypto/ > + .TP > +-.B ssh pexpect backend > ++.BR "ssh pexpect backend" " (default on OpenBSD)" > + .B sftp/scp client binaries > + OpenSSH - http://www.openssh.com/ > + .br > Index: patches/patch-duplicity_globals_py > =================================================================== > RCS file: patches/patch-duplicity_globals_py > diff -N patches/patch-duplicity_globals_py > --- patches/patch-duplicity_globals_py 14 Nov 2014 07:49:33 -0000 > 1.2 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,15 +0,0 @@ > -$OpenBSD: patch-duplicity_globals_py,v 1.2 2014/11/14 07:49:33 brad Exp $ > -Switch the default ssh backend from paramiko to pexpect. > ---- duplicity/globals.py.orig Fri May 9 09:27:41 2014 > -+++ duplicity/globals.py Sat Aug 9 00:18:15 2014 > -@@ -231,8 +231,8 @@ sftp_command = None > - # default to batch mode using public-key encryption > - ssh_askpass = False > - > --# default ssh backend is paramiko > --ssh_backend = "paramiko" > -+# default ssh backend is pexpect > -+ssh_backend = "pexpect" > - > - # user added ssh options > - ssh_options = "" > Index: patches/patch-setup_py > =================================================================== > RCS file: /cvs/ports/sysutils/duplicity/patches/patch-setup_py,v > retrieving revision 1.6 > diff -u -p -u -d -r1.6 patch-setup_py > --- patches/patch-setup_py 14 Nov 2014 07:49:33 -0000 1.6 > +++ patches/patch-setup_py 24 Dec 2015 20:00:19 -0000 > @@ -1,7 +1,7 @@ > $OpenBSD: patch-setup_py,v 1.6 2014/11/14 07:49:33 brad Exp $ > ---- setup.py.orig Fri May 9 09:27:41 2014 > -+++ setup.py Sat Aug 9 00:18:15 2014 > -@@ -45,17 +45,9 @@ if os.name == 'posix': > +--- setup.py.orig Mon Dec 7 13:03:39 2015 > ++++ setup.py Tue Dec 15 21:14:11 2015 > +@@ -47,15 +47,9 @@ if os.name == 'posix': > incdir_list = [os.path.join(LIBRSYNC_DIR, 'include')] > libdir_list = [os.path.join(LIBRSYNC_DIR, 'lib')] > > @@ -14,8 +14,6 @@ $OpenBSD: patch-setup_py,v 1.6 2014/11/1 > - 'README', > - 'README-REPO', > - 'README-LOG', > -- 'tarfile-LICENSE', > -- 'tarfile-CHANGES', > - 'CHANGELOG']), > ] > > Index: pkg/PLIST > =================================================================== > RCS file: /cvs/ports/sysutils/duplicity/pkg/PLIST,v > retrieving revision 1.14 > diff -u -p -u -d -r1.14 PLIST > --- pkg/PLIST 1 Nov 2014 10:28:15 -0000 1.14 > +++ pkg/PLIST 24 Dec 2015 20:00:19 -0000 > @@ -2,11 +2,12 @@ > bin/duplicity > bin/rdiffdir > lib/python${MODPY_VERSION}/site-packages/duplicity/ > -lib/python${MODPY_VERSION}/site-packages/duplicity-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/ > -lib/python${MODPY_VERSION}/site-packages/duplicity-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/PKG-INFO > -lib/python${MODPY_VERSION}/site-packages/duplicity-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/SOURCES.txt > -lib/python${MODPY_VERSION}/site-packages/duplicity-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/dependency_links.txt > -lib/python${MODPY_VERSION}/site-packages/duplicity-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/top_level.txt > +lib/python${MODPY_VERSION}/site-packages/duplicity-0.7.6-py${MODPY_VERSION}.egg-info/ > +lib/python${MODPY_VERSION}/site-packages/duplicity-0.7.6-py${MODPY_VERSION}.egg-info/PKG-INFO > +lib/python${MODPY_VERSION}/site-packages/duplicity-0.7.6-py${MODPY_VERSION}.egg-info/SOURCES.txt > +lib/python${MODPY_VERSION}/site-packages/duplicity-0.7.6-py${MODPY_VERSION}.egg-info/dependency_links.txt > +lib/python${MODPY_VERSION}/site-packages/duplicity-0.7.6-py${MODPY_VERSION}.egg-info/requires.txt > +lib/python${MODPY_VERSION}/site-packages/duplicity-0.7.6-py${MODPY_VERSION}.egg-info/top_level.txt > lib/python${MODPY_VERSION}/site-packages/duplicity/__init__.py > lib/python${MODPY_VERSION}/site-packages/duplicity/__init__.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/_librsync.so > @@ -25,44 +26,63 @@ lib/python${MODPY_VERSION}/site-packages > > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_cf_cloudfiles.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_cf_pyrax.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_cf_pyrax.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_ssh_paramiko.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_ssh_paramiko.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_ssh_pexpect.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/_ssh_pexpect.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/azurebackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/azurebackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/b2backend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/b2backend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/botobackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/botobackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/cfbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/cfbackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/copycombackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/copycombackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/dpbxbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/dpbxbackend.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ftpbackend.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ftpbackend.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ftpsbackend.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ftpsbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/gdocsbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/gdocsbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/giobackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/giobackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/hsibackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/hsibackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/hubicbackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/hubicbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/imapbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/imapbackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/lftpbackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/lftpbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/localbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/localbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/megabackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/megabackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/multibackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/multibackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ncftpbackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ncftpbackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/onedrivebackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/onedrivebackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/par2backend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/par2backend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pydrivebackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pydrivebackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pyrax_identity/ > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pyrax_identity/__init__.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pyrax_identity/__init__.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pyrax_identity/hubic.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/pyrax_identity/hubic.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/rsyncbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/rsyncbackend.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/sshbackend.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/sshbackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ssh_paramiko_backend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ssh_paramiko_backend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ssh_pexpect_backend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/ssh_pexpect_backend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/swiftbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/swiftbackend.pyc > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/sxbackend.py > +lib/python${MODPY_VERSION}/site-packages/duplicity/backends/sxbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/tahoebackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/tahoebackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/webdavbackend.py > lib/python${MODPY_VERSION}/site-packages/duplicity/backends/webdavbackend.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/~par2wrapperbackend.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/backends/~par2wrapperbackend.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/cached_ops.py > lib/python${MODPY_VERSION}/site-packages/duplicity/cached_ops.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/collections.py > @@ -103,24 +123,18 @@ lib/python${MODPY_VERSION}/site-packages > lib/python${MODPY_VERSION}/site-packages/duplicity/patchdir.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/path.py > lib/python${MODPY_VERSION}/site-packages/duplicity/path.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/pexpect.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/pexpect.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/progress.py > lib/python${MODPY_VERSION}/site-packages/duplicity/progress.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/robust.py > lib/python${MODPY_VERSION}/site-packages/duplicity/robust.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/selection.py > lib/python${MODPY_VERSION}/site-packages/duplicity/selection.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/static.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/static.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/statistics.py > lib/python${MODPY_VERSION}/site-packages/duplicity/statistics.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/tarfile.py > lib/python${MODPY_VERSION}/site-packages/duplicity/tarfile.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/tempdir.py > lib/python${MODPY_VERSION}/site-packages/duplicity/tempdir.pyc > -lib/python${MODPY_VERSION}/site-packages/duplicity/urlparse_2_5.py > -lib/python${MODPY_VERSION}/site-packages/duplicity/urlparse_2_5.pyc > lib/python${MODPY_VERSION}/site-packages/duplicity/util.py > lib/python${MODPY_VERSION}/site-packages/duplicity/util.pyc > @man man/man1/duplicity.1 -- Alexandr Shadchin