if so, please test these updates to py3 versions and let me know how it goes.
diff applies in ports/mail, I didn't include the parts for devel/quirks as they're liable to go out-of-date quickly, but you won't need that to test. Index: py-authres/Makefile =================================================================== RCS file: /cvs/ports/mail/py-authres/Makefile,v retrieving revision 1.11 diff -u -p -r1.11 Makefile --- py-authres/Makefile 11 Mar 2022 19:34:53 -0000 1.11 +++ py-authres/Makefile 28 Nov 2022 20:54:16 -0000 @@ -1,6 +1,6 @@ COMMENT = module for RFC 5451 Authentication-Results Headers -MODPY_EGG_VERSION = 0.800 +MODPY_EGG_VERSION = 1.2.0 DISTNAME = authres-${MODPY_EGG_VERSION} PKGNAME = py-${DISTNAME} CATEGORIES = mail @@ -10,15 +10,12 @@ HOMEPAGE = https://launchpad.net/authent # Apache 2.0 PERMIT_PACKAGE = Yes -MODPY_PI = Yes - MODULES = lang/python -MODPY_VERSION = ${MODPY_DEFAULT_VERSION_2} - +MODPY_PI = Yes +MODPY_PYBUILD = setuptools NO_TEST = Yes -post-install: - ${INSTALL_DATA} ${WRKSRC}/authres/tests \ - ${PREFIX}/lib/python${MODPY_VERSION}/site-packages/authres/tests +FLAVOR = python3 +FLAVORS = python3 .include <bsd.port.mk> Index: py-authres/distinfo =================================================================== RCS file: /cvs/ports/mail/py-authres/distinfo,v retrieving revision 1.6 diff -u -p -r1.6 distinfo --- py-authres/distinfo 16 Nov 2015 11:29:05 -0000 1.6 +++ py-authres/distinfo 28 Nov 2022 20:54:16 -0000 @@ -1,2 +1,2 @@ -SHA256 (authres-0.800.tar.gz) = 0o45dqfUGJF8u/OEAYqg6KBInkG/2YRzCcX477Gfbv0= -SIZE (authres-0.800.tar.gz) = 19863 +SHA256 (authres-1.2.0.tar.gz) = k9G5la184h5i22SfNhBIEl3WAiVjoK6KI5CUZfH9Jbc= +SIZE (authres-1.2.0.tar.gz) = 23226 Index: py-authres/pkg/PLIST =================================================================== RCS file: /cvs/ports/mail/py-authres/pkg/PLIST,v retrieving revision 1.5 diff -u -p -r1.5 PLIST --- py-authres/pkg/PLIST 11 Mar 2022 19:34:53 -0000 1.5 +++ py-authres/pkg/PLIST 28 Nov 2022 20:54:16 -0000 @@ -1,21 +1,40 @@ +@pkgpath mail/py-authres lib/python${MODPY_VERSION}/site-packages/authres/ -lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info +lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}.dist-info/ +lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}.dist-info/COPYING +lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}.dist-info/METADATA +lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}.dist-info/RECORD +lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}.dist-info/WHEEL +lib/python${MODPY_VERSION}/site-packages/authres-${MODPY_EGG_VERSION}.dist-info/top_level.txt lib/python${MODPY_VERSION}/site-packages/authres/__init__.py -lib/python${MODPY_VERSION}/site-packages/authres/__init__.pyc lib/python${MODPY_VERSION}/site-packages/authres/__main__.py -lib/python${MODPY_VERSION}/site-packages/authres/__main__.pyc +${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}__main__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}__main__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}arc.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}arc.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}core.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}core.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}dkim_adsp.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}dkim_adsp.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}dkim_b.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}dkim_b.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}dmarc.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}dmarc.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}rrvs.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}rrvs.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}smime.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}smime.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}vbr.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/authres/${MODPY_PYCACHE}vbr.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/authres/arc.py lib/python${MODPY_VERSION}/site-packages/authres/core.py -lib/python${MODPY_VERSION}/site-packages/authres/core.pyc lib/python${MODPY_VERSION}/site-packages/authres/dkim_adsp.py -lib/python${MODPY_VERSION}/site-packages/authres/dkim_adsp.pyc lib/python${MODPY_VERSION}/site-packages/authres/dkim_b.py -lib/python${MODPY_VERSION}/site-packages/authres/dkim_b.pyc lib/python${MODPY_VERSION}/site-packages/authres/dmarc.py -lib/python${MODPY_VERSION}/site-packages/authres/dmarc.pyc lib/python${MODPY_VERSION}/site-packages/authres/rrvs.py -lib/python${MODPY_VERSION}/site-packages/authres/rrvs.pyc lib/python${MODPY_VERSION}/site-packages/authres/smime.py -lib/python${MODPY_VERSION}/site-packages/authres/smime.pyc lib/python${MODPY_VERSION}/site-packages/authres/tests lib/python${MODPY_VERSION}/site-packages/authres/vbr.py -lib/python${MODPY_VERSION}/site-packages/authres/vbr.pyc Index: py-policyd-spf/Makefile =================================================================== RCS file: /cvs/ports/mail/py-policyd-spf/Makefile,v retrieving revision 1.22 diff -u -p -r1.22 Makefile --- py-policyd-spf/Makefile 11 Mar 2022 19:34:53 -0000 1.22 +++ py-policyd-spf/Makefile 28 Nov 2022 20:54:16 -0000 @@ -1,27 +1,24 @@ COMMENT= external SPF policy checker for postfix -VER= 1.3 -P= 2 -REVISION= 1 -MODPY_EGG_VERSION=${VER}.${P} +# superseded by https://launchpad.net/spf-engine +MODPY_EGG_VERSION= 2.0.2 DISTNAME= pypolicyd-spf-${MODPY_EGG_VERSION} PKGNAME= py-policyd-spf-${MODPY_EGG_VERSION} CATEGORIES= mail -HOMEPAGE= http://www.openspf.org +HOMEPAGE= https://launchpad.net/pypolicyd-spf # Apache 2.0 PERMIT_PACKAGE= Yes -MASTER_SITES= http://launchpad.net/pypolicyd-spf/${VER}/${MODPY_EGG_VERSION}/+download/ - MODULES= lang/python -MODPY_VERSION = ${MODPY_DEFAULT_VERSION_2} +MODPY_PI= Yes +MODPY_PYBUILD= setuptools + +FLAVORS= python3 +FLAVOR= python3 -BUILD_DEPENDS= mail/py-spf -RUN_DEPENDS= mail/py-spf \ - net/py-dns \ - net/py-ipaddr +RUN_DEPENDS= mail/py-spf${MODPY_FLAVOR} NO_TEST= Yes Index: py-policyd-spf/distinfo =================================================================== RCS file: /cvs/ports/mail/py-policyd-spf/distinfo,v retrieving revision 1.6 diff -u -p -r1.6 distinfo --- py-policyd-spf/distinfo 29 Dec 2015 10:47:13 -0000 1.6 +++ py-policyd-spf/distinfo 28 Nov 2022 20:54:16 -0000 @@ -1,2 +1,2 @@ -SHA256 (pypolicyd-spf-1.3.2.tar.gz) = cXTEaibJw1sNZt26ghsCsNwt+dH2vwydpx3NYHlbKWY= -SIZE (pypolicyd-spf-1.3.2.tar.gz) = 32973 +SHA256 (pypolicyd-spf-2.0.2.tar.gz) = 35z4iFg8EAP/jdLwyMHl9G3kZrVt5c5W7tX0J2XwqNo= +SIZE (pypolicyd-spf-2.0.2.tar.gz) = 38546 Index: py-policyd-spf/patches/patch-policyd-spf =================================================================== RCS file: py-policyd-spf/patches/patch-policyd-spf diff -N py-policyd-spf/patches/patch-policyd-spf --- py-policyd-spf/patches/patch-policyd-spf 11 Mar 2022 19:34:53 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,15 +0,0 @@ -Pretend string to be unicode, -fixes compatibility with python 2.7 - -Index: policyd-spf ---- policyd-spf.orig -+++ policyd-spf -@@ -52,6 +52,8 @@ policydspfsupp._setExceptHook() - ############################################# - def _cidrmatch(ip, netwrk): - """Match connect IP against a CIDR network of other IP addresses.""" -+ netwrk = unicode(netwrk) -+ ip = unicode(ip) - - try: - address = ipaddress.ip_address(ip) Index: py-policyd-spf/patches/patch-policyd-spf_1 =================================================================== RCS file: /cvs/ports/mail/py-policyd-spf/patches/patch-policyd-spf_1,v retrieving revision 1.3 diff -u -p -r1.3 patch-policyd-spf_1 --- py-policyd-spf/patches/patch-policyd-spf_1 11 Mar 2022 19:34:53 -0000 1.3 +++ py-policyd-spf/patches/patch-policyd-spf_1 28 Nov 2022 20:54:16 -0000 @@ -1,11 +1,12 @@ ---- policyd-spf.1.orig Sun Nov 28 04:58:03 2010 -+++ policyd-spf.1 Wed Aug 24 16:04:09 2011 -@@ -254,7 +254,7 @@ followed by a empty line: +Index: policyd-spf.1 +--- policyd-spf.1.orig ++++ policyd-spf.1 +@@ -256,7 +256,7 @@ followed by a empty line: 1. Add the following to /etc/postfix/master.cf: policyd-spf unix - n n - 0 spawn - user=nobody argv=/usr/bin/policyd-spf + user=nobody argv=${PREFIX}/bin/policyd-spf - NOTE: Check the path to both the installed Python interpreter and + NOTE: Check the path to both the installed Python 3 interpreter and policyd-spf. These vary from system to system. To use non-default Index: py-policyd-spf/patches/patch-setup_py =================================================================== RCS file: /cvs/ports/mail/py-policyd-spf/patches/patch-setup_py,v retrieving revision 1.5 diff -u -p -r1.5 patch-setup_py --- py-policyd-spf/patches/patch-setup_py 11 Mar 2022 19:34:53 -0000 1.5 +++ py-policyd-spf/patches/patch-setup_py 28 Nov 2022 20:54:16 -0000 @@ -1,6 +1,7 @@ ---- setup.py.orig Sun Jul 22 03:24:58 2012 -+++ setup.py Mon Nov 12 10:53:33 2012 -@@ -13,11 +13,13 @@ setup(name='python-policyd-spf', +Index: setup.py +--- setup.py.orig ++++ setup.py +@@ -13,11 +13,13 @@ setup(name='pypolicyd-spf', py_modules=['policydspfsupp', 'policydspfuser'], keywords = ['Postfix','spf','email'], scripts = ['policyd-spf'], Index: py-policyd-spf/pkg/PLIST =================================================================== RCS file: /cvs/ports/mail/py-policyd-spf/pkg/PLIST,v retrieving revision 1.6 diff -u -p -r1.6 PLIST --- py-policyd-spf/pkg/PLIST 11 Mar 2022 19:34:53 -0000 1.6 +++ py-policyd-spf/pkg/PLIST 28 Nov 2022 20:54:16 -0000 @@ -1,16 +1,25 @@ +@conflict py-policyd-spf-* +@pkgpath mail/py-policyd-spf bin/policyd-spf +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}policydspfsupp.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}policydspfsupp.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}policydspfuser.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}policydspfuser.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/policydspfsupp.py -lib/python${MODPY_VERSION}/site-packages/policydspfsupp.pyc lib/python${MODPY_VERSION}/site-packages/policydspfuser.py -lib/python${MODPY_VERSION}/site-packages/policydspfuser.pyc -lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info +lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}.dist-info/ +lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}.dist-info/COPYING +lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}.dist-info/METADATA +lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}.dist-info/RECORD +lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}.dist-info/WHEEL +lib/python${MODPY_VERSION}/site-packages/pypolicyd_spf-${MODPY_EGG_VERSION}.dist-info/top_level.txt @man man/man1/policyd-spf.1 @man man/man5/policyd-spf.conf.5 @man man/man5/policyd-spf.peruser.5 +share/doc/py-policyd-spf/ +share/doc/py-policyd-spf/README.per_user_whitelisting +share/examples/py-policyd-spf/ @sample ${SYSCONFDIR}/python-policyd-spf/ -share/doc/${MODPY_PY_PREFIX}policyd-spf/ -share/doc/${MODPY_PY_PREFIX}policyd-spf/README.per_user_whitelisting -share/examples/${MODPY_PY_PREFIX}policyd-spf/ -share/examples/${MODPY_PY_PREFIX}policyd-spf/policyd-spf.conf +share/examples/py-policyd-spf/policyd-spf.conf @sample ${SYSCONFDIR}/python-policyd-spf/policyd-spf.conf -share/examples/${MODPY_PY_PREFIX}policyd-spf/policyd-spf.conf.commented +share/examples/py-policyd-spf/policyd-spf.conf.commented Index: py-spf/Makefile =================================================================== RCS file: /cvs/ports/mail/py-spf/Makefile,v retrieving revision 1.22 diff -u -p -r1.22 Makefile --- py-spf/Makefile 11 Mar 2022 19:34:53 -0000 1.22 +++ py-spf/Makefile 28 Nov 2022 20:54:16 -0000 @@ -1,12 +1,11 @@ COMMENT= Sender-Policy-Framework queries in Python -MODPY_EGG_VERSION=2.0.12 +MODPY_EGG_VERSION= 2.0.14 DISTNAME= pyspf-${MODPY_EGG_VERSION} -REVISION= 1 PKGNAME= py-spf-${MODPY_EGG_VERSION} CATEGORIES= mail -HOMEPAGE= http://bmsi.com/python/milter.html +HOMEPAGE= https://github.com/sdgathman/pyspf/ # Python PERMIT_PACKAGE= Yes @@ -14,18 +13,19 @@ PERMIT_PACKAGE= Yes MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=pymilter/} MODULES= lang/python -MODPY_VERSION = ${MODPY_DEFAULT_VERSION_2} +MODPY_PI= Yes +MODPY_PYBUILD= setuptools +MODPY_PYTEST_ARGS= test/testspf.py -BUILD_DEPENDS= net/py-dns +FLAVORS= python3 +FLAVOR= python3 -RUN_DEPENDS= mail/py-authres \ - net/py-dns +RUN_DEPENDS= mail/py-authres${MODPY_FLAVOR} \ + net/py-dnspython${MODPY_FLAVOR} -TEST_DEPENDS=${FULLPKGNAME}:${BUILD_PKGPATH} \ - textproc/py-yaml \ - net/py-ipaddr +TEST_DEPENDS= textproc/py-yaml${MODPY_FLAVOR} do-test: - @cd ${WRKSRC}/test && ${MODPY_BIN} testspf.py + cd ${WRKSRC}/test && PYTHONPATH=.. ${MODPY_BIN} testspf.py .include <bsd.port.mk> Index: py-spf/distinfo =================================================================== RCS file: /cvs/ports/mail/py-spf/distinfo,v retrieving revision 1.6 diff -u -p -r1.6 distinfo --- py-spf/distinfo 16 Sep 2015 17:36:16 -0000 1.6 +++ py-spf/distinfo 28 Nov 2022 20:54:16 -0000 @@ -1,2 +1,2 @@ -SHA256 (pyspf-2.0.12.tar.gz) = iqIboOOv+KTorY9YbFAKXR+cTJAsPxG8wQdGWFfNQaI= -SIZE (pyspf-2.0.12.tar.gz) = 67189 +SHA256 (pyspf-2.0.14.tar.gz) = V6fvAb2gkBc6r7avAQYlFobtc/A9tOkR/NNMV/w0cYY= +SIZE (pyspf-2.0.14.tar.gz) = 69446 Index: py-spf/pkg/PLIST =================================================================== RCS file: /cvs/ports/mail/py-spf/pkg/PLIST,v retrieving revision 1.4 diff -u -p -r1.4 PLIST --- py-spf/pkg/PLIST 11 Mar 2022 19:34:54 -0000 1.4 +++ py-spf/pkg/PLIST 28 Nov 2022 20:54:16 -0000 @@ -1,5 +1,13 @@ +@conflict py-spf-* +@pkgpath mail/py-spf bin/spfquery.py bin/type99.py -lib/python${MODPY_VERSION}/site-packages/pyspf-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}spf.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}spf.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/pyspf-${MODPY_EGG_VERSION}.dist-info/ +lib/python${MODPY_VERSION}/site-packages/pyspf-${MODPY_EGG_VERSION}.dist-info/METADATA +lib/python${MODPY_VERSION}/site-packages/pyspf-${MODPY_EGG_VERSION}.dist-info/RECORD +lib/python${MODPY_VERSION}/site-packages/pyspf-${MODPY_EGG_VERSION}.dist-info/WHEEL +lib/python${MODPY_VERSION}/site-packages/pyspf-${MODPY_EGG_VERSION}.dist-info/top_level.txt lib/python${MODPY_VERSION}/site-packages/spf.py -lib/python${MODPY_VERSION}/site-packages/spf.pyc