diff options
Diffstat (limited to 'nonprism/duplicity')
-rw-r--r-- | nonprism/duplicity/PKGBUILD | 17 | ||||
-rw-r--r-- | nonprism/duplicity/gpg-encode.patch | 216 |
2 files changed, 9 insertions, 224 deletions
diff --git a/nonprism/duplicity/PKGBUILD b/nonprism/duplicity/PKGBUILD index fe6aaa967..aeeaa1b56 100644 --- a/nonprism/duplicity/PKGBUILD +++ b/nonprism/duplicity/PKGBUILD @@ -1,25 +1,26 @@ # Maintainer (Arch): Lukas Fleischer <lfleischer@archlinux.org> # Contributor (Arch): Kaiting Chen <kaitocracy@gmail.com> # Contributor (Arch): Aaron Schaefer <aaron@elasticdog.com> -# Maintainer: André Silva <emulatorman@hyperbola.info> +# Contributor: André Silva <emulatorman@hyperbola.info> + +# parabola changes and rationale: +# - removing recommendations for python2-boto python2-dropbox and python2-gdata pkgname=duplicity -pkgver=0.7.12 +pkgver=0.7.15 pkgrel=1.nonprism1 pkgdesc='A utility for encrypted, bandwidth-efficient backups using the rsync algorithm, without python2-boto, python2-dropbox and python2-gdata recommendation' -arch=('i686' 'x86_64' 'armv7h') +arch=('x86_64' 'i686' 'armv7h') url='http://www.nongnu.org/duplicity/' license=('GPL') -replaces=(${pkgname}-nonprism) -conflicts=(${pkgname}-nonprism) -depends=('gnupg' 'librsync' 'ncftp' 'python2-paramiko' 'python2-lockfile') +depends=('gnupg' 'librsync' 'ncftp' 'python2-paramiko' 'python2-fasteners') makedepends=('python2-setuptools') optdepends=('lftp: FTPS backend' 'python2-gobject: GIO backend' 'gvfs: GIO backend' 'rsync: rsync backend') source=("https://launchpad.net/$pkgname/0.7-series/${pkgver}/+download/$pkgname-$pkgver.tar.gz"{,.sig}) -md5sums=('29519f89f3e80d580c2b91a14be75cd9' +md5sums=('d106f93627973026707fdcaf37a578bd' 'SKIP') validpgpkeys=('9D95920CED4A8D5F8B086A9F8B6F8FF4E654E600') @@ -35,7 +36,7 @@ build() { package() { cd "${srcdir}/${pkgname}-${pkgver}" - + python2 setup.py install --root="$pkgdir" --optimize=1 # fix broken documentation permissions until upstream does (FS#27301) diff --git a/nonprism/duplicity/gpg-encode.patch b/nonprism/duplicity/gpg-encode.patch deleted file mode 100644 index f9159a3ca..000000000 --- a/nonprism/duplicity/gpg-encode.patch +++ /dev/null @@ -1,216 +0,0 @@ -=== modified file 'bin/duplicity' ---- bin/duplicity 2014-01-21 21:04:27 +0000 -+++ bin/duplicity 2014-02-05 02:57:13 +0000 -@@ -27,7 +27,7 @@ - # Please send mail to me or the mailing list if you find bugs or have - # any suggestions. - --import getpass, gzip, os, sys, time, types -+import gzip, os, sys, time, types - import traceback, platform, statvfs, resource, re - import threading - from datetime import datetime -@@ -37,9 +37,6 @@ - if os.path.exists(os.path.join(pwd, "../duplicity")): - sys.path.insert(0, os.path.abspath(os.path.join(pwd, "../."))) - --import gettext --gettext.install('duplicity', codeset='utf8') -- - from duplicity import log - log.setup() - -@@ -65,6 +62,13 @@ - # If exit_val is not None, exit with given value at end. - exit_val = None - -+def getpass_safe(message): -+ # getpass() in Python 2.x will call str() on our prompt. So we can't pass -+ # in non-ascii characters. -+ import getpass, locale -+ message = message.encode(locale.getpreferredencoding(), 'replace') -+ return getpass.getpass(message) -+ - def get_passphrase(n, action, for_signing = False): - """ - Check to make sure passphrase is indeed needed, then get -@@ -160,19 +164,19 @@ - if use_cache and globals.gpg_profile.signing_passphrase: - pass1 = globals.gpg_profile.signing_passphrase - else: -- pass1 = getpass.getpass(_("GnuPG passphrase for signing key:")+" ") -+ pass1 = getpass_safe(_("GnuPG passphrase for signing key:")+" ") - else: - if use_cache and globals.gpg_profile.passphrase: - pass1 = globals.gpg_profile.passphrase - else: -- pass1 = getpass.getpass(_("GnuPG passphrase:")+" ") -+ pass1 = getpass_safe(_("GnuPG passphrase:")+" ") - - if n == 1: - pass2 = pass1 - elif for_signing: -- pass2 = getpass.getpass(_("Retype passphrase for signing key to confirm: ")) -+ pass2 = getpass_safe(_("Retype passphrase for signing key to confirm: ")) - else: -- pass2 = getpass.getpass(_("Retype passphrase to confirm: ")) -+ pass2 = getpass_safe(_("Retype passphrase to confirm: ")) - - if not pass1 == pass2: - print _("First and second passphrases do not match! Please try again.") - -=== modified file 'bin/rdiffdir' ---- bin/rdiffdir 2013-12-27 06:39:00 +0000 -+++ bin/rdiffdir 2014-02-05 02:57:13 +0000 -@@ -27,9 +27,6 @@ - - import sys, getopt, gzip, os - --import gettext --gettext.install('duplicity', codeset='utf8') -- - from duplicity import diffdir - from duplicity import patchdir - from duplicity import log - -=== added directory 'testing/overrides' -=== added file 'testing/overrides/gettext.py' ---- testing/overrides/gettext.py 1970-01-01 00:00:00 +0000 -+++ testing/overrides/gettext.py 2014-02-05 02:57:13 +0000 -@@ -0,0 +1,34 @@ -+# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf8 -*- -+# -+# Copyright 2014 Michael Terry <mike@mterry.name> -+# -+# This file is part of duplicity. -+# -+# Duplicity is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation; either version 2 of the License, or (at your -+# option) any later version. -+# -+# Duplicity is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with duplicity; if not, write to the Free Software Foundation, -+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ -+# This is just a small override to the system gettext.py which allows us to -+# always return a string with fancy unicode characters, which will notify us -+# if we ever get a unicode->ascii translation by accident. -+ -+def translation(*args, **kwargs): -+ class Translation: -+ ZWSP = u"" # ZERO WIDTH SPACE, basically an invisible space separator -+ def install(self, **kwargs): -+ import __builtin__ -+ __builtin__.__dict__['_'] = lambda x: x + self.ZWSP -+ def ungettext(self, one, more, n): -+ if n == 1: return one + self.ZWSP -+ else: return more + self.ZWSP -+ return Translation() - -=== modified file 'testing/run-tests' ---- testing/run-tests 2011-11-24 01:49:53 +0000 -+++ testing/run-tests 2014-02-05 02:57:13 +0000 -@@ -25,9 +25,9 @@ - - THISDIR=$(pwd) - export TZ=US/Central --export LANG= -+export LANG=en_US.UTF-8 - # up for 'duplicity' module and here for 'helper.py' --export PYTHONPATH="$(dirname $THISDIR):$THISDIR/helpers" -+export PYTHONPATH="$THISDIR/overrides:$(dirname $THISDIR):$THISDIR/helpers" - export GNUPGHOME="$THISDIR/gnupg" - export PATH="$(dirname $THISDIR)/bin:$PATH" - - -=== modified file 'testing/tests/finaltest.py' ---- testing/tests/finaltest.py 2012-11-24 19:45:09 +0000 -+++ testing/tests/finaltest.py 2014-02-05 02:57:13 +0000 -@@ -20,6 +20,7 @@ - # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - import helper -+import pexpect - import sys, os, unittest - - import duplicity.backend -@@ -50,7 +51,8 @@ - """ - Test backup/restore using duplicity binary - """ -- def run_duplicity(self, arglist, options = [], current_time = None): -+ def run_duplicity(self, arglist, options = [], current_time = None, -+ passphrase_input = None): - """Run duplicity binary with given arguments and options""" - options.append("--archive-dir testfiles/cache") - cmd_list = ["duplicity"] -@@ -62,22 +64,23 @@ - cmd_list.extend(arglist) - cmdline = " ".join(cmd_list) - #print "Running '%s'." % cmdline -- if not os.environ.has_key('PASSPHRASE'): -+ if passphrase_input is None and not os.environ.has_key('PASSPHRASE'): - os.environ['PASSPHRASE'] = 'foobar' -- return_val = os.system(cmdline) -+ (output, return_val) = pexpect.run(cmdline, withexitstatus=True, -+ events={'passphrase.*:': passphrase_input}) - if return_val: - raise CmdError(return_val) - -- def backup(self, type, input_dir, options = [], current_time = None): -+ def backup(self, type, input_dir, options = [], **kwargs): - """Run duplicity backup to default directory""" - options = options[:] - if type == "full": - options.insert(0, 'full') - args = [input_dir, "'%s'" % backend_url] -- self.run_duplicity(args, options, current_time) -+ self.run_duplicity(args, options, **kwargs) - - def restore(self, file_to_restore = None, time = None, options = [], -- current_time = None): -+ **kwargs): - options = options[:] # just nip any mutability problems in bud - assert not os.system("rm -rf testfiles/restore_out") - args = ["'%s'" % backend_url, "testfiles/restore_out"] -@@ -85,17 +88,17 @@ - options.extend(['--file-to-restore', file_to_restore]) - if time: - options.extend(['--restore-time', str(time)]) -- self.run_duplicity(args, options, current_time) -+ self.run_duplicity(args, options, **kwargs) - - def verify(self, dirname, file_to_verify = None, time = None, options = [], -- current_time = None): -+ **kwargs): - options = ["verify"] + options[:] - args = ["'%s'" % backend_url, dirname] - if file_to_verify: - options.extend(['--file-to-restore', file_to_verify]) - if time: - options.extend(['--restore-time', str(time)]) -- self.run_duplicity(args, options, current_time) -+ self.run_duplicity(args, options, **kwargs) - - def deltmp(self): - """Delete temporary directories""" -@@ -255,6 +258,12 @@ - assert chain.start_time == 30000, chain.start_time - assert chain.end_time == 40000, chain.end_time - -+ def test_piped_password(self): -+ """Make sure that prompting for a password works""" -+ self.backup("full", "testfiles/empty_dir", -+ passphrase_input="foobar\nfoobar\n") -+ self.restore(passphrase_input="foobar\n") -+ - class FinalTest1(FinalTest, unittest.TestCase): - def setUp(self): - assert not os.system("tar xzf testfiles.tar.gz > /dev/null 2>&1") - |