From 144c7855e252ca08a61b61670c967fcf5e5567a7 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio" Date: Fri, 15 Nov 2019 14:38:15 +0000 Subject: [PATCH] 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 --- sysutils/Makefile | 1 + sysutils/duplicity-devel/Makefile | 92 ++++++++++++++++++ sysutils/duplicity-devel/distinfo | 3 + sysutils/duplicity-devel/files/patch-setup.py | 95 +++++++++++++++++++ sysutils/duplicity-devel/pkg-descr | 8 ++ sysutils/duplicity-devel/pkg-message | 29 ++++++ sysutils/duplicity/Makefile | 2 + 7 files changed, 230 insertions(+) create mode 100644 sysutils/duplicity-devel/Makefile create mode 100644 sysutils/duplicity-devel/distinfo create mode 100644 sysutils/duplicity-devel/files/patch-setup.py create mode 100644 sysutils/duplicity-devel/pkg-descr create mode 100644 sysutils/duplicity-devel/pkg-message diff --git a/sysutils/Makefile b/sysutils/Makefile index 69840d2bbfb3..729360f1e301 100644 --- a/sysutils/Makefile +++ b/sysutils/Makefile @@ -277,6 +277,7 @@ SUBDIR += dunst SUBDIR += dupd SUBDIR += duplicity + SUBDIR += duplicity-devel SUBDIR += duply SUBDIR += dupmerge SUBDIR += dvd+rw-tools diff --git a/sysutils/duplicity-devel/Makefile b/sysutils/duplicity-devel/Makefile new file mode 100644 index 000000000000..82f7487ba8e2 --- /dev/null +++ b/sysutils/duplicity-devel/Makefile @@ -0,0 +1,92 @@ +# Created by: Gerhard Häring +# $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 diff --git a/sysutils/duplicity-devel/distinfo b/sysutils/duplicity-devel/distinfo new file mode 100644 index 000000000000..7bbcbbe41c44 --- /dev/null +++ b/sysutils/duplicity-devel/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1573778409 +SHA256 (duplicity-0.8.07.tar.gz) = e961a108763fa45a9f9c8d13d9cd6dae518b68f09922a0371c9468b0f0c13781 +SIZE (duplicity-0.8.07.tar.gz) = 1848584 diff --git a/sysutils/duplicity-devel/files/patch-setup.py b/sysutils/duplicity-devel/files/patch-setup.py new file mode 100644 index 000000000000..2abbf865a433 --- /dev/null +++ b/sysutils/duplicity-devel/files/patch-setup.py @@ -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", diff --git a/sysutils/duplicity-devel/pkg-descr b/sysutils/duplicity-devel/pkg-descr new file mode 100644 index 000000000000..282f8bf6530f --- /dev/null +++ b/sysutils/duplicity-devel/pkg-descr @@ -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 diff --git a/sysutils/duplicity-devel/pkg-message b/sysutils/duplicity-devel/pkg-message new file mode 100644 index 000000000000..18762697c34c --- /dev/null +++ b/sysutils/duplicity-devel/pkg-message @@ -0,0 +1,29 @@ +[ +{ type: install + message: <