Add sysutils/duplicity-devel: Backup tool that uses librsync and GnuPG
This is the current development release. Duplicity backs directories by producing encrypted tar-format volumes and uploading them to a remote or local file server. Because duplicity uses librsync, the incremental archives are space efficient and only record the parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server. WWW: http://duplicity.nongnu.org
This commit is contained in:
parent
d16aa6e2f8
commit
144c7855e2
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=517676
@ -277,6 +277,7 @@
|
||||
SUBDIR += dunst
|
||||
SUBDIR += dupd
|
||||
SUBDIR += duplicity
|
||||
SUBDIR += duplicity-devel
|
||||
SUBDIR += duply
|
||||
SUBDIR += dupmerge
|
||||
SUBDIR += dvd+rw-tools
|
||||
|
92
sysutils/duplicity-devel/Makefile
Normal file
92
sysutils/duplicity-devel/Makefile
Normal file
@ -0,0 +1,92 @@
|
||||
# Created by: Gerhard Häring <gh@ghaering.de>
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= duplicity
|
||||
PORTVERSION= 0.8.07
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= http://launchpad.net/duplicity/0.8-series/${PORTVERSION}/+download/
|
||||
PKGNAMESUFFIX= -devel
|
||||
|
||||
MAINTAINER= dbaio@FreeBSD.org
|
||||
COMMENT= Backup tool that uses librsync and GnuPG
|
||||
|
||||
LICENSE= GPLv2+
|
||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||
|
||||
LIB_DEPENDS= librsync.so:net/librsync2
|
||||
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}fasteners>=0:devel/py-fasteners@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}paramiko>=0:security/py-paramiko@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}pexpect>0:misc/py-pexpect@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}urllib3>=0:net/py-urllib3@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}future>0:devel/py-future@${PY_FLAVOR}
|
||||
|
||||
USES= localbase python shebangfix
|
||||
USE_PYTHON= autoplist distutils noflavors
|
||||
USE_LDCONFIG= yes
|
||||
|
||||
CONFLICTS_INSTALL= duplicity
|
||||
|
||||
SHEBANG_FILES= bin/duplicity bin/rdiffdir
|
||||
|
||||
PORTDOCS= CHANGELOG COPYING README README-REPO README-LOG
|
||||
|
||||
OPTIONS_DEFINE= DOCS FTP FTPS GDOCS GIO NLS S3
|
||||
OPTIONS_GROUP= GPG
|
||||
OPTIONS_SINGLE= GPG
|
||||
OPTIONS_SINGLE_GPG= GNUPG GNUPG2
|
||||
OPTIONS_DEFAULT= FTP FTPS GNUPG2 S3
|
||||
FTP_DESC= FTP backend
|
||||
FTPS_DESC= FTPS backend
|
||||
GDOCS_DESC= Google Docs backend
|
||||
GIO_DESC= GIO backend
|
||||
GPG_DESC= GnuPG support
|
||||
GNUPG_DESC= Use GnuPG 1
|
||||
GNUPG2_DESC= Use GnuPG 2
|
||||
S3_DESC= Amazon S3 backend
|
||||
|
||||
FTP_RUN_DEPENDS= ncftp>=3.2.2:ftp/ncftp3
|
||||
FTPS_RUN_DEPENDS= lftp>=3.7.15:ftp/lftp
|
||||
GDOCS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gdata>0:devel/py-gdata@${PY_FLAVOR}
|
||||
GIO_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gobject>0:devel/py-gobject@${PY_FLAVOR} \
|
||||
dbus>0:devel/dbus
|
||||
GNUPG_RUN_DEPENDS= gnupg1>=1.4.7:security/gnupg1
|
||||
GNUPG2_RUN_DEPENDS= gpg2:security/gnupg
|
||||
NLS_USES= gettext
|
||||
S3_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto>=1.6b:devel/py-boto@${PY_FLAVOR}
|
||||
|
||||
post-patch:
|
||||
.for f in cfbackend _cf_cloudfiles _cf_pyrax
|
||||
@${RM} ${WRKSRC}/${PORTNAME}/backends/${f}.py
|
||||
.endfor
|
||||
|
||||
post-patch-NLS-off:
|
||||
@${REINPLACE_CMD} -e '55,63d' \
|
||||
${WRKSRC}/setup.py
|
||||
|
||||
post-patch-FTP-off:
|
||||
@${RM} ${WRKSRC}/${PORTNAME}/backends/ftpbackend.py
|
||||
|
||||
post-patch-FTPS-off:
|
||||
@${RM} ${WRKSRC}/${PORTNAME}/backends/ftpsbackend.py
|
||||
|
||||
post-patch-S3-off:
|
||||
.for f in botobackend _boto_multi _boto_single
|
||||
@${RM} ${WRKSRC}/${PORTNAME}/backends/${f}.py
|
||||
.endfor
|
||||
|
||||
post-patch-GDOCS-off:
|
||||
@${RM} ${WRKSRC}/${PORTNAME}/backends/gdocsbackend.py
|
||||
|
||||
post-patch-GIO-off:
|
||||
@${RM} ${WRKSRC}/${PORTNAME}/backends/giobackend.py
|
||||
|
||||
post-install:
|
||||
@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/duplicity/_librsync.so
|
||||
|
||||
post-install-DOCS-on:
|
||||
@${MKDIR} ${STAGEDIR}${DOCSDIR}
|
||||
${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|g} ${STAGEDIR}${DOCSDIR}
|
||||
|
||||
.include <bsd.port.mk>
|
3
sysutils/duplicity-devel/distinfo
Normal file
3
sysutils/duplicity-devel/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1573778409
|
||||
SHA256 (duplicity-0.8.07.tar.gz) = e961a108763fa45a9f9c8d13d9cd6dae518b68f09922a0371c9468b0f0c13781
|
||||
SIZE (duplicity-0.8.07.tar.gz) = 1848584
|
95
sysutils/duplicity-devel/files/patch-setup.py
Normal file
95
sysutils/duplicity-devel/files/patch-setup.py
Normal file
@ -0,0 +1,95 @@
|
||||
--- setup.py.orig 2019-07-25 14:48:21 UTC
|
||||
+++ setup.py
|
||||
@@ -23,7 +23,6 @@
|
||||
import sys
|
||||
import os
|
||||
from setuptools import setup, Extension
|
||||
-from setuptools.command.test import test
|
||||
from setuptools.command.install import install
|
||||
from setuptools.command.sdist import sdist
|
||||
from distutils.command.build_scripts import build_scripts
|
||||
@@ -50,12 +49,6 @@ if os.name == u'posix':
|
||||
data_files = [(u'share/man/man1',
|
||||
[u'bin/duplicity.1',
|
||||
u'bin/rdiffdir.1']),
|
||||
- (u'share/doc/duplicity-%s' % version_string,
|
||||
- [u'COPYING',
|
||||
- u'README',
|
||||
- u'README-REPO',
|
||||
- u'README-LOG',
|
||||
- u'CHANGELOG']),
|
||||
]
|
||||
|
||||
top_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
@@ -79,47 +72,9 @@ else:
|
||||
ext_modules = []
|
||||
|
||||
|
||||
-class TestCommand(test):
|
||||
-
|
||||
- def run(self):
|
||||
- # Make sure all modules are ready
|
||||
- build_cmd = self.get_finalized_command(u"build_py")
|
||||
- build_cmd.run()
|
||||
- # And make sure our scripts are ready
|
||||
- build_scripts_cmd = self.get_finalized_command(u"build_scripts")
|
||||
- build_scripts_cmd.run()
|
||||
-
|
||||
- # make symlinks for test data
|
||||
- if build_cmd.build_lib != top_dir:
|
||||
- for path in [u'testfiles.tar.gz', u'gnupg']:
|
||||
- src = os.path.join(top_dir, u'testing', path)
|
||||
- target = os.path.join(build_cmd.build_lib, u'testing', path)
|
||||
- try:
|
||||
- os.symlink(src, target)
|
||||
- except Exception:
|
||||
- pass
|
||||
-
|
||||
- os.environ[u'PATH'] = u"%s:%s" % (
|
||||
- os.path.abspath(build_scripts_cmd.build_dir),
|
||||
- os.environ.get(u'PATH'))
|
||||
-
|
||||
- test.run(self)
|
||||
-
|
||||
-
|
||||
class InstallCommand(install):
|
||||
|
||||
def run(self):
|
||||
- # Normally, install will call build(). But we want to delete the
|
||||
- # testing dir between building and installing. So we manually build
|
||||
- # and mark ourselves to skip building when we run() for real.
|
||||
- self.run_command(u'build')
|
||||
- self.skip_build = True
|
||||
-
|
||||
- # This should always be true, but just to make sure!
|
||||
- if self.build_lib != top_dir:
|
||||
- testing_dir = os.path.join(self.build_lib, u'testing')
|
||||
- os.system(u"rm -rf %s" % testing_dir)
|
||||
-
|
||||
install.run(self)
|
||||
|
||||
|
||||
@@ -186,21 +141,14 @@ setup(name=u"duplicity",
|
||||
url=u"http://duplicity.nongnu.org/index.html",
|
||||
packages=[u'duplicity',
|
||||
u'duplicity.backends',
|
||||
- u'duplicity.backends.pyrax_identity',
|
||||
- u'testing',
|
||||
- u'testing.functional',
|
||||
- u'testing.overrides',
|
||||
- u'testing.unit'],
|
||||
+ u'duplicity.backends.pyrax_identity'],
|
||||
package_dir={u"duplicity": u"duplicity",
|
||||
u"duplicity.backends": u"duplicity/backends", },
|
||||
ext_modules=ext_modules,
|
||||
scripts=[u'bin/rdiffdir', u'bin/duplicity'],
|
||||
data_files=data_files,
|
||||
install_requires=[u'fasteners', u'future'],
|
||||
- tests_require=[u'pytest', u'pytest-runner', u'fasteners', u'future', u'mock', u'pexpect'],
|
||||
- test_suite=u'testing',
|
||||
- cmdclass={u'test': TestCommand,
|
||||
- u'install': InstallCommand,
|
||||
+ cmdclass={u'install': InstallCommand,
|
||||
u'sdist': SDistCommand,
|
||||
u'build_scripts': BSCommand},
|
||||
classifiers=[u"Programming Language :: Python :: 2",
|
8
sysutils/duplicity-devel/pkg-descr
Normal file
8
sysutils/duplicity-devel/pkg-descr
Normal file
@ -0,0 +1,8 @@
|
||||
Duplicity backs directories by producing encrypted tar-format volumes and
|
||||
uploading them to a remote or local file server. Because duplicity uses
|
||||
librsync, the incremental archives are space efficient and only record the
|
||||
parts of files that have changed since the last backup. Because duplicity
|
||||
uses GnuPG to encrypt and/or sign these archives, they will be safe from
|
||||
spying and/or modification by the server.
|
||||
|
||||
WWW: http://duplicity.nongnu.org
|
29
sysutils/duplicity-devel/pkg-message
Normal file
29
sysutils/duplicity-devel/pkg-message
Normal file
@ -0,0 +1,29 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
The following backends are supported by duplicity itself, but will
|
||||
require manual installation of their respective dependencies because
|
||||
they are not yet available in the ports tree:
|
||||
|
||||
- The Dropbox backend
|
||||
- The HSI backend
|
||||
- The mega backend for mega.co.nz
|
||||
- The swift backend for OpenStack Object Storage
|
||||
- The tahoe backend for Tahoe-LAFS
|
||||
|
||||
Please refer to upstream duplicity documentation for information on
|
||||
the use of these backends.
|
||||
|
||||
|
||||
For gnupg 2 insert "pinentry-mode loopback" into ~/.gnupg/gpg.conf
|
||||
and "allow-loopback-pinentry" into ~/.gnupg/gpg-agent.conf
|
||||
|
||||
|
||||
|
||||
Some fixes related to gnupg handling were made in v0.7.12.
|
||||
|
||||
Please visit the following URL for more information:
|
||||
http://duplicity.nongnu.org/CHANGELOG
|
||||
EOM
|
||||
}
|
||||
]
|
@ -21,6 +21,8 @@ USES= python:2.7 shebangfix
|
||||
USE_PYTHON= autoplist distutils
|
||||
USE_LDCONFIG= yes
|
||||
|
||||
CONFLICTS_INSTALL= duplicity-devel
|
||||
|
||||
SHEBANG_FILES= bin/duplicity bin/rdiffdir
|
||||
|
||||
PORTDOCS= CHANGELOG COPYING README README-REPO README-LOG
|
||||
|
Loading…
Reference in New Issue
Block a user