Fri Apr 3 09:43:47 2015 UTC ()
Import py34-attic-0.14 as devel/py-attic, packaged for wip by myself.
Attic is a deduplicating backup program. The main goal of Attic is
to provide an efficient and secure way to backup data. The data
deduplication technique used makes Attic suitable for daily backups
since only changes are stored.
(wiz)
diff -r0 -r1.1 pkgsrc/devel/py-attic/ALTERNATIVES
diff -r0 -r1.1 pkgsrc/devel/py-attic/DESCR
diff -r0 -r1.1 pkgsrc/devel/py-attic/Makefile
diff -r0 -r1.1 pkgsrc/devel/py-attic/PLIST
diff -r0 -r1.1 pkgsrc/devel/py-attic/distinfo
diff -r0 -r1.1 pkgsrc/devel/py-attic/patches/patch-attic_platform.py
diff -r0 -r1.1 pkgsrc/devel/py-attic/patches/patch-attic_testsuite_archiver.py
diff -r0 -r1.1 pkgsrc/devel/py-attic/patches/patch-attic_xattr.py
bin/attic bin/attic@PYVERSSUFFIX@
Attic is a deduplicating backup program. The main goal of Attic is
to provide an efficient and secure way to backup data. The data
deduplication technique used makes Attic suitable for daily backups
since only changes are stored.
# $NetBSD: Makefile,v 1.1 2015/04/03 09:43:47 wiz Exp $
DISTNAME= Attic-0.14
PKGNAME= ${PYPKGPREFIX}-${DISTNAME:S/A/a/}
CATEGORIES= sysutils
MASTER_SITES= https://pypi.python.org/packages/source/A/Attic/
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://attic-backup.org/
COMMENT= Deduplicating backup program
LICENSE= modified-bsd
DEPENDS+= ${PYPKGPREFIX}-msgpack-[0-9]*:../../devel/py-msgpack
PYTHON_VERSIONS_INCOMPATIBLE= 26 27
PLIST_SUBST+= PYVERSSUFFIX=${PYVERSSUFFIX}
post-install:
cd ${DESTDIR}${PREFIX}/bin && mv attic attic${PYVERSSUFFIX}
.include "../../lang/python/distutils.mk"
.include "../../mk/bsd.pkg.mk"
@comment $NetBSD: PLIST,v 1.1 2015/04/03 09:43:47 wiz Exp $
bin/attic${PYVERSSUFFIX}
${PYSITELIB}/${EGG_FILE}/PKG-INFO
${PYSITELIB}/${EGG_FILE}/SOURCES.txt
${PYSITELIB}/${EGG_FILE}/dependency_links.txt
${PYSITELIB}/${EGG_FILE}/requires.txt
${PYSITELIB}/${EGG_FILE}/top_level.txt
${PYSITELIB}/attic/__init__.py
${PYSITELIB}/attic/__init__.pyc
${PYSITELIB}/attic/__init__.pyo
${PYSITELIB}/attic/_version.py
${PYSITELIB}/attic/_version.pyc
${PYSITELIB}/attic/_version.pyo
${PYSITELIB}/attic/archive.py
${PYSITELIB}/attic/archive.pyc
${PYSITELIB}/attic/archive.pyo
${PYSITELIB}/attic/archiver.py
${PYSITELIB}/attic/archiver.pyc
${PYSITELIB}/attic/archiver.pyo
${PYSITELIB}/attic/cache.py
${PYSITELIB}/attic/cache.pyc
${PYSITELIB}/attic/cache.pyo
${PYSITELIB}/attic/chunker.so
${PYSITELIB}/attic/crypto.so
${PYSITELIB}/attic/fuse.py
${PYSITELIB}/attic/fuse.pyc
${PYSITELIB}/attic/fuse.pyo
${PYSITELIB}/attic/hashindex.so
${PYSITELIB}/attic/helpers.py
${PYSITELIB}/attic/helpers.pyc
${PYSITELIB}/attic/helpers.pyo
${PYSITELIB}/attic/key.py
${PYSITELIB}/attic/key.pyc
${PYSITELIB}/attic/key.pyo
${PYSITELIB}/attic/lrucache.py
${PYSITELIB}/attic/lrucache.pyc
${PYSITELIB}/attic/lrucache.pyo
${PYSITELIB}/attic/platform.py
${PYSITELIB}/attic/platform.pyc
${PYSITELIB}/attic/platform.pyo
${PYSITELIB}/attic/remote.py
${PYSITELIB}/attic/remote.pyc
${PYSITELIB}/attic/remote.pyo
${PYSITELIB}/attic/repository.py
${PYSITELIB}/attic/repository.pyc
${PYSITELIB}/attic/repository.pyo
${PYSITELIB}/attic/testsuite/__init__.py
${PYSITELIB}/attic/testsuite/__init__.pyc
${PYSITELIB}/attic/testsuite/__init__.pyo
${PYSITELIB}/attic/testsuite/archive.py
${PYSITELIB}/attic/testsuite/archive.pyc
${PYSITELIB}/attic/testsuite/archive.pyo
${PYSITELIB}/attic/testsuite/archiver.py
${PYSITELIB}/attic/testsuite/archiver.pyc
${PYSITELIB}/attic/testsuite/archiver.pyo
${PYSITELIB}/attic/testsuite/chunker.py
${PYSITELIB}/attic/testsuite/chunker.pyc
${PYSITELIB}/attic/testsuite/chunker.pyo
${PYSITELIB}/attic/testsuite/crypto.py
${PYSITELIB}/attic/testsuite/crypto.pyc
${PYSITELIB}/attic/testsuite/crypto.pyo
${PYSITELIB}/attic/testsuite/hashindex.py
${PYSITELIB}/attic/testsuite/hashindex.pyc
${PYSITELIB}/attic/testsuite/hashindex.pyo
${PYSITELIB}/attic/testsuite/helpers.py
${PYSITELIB}/attic/testsuite/helpers.pyc
${PYSITELIB}/attic/testsuite/helpers.pyo
${PYSITELIB}/attic/testsuite/key.py
${PYSITELIB}/attic/testsuite/key.pyc
${PYSITELIB}/attic/testsuite/key.pyo
${PYSITELIB}/attic/testsuite/lrucache.py
${PYSITELIB}/attic/testsuite/lrucache.pyc
${PYSITELIB}/attic/testsuite/lrucache.pyo
${PYSITELIB}/attic/testsuite/mock.py
${PYSITELIB}/attic/testsuite/mock.pyc
${PYSITELIB}/attic/testsuite/mock.pyo
${PYSITELIB}/attic/testsuite/platform.py
${PYSITELIB}/attic/testsuite/platform.pyc
${PYSITELIB}/attic/testsuite/platform.pyo
${PYSITELIB}/attic/testsuite/repository.py
${PYSITELIB}/attic/testsuite/repository.pyc
${PYSITELIB}/attic/testsuite/repository.pyo
${PYSITELIB}/attic/testsuite/run.py
${PYSITELIB}/attic/testsuite/run.pyc
${PYSITELIB}/attic/testsuite/run.pyo
${PYSITELIB}/attic/testsuite/xattr.py
${PYSITELIB}/attic/testsuite/xattr.pyc
${PYSITELIB}/attic/testsuite/xattr.pyo
${PYSITELIB}/attic/xattr.py
${PYSITELIB}/attic/xattr.pyc
${PYSITELIB}/attic/xattr.pyo
$NetBSD: distinfo,v 1.1 2015/04/03 09:43:47 wiz Exp $
SHA1 (Attic-0.14.tar.gz) = f76df257c86f89eb973f88dba53166997fb8fbf1
RMD160 (Attic-0.14.tar.gz) = 1fef1993c5964adb1a5c90ef39b101607c2d05b5
Size (Attic-0.14.tar.gz) = 233837 bytes
SHA1 (patch-attic_platform.py) = 1d8aaf58f1e0edad13a0fbb9a93c092eadc035f4
SHA1 (patch-attic_testsuite_archiver.py) = 1fb19c1ee64505b2b73d44d556623fe8f8315016
SHA1 (patch-attic_xattr.py) = 69ea74cef7e9e67398ad4a95a49fcfd2f7b3debe
$NetBSD: patch-attic_platform.py,v 1.1 2015/04/03 09:43:47 wiz Exp $
Make xattr support optional.
https://github.com/jborg/attic/pull/235
--- attic/platform.py.orig 2014-05-03 13:16:06.000000000 +0000
+++ attic/platform.py
@@ -9,9 +9,13 @@ elif platform == 'FreeBSD':
elif platform == 'Darwin':
from attic.platform_darwin import acl_get, acl_set, API_VERSION
else:
- API_VERSION = 1
+ # this is a dummy acl interface for platforms for which we do not have
+ # a real implementation (or which do not support acls at all).
- def acl_get(path, item, numeric_owner=False):
+ API_VERSION = 2
+
+ def acl_get(path, item, st, numeric_owner=False):
pass
+
def acl_set(path, item, numeric_owner=False):
pass
$NetBSD: patch-attic_testsuite_archiver.py,v 1.1 2015/04/03 09:43:47 wiz Exp $
Make xattr support optional.
https://github.com/jborg/attic/pull/235
--- attic/testsuite/archiver.py.orig 2014-10-27 20:54:50.000000000 +0000
+++ attic/testsuite/archiver.py
@@ -140,9 +140,14 @@ class ArchiverTestCase(ArchiverTestCaseB
os.path.join(self.input_path, 'hardlink'))
# Symlink
os.symlink('somewhere', os.path.join(self.input_path, 'link1'))
- if xattr.is_enabled():
+ if xattr.is_enabled(self.input_path):
xattr.setxattr(os.path.join(self.input_path, 'file1'), 'user.foo', b'bar')
- xattr.setxattr(os.path.join(self.input_path, 'link1'), 'user.foo_symlink', b'bar_symlink', follow_symlinks=False)
+ # XXX this always fails for me
+ # ubuntu 14.04, on a TMP dir filesystem with user_xattr, using fakeroot
+ # same for newer ubuntu and centos.
+ # if this is supported just on specific platform, platform should be checked first,
+ # so that the test setup for all tests using it does not fail here always for others.
+ #xattr.setxattr(os.path.join(self.input_path, 'link1'), 'user.foo_symlink', b'bar_symlink', follow_symlinks=False)
# FIFO node
os.mkfifo(os.path.join(self.input_path, 'fifo1'))
if has_lchflags:
$NetBSD: patch-attic_xattr.py,v 1.1 2015/04/03 09:43:47 wiz Exp $
Make xattr support optional.
https://github.com/jborg/attic/pull/235
--- attic/xattr.py.orig 2014-12-14 13:28:33.000000000 +0000
+++ attic/xattr.py
@@ -8,10 +8,10 @@ from ctypes import CDLL, create_string_b
from ctypes.util import find_library
-def is_enabled():
+def is_enabled(path=None):
"""Determine if xattr is enabled on the filesystem
"""
- with tempfile.NamedTemporaryFile() as fd:
+ with tempfile.NamedTemporaryFile(dir=path) as fd:
try:
setxattr(fd.fileno(), 'user.name', b'value')
except OSError:
@@ -248,4 +248,14 @@ elif sys.platform.startswith('freebsd'):
_check(func(path, EXTATTR_NAMESPACE_USER, name, value, len(value) if value else 0), path)
else:
- raise Exception('Unsupported platform: %s' % sys.platform)
+ # this is a dummy xattr interface for platforms for which we do not have
+ # a real implementation (or which do not support xattr at all).
+
+ def listxattr(path, *, follow_symlinks=True):
+ return []
+
+ def getxattr(path, name, *, follow_symlinks=True):
+ return
+
+ def setxattr(path, name, value, *, follow_symlinks=True):
+ return