summaryrefslogtreecommitdiff
path: root/community/duplicity
diff options
context:
space:
mode:
Diffstat (limited to 'community/duplicity')
-rw-r--r--community/duplicity/PKGBUILD53
-rw-r--r--community/duplicity/botobackend.patch13
-rw-r--r--community/duplicity/duplicity-0.6.17-fix-memleak.patch29
-rw-r--r--community/duplicity/u1backend.patch16
4 files changed, 111 insertions, 0 deletions
diff --git a/community/duplicity/PKGBUILD b/community/duplicity/PKGBUILD
new file mode 100644
index 000000000..56c51bbcf
--- /dev/null
+++ b/community/duplicity/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 92894 2013-06-18 09:01:17Z lfleischer $
+# Maintainer: Kaiting Chen <kaitocracy@gmail.com>
+# Contributor: Aaron Schaefer <aaron@elasticdog.com>
+
+pkgname=duplicity
+pkgver=0.6.21
+pkgrel=3
+pkgdesc='A utility for encrypted, bandwidth-efficient backups using the rsync algorithm.'
+arch=('i686' 'x86_64')
+url='http://www.nongnu.org/duplicity/'
+license=('GPL')
+depends=('gnupg' 'librsync' 'ncftp' 'python2-paramiko')
+optdepends=('lftp: FTPS backend'
+ 'python2-boto: Amazon S3 backend'
+ 'python2-gobject: GIO backend'
+ 'gvfs: GIO backend'
+ 'python2-gdata: Google Docs backend'
+ 'python2-httplib2: Ubuntu One backend'
+ 'python2-oauthlib: Ubuntu One backend'
+ 'rsync: rsync backend')
+source=("http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig}
+ "u1backend.patch")
+md5sums=('4ade1de475e0af64211bb6933b593057'
+ '3521d679ba7dff46653313aa3b3e6855'
+ 'b7aede10a3f5503ae4428a506b57486c')
+
+prepare() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Fix Ubuntu One backup (FS#35487, upstream revisions 912 and 913, will be fixed in 0.6.22).
+ patch -p0 duplicity/backends/u1backend.py ../u1backend.patch
+}
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # python2 fix
+ for file in $(find . -name '*.py' -print); do
+ sed -i 's_^#!.*/usr/bin/python$_#!/usr/bin/python2_' $file
+ sed -i 's_^#!.*/usr/bin/env.*python$_#!/usr/bin/env python2_' $file
+ done
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ python2 setup.py install --root="$pkgdir" --optimize=1
+
+ # fix broken documentation permissions until upstream does (FS#27301)
+ chmod 644 "$pkgdir/usr/share/man/man1/$pkgname.1"
+ chmod 644 "$pkgdir/usr/share/man/man1/rdiffdir.1"
+ chmod 644 "$pkgdir/usr/share/doc/$pkgname-$pkgver"/*
+}
diff --git a/community/duplicity/botobackend.patch b/community/duplicity/botobackend.patch
new file mode 100644
index 000000000..302e1e2b1
--- /dev/null
+++ b/community/duplicity/botobackend.patch
@@ -0,0 +1,13 @@
+=== modified file duplicity/backends/botobackend.py
+--- duplicity/backends/botobackend.py 2011-11-25 17:47:57 +0000
++++ duplicity/backends/botobackend.py 2011-12-01 16:15:25 +0000
+@@ -26,6 +26,6 @@
+ if sys.version_info[:2] < (2,6):
+ print "Sorry, S3 multiprocessing requires version 2.6 or later of python"
+ sys.exit(1)
+- import _boto_multi.py
++ import _boto_multi
+ else:
+- import _boto_single.py
++ import _boto_single
+
diff --git a/community/duplicity/duplicity-0.6.17-fix-memleak.patch b/community/duplicity/duplicity-0.6.17-fix-memleak.patch
new file mode 100644
index 000000000..1c4c8daff
--- /dev/null
+++ b/community/duplicity/duplicity-0.6.17-fix-memleak.patch
@@ -0,0 +1,29 @@
+=== modified file 'duplicity/util.py'
+--- duplicity/util.py 2011-08-23 18:14:17 +0000
++++ duplicity/util.py 2012-01-20 21:50:01 +0000
+@@ -71,6 +71,10 @@
+ else:
+ raise
+
++class BlackHoleList(list):
++ def append(self, x):
++ pass
++
+ class FakeTarFile:
+ debug = 0
+ def __iter__(self):
+@@ -83,7 +87,12 @@
+ # yet. So we want to ignore ReadError exceptions, which are used to signal
+ # this.
+ try:
+- return tarfile.TarFile("arbitrary", mode, fp)
++ tf = tarfile.TarFile("arbitrary", mode, fp)
++ # Now we cause TarFile to not cache TarInfo objects. It would end up
++ # consuming a lot of memory over the lifetime of our long-lasting
++ # signature files otherwise.
++ tf.members = BlackHoleList()
++ return tf
+ except tarfile.ReadError:
+ return FakeTarFile()
+
+
diff --git a/community/duplicity/u1backend.patch b/community/duplicity/u1backend.patch
new file mode 100644
index 000000000..7aba89fbb
--- /dev/null
+++ b/community/duplicity/u1backend.patch
@@ -0,0 +1,16 @@
+86a87,90
+>
+> if isinstance(body, file):
+> body.seek(0) # Go to the beginning of the file for the retry
+>
+108a113,115
+> if isinstance(body, file):
+> body.seek(0) # Go to the beginning of the file for the retry
+>
+209a217
+> size = os.path.getsize(source_path.name)
+213c221,222
+< headers = {"Content-Type": content_type}
+---
+> headers = {"Content-Length": str(size),
+> "Content-Type": content_type}