This is my first time ever working with source ports, so I don't claim to know what I'm doing but I tried my best to follow the ports guide. I also don't really know what I'm doing with python, but I think I got it done right and it appears to be working as expected with my limited testing, so I'm hopeful it's correct. I emailed the listed maintainer of the rdiff-backup port last week and haven't heard anything, so I don't know if this is still maintained or not. I don't really have time to be a package maintainer (nor do I know the ins and outs of doing so, especially for OpenBSD), but since it seems that the previous version of this package hasn't changed in a long time, maybe it doesn't need active "maintaining" per se...
Anyway, here's the patch to the rdiff-backup port to build rdiff-backup-2.0.5, which is needed to get away from python 2.7 if you want to use rdiff-backup. I haven't changed the maintainer email address on it yet as I don't want to step on toes, but I suspect that may be inevitable. I'm not sure what the next steps are, but I figure if I'm going to figure out how to make it work for myself, I might as well give back to the community as well. Thanks, Josh Joshua Megerman Sr. Systems Engineer IWCO Direct diff -urN rdiff-backup.orig/Makefile rdiff-backup/Makefile --- rdiff-backup.orig/Makefile Fri Mar 11 14:57:55 2022 +++ rdiff-backup/Makefile Fri Apr 29 10:47:33 2022 @@ -1,8 +1,8 @@ COMMENT = incremental backup -MODPY_EGG_VERSION = 1.2.8 +MODPY_EGG_VERSION = 2.0.5 DISTNAME = rdiff-backup-${MODPY_EGG_VERSION} -REVISION = 8 +REVISION = 0 CATEGORIES = sysutils HOMEPAGE = http://www.nongnu.org/rdiff-backup/ @@ -16,10 +16,14 @@ LIB_DEPENDS += net/librsync -MASTER_SITES = ${MASTER_SITE_SAVANNAH:=rdiff-backup/} +GH_ACCOUNT = rdiff-backup +GH_PROJECT = rdiff-backup +GH_TAGNAME = v2.0.5 +MASTER_SITES = ${MASTER_SITES_GITHUB} MODULES = lang/python -MODPY_VERSION = ${MODPY_DEFAULT_VERSION_2} +MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} +MODPY_SETUPTOOLS = Yes NO_TEST = Yes diff -urN rdiff-backup.orig/distinfo rdiff-backup/distinfo --- rdiff-backup.orig/distinfo Sat Jan 17 22:15:14 2015 +++ rdiff-backup/distinfo Thu Apr 28 16:25:11 2022 @@ -1,2 +1,2 @@ -SHA256 (rdiff-backup-1.2.8.tar.gz) = DZGoW0CUkRb6iq8V2hZcNKLRVEmzy+AcgCY5ExCslds= -SIZE (rdiff-backup-1.2.8.tar.gz) = 196526 +SHA256 (rdiff-backup-2.0.5.tar.gz) = /Trz05/pHvKygeapBkRREsW3GGQOSQyLb4OolgMYNSs= +SIZE (rdiff-backup-2.0.5.tar.gz) = 441475 diff -urN rdiff-backup.orig/patches/patch-_librsyncmodule_c rdiff-backup/patches/patch-_librsyncmodule_c --- rdiff-backup.orig/patches/patch-_librsyncmodule_c Fri Mar 11 14:57:55 2022 +++ rdiff-backup/patches/patch-_librsyncmodule_c Wed Dec 31 19:00:00 1969 @@ -1,22 +0,0 @@ -Fix with librsync v1.0.0; similar to -https://bugs.launchpad.net/duplicity/+bug/1416344 - -This uses the backwards-compatible format that uses the insecure -truncated MD4 hash. - ---- _librsyncmodule.c.orig Wed Aug 19 20:33:42 2015 -+++ _librsyncmodule.c Wed Aug 19 20:34:42 2015 -@@ -59,8 +59,13 @@ _librsync_new_sigmaker(PyObject* self, PyObject* args) - if (sm == NULL) return NULL; - sm->x_attr = NULL; - -+#ifdef RS_DEFAULT_STRONG_LEN - sm->sig_job = rs_sig_begin((size_t)blocklen, - (size_t)RS_DEFAULT_STRONG_LEN); -+#else -+ sm->sig_job = rs_sig_begin((size_t)blocklen, -+ (size_t)8, RS_MD4_SIG_MAGIC); -+#endif - return (PyObject*)sm; - } - diff -urN rdiff-backup.orig/patches/patch-rdiff_backup_SetConnections_py rdiff-backup/patches/patch-rdiff_backup_SetConnections_py --- rdiff-backup.orig/patches/patch-rdiff_backup_SetConnections_py Fri Mar 11 14:57:55 2022 +++ rdiff-backup/patches/patch-rdiff_backup_SetConnections_py Wed Dec 31 19:00:00 1969 @@ -1,18 +0,0 @@ -Bugfix: DeprecationWarning: os.popen2 is deprecated -cf http://bugs.gentoo.org/attachment.cgi?id=216585&action=view - ---- rdiff_backup/SetConnections.py.orig Mon Mar 16 14:36:21 2009 -+++ rdiff_backup/SetConnections.py Wed Aug 19 20:31:28 2015 -@@ -135,10 +135,10 @@ def init_connection(remote_cmd): - if not remote_cmd: return Globals.local_connection - - Log("Executing " + remote_cmd, 4) -- if os.name == "nt": -+ if map(int, sys.version.split()[0].split('.')[:2]) >= [2, 6]: - import subprocess - try: -- process = subprocess.Popen(remote_cmd, shell=False, bufsize=0, -+ process = subprocess.Popen(remote_cmd, shell=True, bufsize=0, - stdin=subprocess.PIPE, - stdout=subprocess.PIPE) - (stdin, stdout) = (process.stdin, process.stdout) diff -urN rdiff-backup.orig/patches/patch-setup_py rdiff-backup/patches/patch-setup_py --- rdiff-backup.orig/patches/patch-setup_py Fri Mar 11 14:57:55 2022 +++ rdiff-backup/patches/patch-setup_py Fri Apr 29 11:00:54 2022 @@ -1,34 +1,55 @@ ---- setup.py.orig Mon Mar 16 15:36:21 2009 -+++ setup.py Thu Feb 11 14:29:01 2010 -@@ -58,6 +58,10 @@ if os.name == 'nt': - 'zipfile': None - }) +--- setup.py.orig Sat Jul 25 04:53:18 2020 ++++ setup.py Fri Apr 29 11:00:32 2022 +@@ -133,10 +133,12 @@ + log.info("removing '%s'", template[1]) + super().run() +LOCALBASE = os.getenv("LOCALBASE", "/usr/local") +include_dirs = ["%s/include" % LOCALBASE] +library_dirs = ["%s/lib" % LOCALBASE] -+ - setup(name="rdiff-backup", - version=version_string, - description="Local/remote mirroring+incremental backup", -@@ -68,14 +72,13 @@ setup(name="rdiff-backup", - ext_modules = [Extension("rdiff_backup.C", ["cmodule.c"]), - Extension("rdiff_backup._librsync", - ["_librsyncmodule.c"], -- include_dirs=incdir_list, -- library_dirs=libdir_list, -- libraries=libname, -- extra_link_args=lflags_arg)], -+ libraries=["rsync"], -+ include_dirs=include_dirs, -+ library_dirs=library_dirs)], - scripts = ['rdiff-backup', 'rdiff-backup-statistics'], -- data_files = [('share/man/man1', ['rdiff-backup.1', -+ data_files = [('man/man1', ['rdiff-backup.1', - 'rdiff-backup-statistics.1']), -- ('share/doc/rdiff-backup-%s' % (version_string,), -- ['CHANGELOG', 'COPYING', 'README', 'FAQ.html'])], -+ ('share/doc/rdiff-backup', -+ ['CHANGELOG', 'FAQ.html'])], - **extra_options) + setup( + name="rdiff-backup", +- use_scm_version=True, + description="Backup and Restore utility, easy to use, efficient, locally and remotely usable", + long_description=""" + rdiff-backup is a simple backup tool which can be used locally and remotely, +@@ -185,20 +187,18 @@ + "rdiff_backup._librsync", + ["src/_librsyncmodule.c"], + define_macros=librsync_macros, +- include_dirs=incdir_list, +- library_dirs=libdir_list, +- libraries=libname, +- extra_link_args=lflags_arg, ++ libraries=["rsync"], ++ include_dirs=include_dirs, ++ library_dirs=library_dirs, + ), + ], + scripts=["src/rdiff-backup", "src/rdiff-backup-statistics", "src/rdiff-backup-delete"], + data_files=[ +- ("share/man/man1", ["build/rdiff-backup.1", "build/rdiff-backup-statistics.1"]), ++ ("man/man1", ["build/rdiff-backup.1", "build/rdiff-backup-statistics.1"]), + ( + "share/doc/rdiff-backup", + [ + "CHANGELOG.md", +- "COPYING", + "README.md", + "docs/FAQ.md", + "docs/examples.md", +@@ -207,7 +207,6 @@ + "docs/Windows-DEVELOP.md", + ], + ), +- ("share/bash-completion/completions", ["tools/bash-completion/rdiff-backup"]), + ], + # options is a hash of hash with command -> option -> value + # the value happens here to be a list of file couples/tuples +@@ -223,5 +222,4 @@ + 'clean': clean, + }, + install_requires=['setuptools'], +- setup_requires=['setuptools_scm'], + ) diff -urN rdiff-backup.orig/pkg/PLIST rdiff-backup/pkg/PLIST --- rdiff-backup.orig/pkg/PLIST Fri Mar 11 14:57:55 2022 +++ rdiff-backup/pkg/PLIST Fri Apr 29 11:02:22 2022 @@ -1,79 +1,87 @@ bin/rdiff-backup +bin/rdiff-backup-delete bin/rdiff-backup-statistics lib/python${MODPY_VERSION}/site-packages/rdiff_backup/ -lib/python${MODPY_VERSION}/site-packages/rdiff_backup-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/C.so +lib/python${MODPY_VERSION}/site-packages/rdiff_backup-0.0.0-py${MODPY_VERSION}.egg-info/ +lib/python${MODPY_VERSION}/site-packages/rdiff_backup-0.0.0-py${MODPY_VERSION}.egg-info/PKG-INFO +lib/python${MODPY_VERSION}/site-packages/rdiff_backup-0.0.0-py${MODPY_VERSION}.egg-info/SOURCES.txt +lib/python${MODPY_VERSION}/site-packages/rdiff_backup-0.0.0-py${MODPY_VERSION}.egg-info/dependency_links.txt +lib/python${MODPY_VERSION}/site-packages/rdiff_backup-0.0.0-py${MODPY_VERSION}.egg-info/requires.txt +lib/python${MODPY_VERSION}/site-packages/rdiff_backup-0.0.0-py${MODPY_VERSION}.egg-info/top_level.txt +@so lib/python${MODPY_VERSION}/site-packages/rdiff_backup/C.${MODPY_PYC_MAGIC_TAG}so lib/python${MODPY_VERSION}/site-packages/rdiff_backup/FilenameMapping.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/FilenameMapping.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Globals.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Globals.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Hardlink.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Hardlink.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Main.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Main.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Rdiff.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Rdiff.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Security.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Security.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/SetConnections.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/SetConnections.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/TempFile.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/TempFile.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Time.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/Time.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/__init__.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/__init__.pyc -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/_librsync.so +${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}FilenameMapping.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}Globals.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}Hardlink.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}Main.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}Rdiff.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}Security.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}SetConnections.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}TempFile.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}Time.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}backup.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}compare.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}connection.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}eas_acls.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}fs_abilities.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}hash.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}increment.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}iterfile.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}librsync.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}log.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}longname.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}manage.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}metadata.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}regress.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}restore.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}robust.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}rorpiter.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}rpath.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}selection.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}statistics.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}user_group.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/rdiff_backup/${MODPY_PYCACHE}win_acls.${MODPY_PYC_MAGIC_TAG}pyc +@so lib/python${MODPY_VERSION}/site-packages/rdiff_backup/_librsync.${MODPY_PYC_MAGIC_TAG}so lib/python${MODPY_VERSION}/site-packages/rdiff_backup/backup.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/backup.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/compare.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/compare.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/connection.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/connection.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/eas_acls.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/eas_acls.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/fs_abilities.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/fs_abilities.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/hash.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/hash.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/increment.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/increment.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/iterfile.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/iterfile.pyc -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/lazy.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/lazy.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/librsync.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/librsync.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/log.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/log.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/longname.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/longname.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/manage.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/manage.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/metadata.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/metadata.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/regress.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/regress.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/restore.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/restore.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/robust.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/robust.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/rorpiter.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/rorpiter.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/rpath.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/rpath.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/selection.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/selection.pyc -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/static.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/static.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/statistics.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/statistics.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/user_group.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/user_group.pyc lib/python${MODPY_VERSION}/site-packages/rdiff_backup/win_acls.py -lib/python${MODPY_VERSION}/site-packages/rdiff_backup/win_acls.pyc @man man/man1/rdiff-backup-statistics.1 @man man/man1/rdiff-backup.1 share/doc/rdiff-backup/ -share/doc/rdiff-backup/CHANGELOG -share/doc/rdiff-backup/FAQ.html +share/doc/rdiff-backup/CHANGELOG.md +share/doc/rdiff-backup/DEVELOP.md +share/doc/rdiff-backup/FAQ.md +share/doc/rdiff-backup/README.md +share/doc/rdiff-backup/Windows-DEVELOP.md +share/doc/rdiff-backup/Windows-README.md +share/doc/rdiff-backup/examples.md ______________________________________________ CONFIDENTIALITY NOTICE: This e-mail, and any files/attachments transmitted, may include confidential and/or proprietary information from IWCO Direct, intended solely for the use of the individual or entity to whom they are addressed. If you are not the intended recipient, you are hereby notified that disclosure, printing, copying, distribution, or the taking of any action in reliance on the contents of this electronic information is strictly prohibited. If you have received this e-mail message in error, please immediately notify the sender by reply message and then delete the electronic message and any files/attachments. ______________________________________________