git: 223e50238c56 - main - archivers/py-borgbackup: update to 1.2.2+man+test, preserve 1.1

From: Matthias Andree <mandree_at_FreeBSD.org>
Date: Sat, 03 Sep 2022 14:46:17 UTC
The branch main has been updated by mandree:

URL: https://cgit.FreeBSD.org/ports/commit/?id=223e50238c56ef71b07e048d6aadfcf6dab9e03a

commit 223e50238c56ef71b07e048d6aadfcf6dab9e03a
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2022-08-13 21:58:49 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2022-09-03 14:33:11 +0000

    archivers/py-borgbackup: update to 1.2.2+man+test, preserve 1.1
    
    Take maintainership, because original maintainer asked for a new
    maintainer, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264816#c10
    
    ¡Muchas gracias, José! Thanks for maintaining the port thus far.
    
    If there is a potential maintainer who is using BorgBackup at scale,
    I will be happy to pass maintainership on.
    
    Update to v1.2.2 [1, was for 1.2.1],
    preserve the earlier 1.1.18 version (also with manpages and self-tests added,
    hence bumping PORTREVISION) as py-borgbackup11, and document this in UPDATING.
    
    ChangeLog: https://www.borgbackup.org/releases/borg-1.2.html
    
    Add self-tests [1] to both 1.1 and 1.2, including
    - a smoke test in post-install in order to always run it
    - "make test" support (requires network access for tox)
    
    PR:             264816 [1]
    Reported by:    rob2g2-freebsd@bitbert.com [1]
    
    Add manual pages to both 1.1 and 1.2. [2]
    
    PR:             263269 [2]
    Reported by:    courtney.hicks1@icloud.com [2]
---
 UPDATING                              | 15 +++++++-
 archivers/Makefile                    |  1 +
 archivers/py-borgbackup/Makefile      | 48 +++++++++++++++++++++-----
 archivers/py-borgbackup/distinfo      |  6 ++--
 archivers/py-borgbackup/pkg-plist     | 35 +++++++++++++++++++
 archivers/py-borgbackup11/Makefile    | 65 +++++++++++++++++++++++++++++++++++
 archivers/py-borgbackup11/distinfo    |  3 ++
 archivers/py-borgbackup11/pkg-descr   | 11 ++++++
 archivers/py-borgbackup11/pkg-message | 28 +++++++++++++++
 archivers/py-borgbackup11/pkg-plist   | 33 ++++++++++++++++++
 10 files changed, 233 insertions(+), 12 deletions(-)

diff --git a/UPDATING b/UPDATING
index 9d3e4718cc98..5f0a3ad039c2 100644
--- a/UPDATING
+++ b/UPDATING
@@ -5,8 +5,21 @@ they are unavoidable.
 You should get into the habit of checking this file for changes each time
 you update your ports collection, before attempting any port upgrades.
 
+20220903:
+  AFFECTS: users of archivers/py-borgbackup
+  AUTHOR: mandree@FreeBSD.org
+
+  Borgbackup has been upgraded to version 1.2.  For users who you wish to
+  continue using version 1.1, use either of these commands for upgrading:
+
+  With binary packages through pkg:
+    pkg set -o archivers/py-borgbackup:archivers/py-borgbackup11
+    pkg upgrade
+  With portmaster or portupgrade (replace the command accordingly):
+    portmaster -o archivers/py-borgbackup11 archivers/py-borgbackup
+
 20220901:
-  AFFECTS: user of mail/rainloop-community
+  AFFECTS: users of mail/rainloop-community
   AUTHOR: yasu@FreeBSD.org
 
   Since 1.17.0 upstream distributes only one edition "lagacy" under MIT license
diff --git a/archivers/Makefile b/archivers/Makefile
index 39ea16b19713..95dad8fef030 100644
--- a/archivers/Makefile
+++ b/archivers/Makefile
@@ -178,6 +178,7 @@
     SUBDIR += pxz
     SUBDIR += py-acefile
     SUBDIR += py-borgbackup
+    SUBDIR += py-borgbackup11
     SUBDIR += py-brotli
     SUBDIR += py-brotlicffi
     SUBDIR += py-brotlipy
diff --git a/archivers/py-borgbackup/Makefile b/archivers/py-borgbackup/Makefile
index ec020d2659a9..ae58736a81ad 100644
--- a/archivers/py-borgbackup/Makefile
+++ b/archivers/py-borgbackup/Makefile
@@ -1,23 +1,30 @@
 PORTNAME=	borgbackup
-DISTVERSION=	1.1.18
-PORTREVISION=	1
+DISTVERSION=	1.2.2
 CATEGORIES=	archivers python
 MASTER_SITES=	CHEESESHOP
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 
-MAINTAINER=	jjuanino@gmail.com
+MAINTAINER=	mandree@FreeBSD.org
 COMMENT=	Deduplicating backup program
 
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=1.7:devel/py-setuptools_scm@${PY_FLAVOR}
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=1.7:devel/py-setuptools_scm@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}msgpack>=1.0:devel/py-msgpack@${PY_FLAVOR}
 LIB_DEPENDS=	liblz4.so:archivers/liblz4 \
 		libzstd.so:archivers/zstd \
 		libxxhash.so:devel/xxhash
-RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}packaging>=19.0:devel/py-packaging@${PY_FLAVOR}
-
-USES=		python ssl
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}packaging>=19.0:devel/py-packaging@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}msgpack>=1.0:devel/py-msgpack@${PY_FLAVOR}
+MAKE_ENV=	BORG_OPENSSL_PREFIX=${OPENSSLBASE}
+TEST_DEPENDS=	${RUN_DEPENDS} \
+		${PYTHON_PKGNAMEPREFIX}tox>3.2:devel/py-tox@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}virtualenv>=0:devel/py-virtualenv@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pkgconfig>=0:devel/py-pkgconfig@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} \
+		fakeroot:security/fakeroot
+USES=		pkgconfig python:3.8+ ssl
 USE_PYTHON=	autoplist distutils
 
 OPTIONS_DEFINE=		FUSE
@@ -26,9 +33,34 @@ OPTIONS_DEFAULT=	FUSE
 FUSE_DESC=	Support to mount locally borg backup files
 FUSE_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}llfuse>0:devel/py-llfuse@${PY_FLAVOR}
 
+_BORGENV=BORG_PASSPHRASE=secret123 PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR}
 post-install:
-	${SETENV} PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR} ${STAGEDIR}${PREFIX}/bin/borg -V
+	${MKDIR} ${STAGEDIR}${MAN1PREFIX}/share/man/man1/
+	${INSTALL_MAN} ${WRKSRC}/docs/man/* ${STAGEDIR}${MAN1PREFIX}/share/man/man1/
 	@${FIND} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/borg/ -name "*.so" \
 		-exec ${STRIP_CMD} {} \;
+	@${ECHO_MSG} "----> running borg smoke tests"
+	${SETENV} PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR} ${STAGEDIR}${PREFIX}/bin/borg -V
+	${RM} -r ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg init --encryption=repokey ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg key export ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg create ${WRKDIR}/borgrepo::test1 ${WRKSRC}
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg create ${WRKDIR}/borgrepo::test2 ${WRKSRC} ${STAGEDIR}
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --verify-data ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg info ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg prune --keep-last 1 ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --verify-data ${WRKDIR}/borgrepo
+	${ECHO_CMD} YES \
+	| ${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --repair ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg compact --progress ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --verify-data ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg extract --dry-run --progress ${WRKDIR}/borgrepo::test2
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg export-tar ${WRKDIR}/borgrepo::test2 - >/dev/null
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg list ${WRKDIR}/borgrepo
+	# long output - ${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg list ${WRKDIR}/borgrepo::test2 | ${GREP} -v ^d
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg info ${WRKDIR}/borgrepo
+
+do-test:
+	cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ${_BORGENV} tox-${PYTHON_VER} -e ${PY_FLAVOR} -vv
 
 .include <bsd.port.mk>
diff --git a/archivers/py-borgbackup/distinfo b/archivers/py-borgbackup/distinfo
index 7c1661cd8c31..78aa9228ee76 100644
--- a/archivers/py-borgbackup/distinfo
+++ b/archivers/py-borgbackup/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1654597105
-SHA256 (borgbackup-1.1.18.tar.gz) = 5cba5fe7db4d08944b467ec11efc017687a512b0d98ccf0ad1aa9c4329665275
-SIZE (borgbackup-1.1.18.tar.gz) = 3854385
+TIMESTAMP = 1662211963
+SHA256 (borgbackup-1.2.2.tar.gz) = d730687443f1beb602b1d72bae36318f6f9654818fcdc50458540ec579e57260
+SIZE (borgbackup-1.2.2.tar.gz) = 4042984
diff --git a/archivers/py-borgbackup/pkg-plist b/archivers/py-borgbackup/pkg-plist
new file mode 100644
index 000000000000..8582338afb36
--- /dev/null
+++ b/archivers/py-borgbackup/pkg-plist
@@ -0,0 +1,35 @@
+share/man/man1/borg-benchmark-crud.1.gz
+share/man/man1/borg-benchmark.1.gz
+share/man/man1/borg-break-lock.1.gz
+share/man/man1/borg-change-passphrase.1.gz
+share/man/man1/borg-check.1.gz
+share/man/man1/borg-common.1.gz
+share/man/man1/borg-compact.1.gz
+share/man/man1/borg-compression.1.gz
+share/man/man1/borg-config.1.gz
+share/man/man1/borg-create.1.gz
+share/man/man1/borg-delete.1.gz
+share/man/man1/borg-diff.1.gz
+share/man/man1/borg-export-tar.1.gz
+share/man/man1/borg-extract.1.gz
+share/man/man1/borg-import-tar.1.gz
+share/man/man1/borg-info.1.gz
+share/man/man1/borg-init.1.gz
+share/man/man1/borg-key-change-passphrase.1.gz
+share/man/man1/borg-key-export.1.gz
+share/man/man1/borg-key-import.1.gz
+share/man/man1/borg-key-migrate-to-repokey.1.gz
+share/man/man1/borg-key.1.gz
+share/man/man1/borg-list.1.gz
+share/man/man1/borg-mount.1.gz
+share/man/man1/borg-patterns.1.gz
+share/man/man1/borg-placeholders.1.gz
+share/man/man1/borg-prune.1.gz
+share/man/man1/borg-recreate.1.gz
+share/man/man1/borg-rename.1.gz
+share/man/man1/borg-serve.1.gz
+share/man/man1/borg-umount.1.gz
+share/man/man1/borg-upgrade.1.gz
+share/man/man1/borg-with-lock.1.gz
+share/man/man1/borg.1.gz
+share/man/man1/borgfs.1.gz
diff --git a/archivers/py-borgbackup11/Makefile b/archivers/py-borgbackup11/Makefile
new file mode 100644
index 000000000000..ec282fca19d4
--- /dev/null
+++ b/archivers/py-borgbackup11/Makefile
@@ -0,0 +1,65 @@
+PORTNAME=	borgbackup
+DISTVERSION=	1.1.18
+PORTREVISION=	2
+CATEGORIES=	archivers python
+MASTER_SITES=	CHEESESHOP
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX=	11
+
+MAINTAINER=	mandree@FreeBSD.org
+COMMENT=	Deduplicating backup program
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=1.7:devel/py-setuptools_scm@${PY_FLAVOR}
+LIB_DEPENDS=	liblz4.so:archivers/liblz4 \
+		libzstd.so:archivers/zstd \
+		libxxhash.so:devel/xxhash
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}packaging>=19.0:devel/py-packaging@${PY_FLAVOR}
+MAKE_ENV=	BORG_OPENSSL_PREFIX=${OPENSSLBASE}
+TEST_DEPENDS=	${RUN_DEPENDS} \
+		${PYTHON_PKGNAMEPREFIX}tox>3.2:devel/py-tox@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}virtualenv>=0:devel/py-virtualenv@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pkgconfig>=0:devel/py-pkgconfig@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} \
+		fakeroot:security/fakeroot
+USES=		pkgconfig python ssl
+USE_PYTHON=	autoplist distutils
+
+OPTIONS_DEFINE=		FUSE
+OPTIONS_DEFAULT=	FUSE
+
+FUSE_DESC=	Support to mount locally borg backup files
+FUSE_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}llfuse>0:devel/py-llfuse@${PY_FLAVOR}
+
+_BORGENV=BORG_PASSPHRASE=secret123 PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR}
+post-install:
+	${MKDIR} ${STAGEDIR}${MAN1PREFIX}/share/man/man1/
+	${INSTALL_MAN} ${WRKSRC}/docs/man/* ${STAGEDIR}${MAN1PREFIX}/share/man/man1/
+	@${FIND} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/borg/ -name "*.so" \
+		-exec ${STRIP_CMD} {} \;
+	@${ECHO_MSG} "----> running borg smoke tests"
+	${SETENV} PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR} ${STAGEDIR}${PREFIX}/bin/borg -V
+	${RM} -r ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg init --encryption=repokey ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg key export ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg create ${WRKDIR}/borgrepo::test1 ${WRKSRC}
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg create ${WRKDIR}/borgrepo::test2 ${WRKSRC} ${STAGEDIR}
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --verify-data ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg info ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg prune --keep-last 1 ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --verify-data ${WRKDIR}/borgrepo
+	${ECHO_CMD} YES \
+	| ${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --repair ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg check --verify-data ${WRKDIR}/borgrepo
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg extract --dry-run --progress ${WRKDIR}/borgrepo::test2
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg export-tar ${WRKDIR}/borgrepo::test2 - >/dev/null
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg list ${WRKDIR}/borgrepo
+	# long output - ${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg list ${WRKDIR}/borgrepo::test2 | ${GREP} -v ^d
+	${SETENV} ${_BORGENV} ${STAGEDIR}${PREFIX}/bin/borg info ${WRKDIR}/borgrepo
+
+do-test:
+	cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ${_BORGENV} tox-${PYTHON_VER} -e ${PY_FLAVOR} -vv
+
+.include <bsd.port.mk>
diff --git a/archivers/py-borgbackup11/distinfo b/archivers/py-borgbackup11/distinfo
new file mode 100644
index 000000000000..7c1661cd8c31
--- /dev/null
+++ b/archivers/py-borgbackup11/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1654597105
+SHA256 (borgbackup-1.1.18.tar.gz) = 5cba5fe7db4d08944b467ec11efc017687a512b0d98ccf0ad1aa9c4329665275
+SIZE (borgbackup-1.1.18.tar.gz) = 3854385
diff --git a/archivers/py-borgbackup11/pkg-descr b/archivers/py-borgbackup11/pkg-descr
new file mode 100644
index 000000000000..4bc8ec6bfb4d
--- /dev/null
+++ b/archivers/py-borgbackup11/pkg-descr
@@ -0,0 +1,11 @@
+[excerpt from borgbackup web site]
+
+BorgBackup (short: Borg) is a deduplicating backup program. Optionally, it
+supports compression and authenticated encryption.
+
+The main goal of Borg is to provide an efficient and secure way to backup data.
+The data deduplication technique used makes Borg suitable for daily backups
+since only changes are stored. The authenticated encryption technique makes it
+suitable for backups to not fully trusted targets.
+
+WWW: https://pypi.org/project/borgbackup/
diff --git a/archivers/py-borgbackup11/pkg-message b/archivers/py-borgbackup11/pkg-message
new file mode 100644
index 000000000000..8fcc0ba5f821
--- /dev/null
+++ b/archivers/py-borgbackup11/pkg-message
@@ -0,0 +1,28 @@
+[
+{ type: install
+  message: <<EOM
+In order to mount locally a remote archive or an entire repository as a FUSE
+filesystem, it is required to load fusefs module:
+
+# kldload fusefs
+
+To load the module at boot time, add
+
+fusefs_load="YES"
+
+to /boot/loader.conf by running:
+
+sysrc fusefs_load="YES"
+
+Also, if you plan to mount borg repositories as non root user, you need to run
+
+# sysctl vfs.usermount=1
+
+and add the line
+
+vfs.usermount=1
+
+to /etc/sysctl.conf to ensure the setting is loaded at boot time.
+EOM
+}
+]
diff --git a/archivers/py-borgbackup11/pkg-plist b/archivers/py-borgbackup11/pkg-plist
new file mode 100644
index 000000000000..a451c9b3f52b
--- /dev/null
+++ b/archivers/py-borgbackup11/pkg-plist
@@ -0,0 +1,33 @@
+share/man/man1/borg-benchmark-crud.1.gz
+share/man/man1/borg-benchmark.1.gz
+share/man/man1/borg-break-lock.1.gz
+share/man/man1/borg-change-passphrase.1.gz
+share/man/man1/borg-check.1.gz
+share/man/man1/borg-common.1.gz
+share/man/man1/borg-compression.1.gz
+share/man/man1/borg-config.1.gz
+share/man/man1/borg-create.1.gz
+share/man/man1/borg-delete.1.gz
+share/man/man1/borg-diff.1.gz
+share/man/man1/borg-export-tar.1.gz
+share/man/man1/borg-extract.1.gz
+share/man/man1/borg-info.1.gz
+share/man/man1/borg-init.1.gz
+share/man/man1/borg-key-change-passphrase.1.gz
+share/man/man1/borg-key-export.1.gz
+share/man/man1/borg-key-import.1.gz
+share/man/man1/borg-key-migrate-to-repokey.1.gz
+share/man/man1/borg-key.1.gz
+share/man/man1/borg-list.1.gz
+share/man/man1/borg-mount.1.gz
+share/man/man1/borg-patterns.1.gz
+share/man/man1/borg-placeholders.1.gz
+share/man/man1/borg-prune.1.gz
+share/man/man1/borg-recreate.1.gz
+share/man/man1/borg-rename.1.gz
+share/man/man1/borg-serve.1.gz
+share/man/man1/borg-umount.1.gz
+share/man/man1/borg-upgrade.1.gz
+share/man/man1/borg-with-lock.1.gz
+share/man/man1/borg.1.gz
+share/man/man1/borgfs.1.gz