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 :) > 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. 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. Index: Makefile =================================================================== RCS file: /cvs/ports/sysutils/duplicity/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- Makefile 29 Sep 2015 10:52:34 -0000 1.34 +++ Makefile 15 Dec 2015 21:08:43 -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 + # 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 -r1.18 distinfo --- distinfo 4 Jun 2015 04:19:12 -0000 1.18 +++ distinfo 15 Dec 2015 21:08:43 -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 -r1.6 patch-bin_duplicity --- patches/patch-bin_duplicity 14 Nov 2014 07:49:33 -0000 1.6 +++ patches/patch-bin_duplicity 15 Dec 2015 21:08:43 -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 13:03:39 2015 ++++ bin/duplicity Tue Dec 15 21:56:17 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 -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 15 Dec 2015 21:08:43 -0000 @@ -1,47 +1,38 @@ $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/ - .TP -@@ -874,9 +874,9 @@ This password is also used for passphrase-protected ss - .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 . +--- bin/duplicity.1.orig Mon Dec 7 13:03:39 2015 ++++ bin/duplicity.1 Tue Dec 15 21:14:11 2015 +@@ -1151,9 +1151,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 , +@@ -1764,7 +1764,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 +1776,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 +1789,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 +41,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 +2050,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-setup_py =================================================================== RCS file: /cvs/ports/sysutils/duplicity/patches/patch-setup_py,v retrieving revision 1.6 diff -u -p -r1.6 patch-setup_py --- patches/patch-setup_py 14 Nov 2014 07:49:33 -0000 1.6 +++ patches/patch-setup_py 15 Dec 2015 21:08:43 -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 -r1.14 PLIST --- pkg/PLIST 1 Nov 2014 10:28:15 -0000 1.14 +++ pkg/PLIST 15 Dec 2015 21:08:43 -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