svn commit: r470417 - in head/mail/py-milter: . files

Martin Wilke miwi at FreeBSD.org
Sat May 19 16:25:17 UTC 2018


Author: miwi
Date: Sat May 19 16:25:15 2018
New Revision: 470417
URL: https://svnweb.freebsd.org/changeset/ports/470417

Log:
  - Update to 1.0.2
  - Use Github
  
  PR:	226857
  Submitted by:	Peter Wullinger
  Approved by:	maintainer
  Sponsored by:     iXsystems Inc.

Added:
  head/mail/py-milter/files/extra-patch-miltermodule.c   (contents, props changed)
  head/mail/py-milter/files/patch-Milter-dns.py   (contents, props changed)
  head/mail/py-milter/files/patch-Milter-dsn.py   (contents, props changed)
Deleted:
  head/mail/py-milter/files/patch-miltermodule.c
Modified:
  head/mail/py-milter/Makefile
  head/mail/py-milter/distinfo

Modified: head/mail/py-milter/Makefile
==============================================================================
--- head/mail/py-milter/Makefile	Sat May 19 16:21:14 2018	(r470416)
+++ head/mail/py-milter/Makefile	Sat May 19 16:25:15 2018	(r470417)
@@ -2,13 +2,11 @@
 # $FreeBSD$
 
 PORTNAME=	milter
-PORTVERSION=	1.0
-PORTREVISION=	4
+PORTVERSION=	1.0.2
 CATEGORIES=	mail python
-MASTER_SITES=	SF/${PYPORTNAME}/${PYPORTNAME}/${DISTNAME}
+MASTER_SITES=	GH
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 DISTNAME=	${PYPORTNAME}-${PORTVERSION}
-DIST_SUBDIR=	python
 
 MAINTAINER=	estartu at augusta.de
 COMMENT=	Python interface to Sendmail milter API
@@ -22,11 +20,22 @@ CFLAGS+=	-I${LOCALBASE}/include
 .endif
 
 PYPORTNAME=	${PKGNAMEPREFIX:C/[0-9]+-//}${PORTNAME}
+GH_ACCOUNT=	sdgathman
+GH_PROJECT=	${PYPORTNAME}
+GH_TAGNAME=	${GH_PROJECT}-${PORTVERSION}
 
-USES=		python:2.7
-USE_PYTHON=	distutils autoplist
+USES=	python
 
+USE_GITHUB=	yes
+USE_PYTHON=	distutils autoplist flavors
+
 post-install:
 	${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/milter.so
 
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${FLAVOR:Upy27:Mpy3*}
+EXTRA_PATCHES=	${PATCHDIR}/extra-patch-miltermodule.c
+.endif
+
+.include <bsd.port.post.mk>

Modified: head/mail/py-milter/distinfo
==============================================================================
--- head/mail/py-milter/distinfo	Sat May 19 16:21:14 2018	(r470416)
+++ head/mail/py-milter/distinfo	Sat May 19 16:25:15 2018	(r470417)
@@ -1,2 +1,3 @@
-SHA256 (python/pymilter-1.0.tar.gz) = 93a8f31b06c4a7f04e6f9b69f8d7357ba750819e6348177536b23255616e8937
-SIZE (python/pymilter-1.0.tar.gz) = 1014442
+TIMESTAMP = 1521752301
+SHA256 (pymilter-1.0.2_GH0.tar.gz) = f513053f5fc9b0c31d886d8412a411bdc958786a673d7071b1bd521498b01153
+SIZE (pymilter-1.0.2_GH0.tar.gz) = 1022535

Added: head/mail/py-milter/files/extra-patch-miltermodule.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/py-milter/files/extra-patch-miltermodule.c	Sat May 19 16:25:15 2018	(r470417)
@@ -0,0 +1,172 @@
+--- miltermodule.c.orig	2016-12-13 19:17:34 UTC
++++ miltermodule.c
+@@ -343,7 +343,7 @@ static struct MilterCallback {
+       { NULL , NULL }
+     };
+ 
+-staticforward struct smfiDesc description; /* forward declaration */
++static struct smfiDesc description; /* forward declaration */
+ 
+ static PyObject *MilterError;
+ /* The interpreter instance that called milter.main */
+@@ -355,7 +355,7 @@ typedef struct {
+ 
+ static milter_Diag diag;
+ 
+-staticforward PyTypeObject milter_ContextType;
++static PyTypeObject milter_ContextType;
+ 
+ typedef struct {
+   PyObject_HEAD
+@@ -700,7 +700,7 @@ _generic_wrapper(milter_ContextObject *s
+   result = PyEval_CallObject(cb, arglist);
+   Py_DECREF(arglist);
+   if (result == NULL) return _report_exception(self);
+-  if (!PyInt_Check(result)) {
++  if (!PyLong_Check(result)) {
+     const struct MilterCallback *p;
+     const char *cbname = "milter";
+     char buf[40];
+@@ -715,7 +715,7 @@ _generic_wrapper(milter_ContextObject *s
+     PyErr_SetString(MilterError,buf);
+     return _report_exception(self);
+   }
+-  retval = PyInt_AS_LONG(result);
++  retval = PyLong_AS_LONG(result);
+   Py_DECREF(result);
+   _release_thread(self->t);
+   return retval;
+@@ -732,7 +732,7 @@ makeipaddr(struct sockaddr_in *addr) {
+ 	sprintf(buf, "%d.%d.%d.%d",
+ 		(int) (x>>24) & 0xff, (int) (x>>16) & 0xff,
+ 		(int) (x>> 8) & 0xff, (int) (x>> 0) & 0xff);
+-	return PyString_FromString(buf);
++	return PyUnicode_FromString(buf);
+ }
+ 
+ #ifdef HAVE_IPV6_SUPPORT
+@@ -740,8 +740,8 @@ static PyObject *
+ makeip6addr(struct sockaddr_in6 *addr) {
+ 	char buf[100]; /* must be at least INET6_ADDRSTRLEN + 1 */
+ 	const char *s = inet_ntop(AF_INET6, &addr->sin6_addr, buf, sizeof buf);
+-	if (s) return PyString_FromString(s);
+-	return PyString_FromString("inet6:unknown");
++	if (s) return PyUnicode_FromString(s);
++	return PyUnicode_FromString("inet6:unknown");
+ }
+ #endif
+ 
+@@ -832,7 +832,7 @@ generic_env_wrapper(SMFICTX *ctx, PyObje
+    for (i=0;i<count;i++) {
+      /* There's some error checking performed in do_mkvalue() for a string */
+      /* that's not currently done here - it probably should be */
+-     PyObject *o = PyString_FromStringAndSize(argv[i], strlen(argv[i]));
++     PyObject *o = PyUnicode_FromStringAndSize(argv[i], strlen(argv[i]));
+      if (o == NULL) {	/* out of memory */
+        Py_DECREF(arglist);
+        return _report_exception(self);
+@@ -889,7 +889,7 @@ milter_wrap_body(SMFICTX *ctx, u_char *b
+    c = _get_context(ctx);
+    if (!c) return SMFIS_TEMPFAIL;
+    /* Unclear whether this should be s#, z#, or t# */
+-   arglist = Py_BuildValue("(Os#)", c, bodyp, bodylen);
++   arglist = Py_BuildValue("(Oy#)", c, bodyp, bodylen);
+    return _generic_wrapper(c, body_callback, arglist);
+ }
+ 
+@@ -963,7 +963,7 @@ milter_wrap_negotiate(SMFICTX *ctx,
+     int i;
+     for (i = 0; i < 4; ++i) {
+       *pa[i] = (i <= len)
+-      	? PyInt_AsUnsignedLongMask(PyList_GET_ITEM(optlist,i))
++      	? PyLong_AsUnsignedLongMask(PyList_GET_ITEM(optlist,i))
+ 	: fa[i];
+     }
+     if (PyErr_Occurred()) {
+@@ -1551,11 +1551,6 @@ static PyMethodDef context_methods[] = {
+   { NULL, NULL }
+ };
+ 
+-static PyObject *
+-milter_Context_getattr(PyObject *self, char *name) {
+-  return Py_FindMethod(context_methods, self, name);
+-}
+-
+ static struct smfiDesc description = {  /* Set some reasonable defaults */
+   "pythonfilter",
+   SMFI_VERSION,
+@@ -1604,14 +1599,13 @@ static PyMethodDef milter_methods[] = {
+ };
+ 
+ static PyTypeObject milter_ContextType = {
+-  PyObject_HEAD_INIT(&PyType_Type)
+-  0,
+-  "milterContext",
++  PyVarObject_HEAD_INIT(&PyType_Type,0)
++  "milter.Context",
+   sizeof(milter_ContextObject),
+   0,
+         milter_Context_dealloc,            /* tp_dealloc */
+         0,               /* tp_print */
+-        milter_Context_getattr,           /* tp_getattr */
++        0,           /* tp_getattr */
+         0,			/* tp_setattr */
+         0,                                      /* tp_compare */
+         0,                 /* tp_repr */
+@@ -1625,6 +1619,13 @@ static PyTypeObject milter_ContextType =
+         0,                                      /* tp_setattro */
+         0,                                      /* tp_as_buffer */
+         Py_TPFLAGS_DEFAULT,                     /* tp_flags */
++	NULL,	/* Documentation string */
++	0, 	/* call function for all accessible objects */
++    	0,	/* delete references to contained objects */
++    	0,	/* rich comparisons */
++    	0,	/* weak reference enabler */
++    	0, 0,	/* Iterators */
++    	context_methods, /* Attribute descriptor and subclassing stuff */
+ };
+ 
+ static const char milter_documentation[] =
+@@ -1634,17 +1635,31 @@ Libmilter is currently marked FFR, and n
+ See <sendmailsource>/libmilter/README for details on setting it up.\n";
+ 
+ static void setitem(PyObject *d,const char *name,long val) {
+-  PyObject *v = PyInt_FromLong(val);
++  PyObject *v = PyLong_FromLong(val);
+   PyDict_SetItemString(d,name,v);
+   Py_DECREF(v);
+ }
+ 
+-void
+-initmilter(void) {
++static struct PyModuleDef moduledef = {
++    PyModuleDef_HEAD_INIT,
++    "milter",     	 /* m_name */
++    milter_documentation,/* m_doc */
++    -1,                  /* m_size */
++    milter_methods,      /* m_methods */
++    NULL,                /* m_reload */
++    NULL,                /* m_traverse */
++    NULL,                /* m_clear */
++    NULL,                /* m_free */
++};
++
++PyMODINIT_FUNC PyInit_milter(void) {
+    PyObject *m, *d;
+ 
+-   m = Py_InitModule4("milter", milter_methods, milter_documentation,
+-		      (PyObject*)NULL, PYTHON_API_VERSION);
++   if (PyType_Ready(&milter_ContextType) < 0)
++          return NULL;
++
++   m = PyModule_Create(&moduledef);
++   if (m == NULL) return NULL;
+    d = PyModule_GetDict(m);
+    MilterError = PyErr_NewException("milter.error", NULL, NULL);
+    PyDict_SetItemString(d,"error", MilterError);
+@@ -1710,4 +1725,5 @@ initmilter(void) {
+    setitem(d,"DISCARD",  SMFIS_DISCARD);
+    setitem(d,"ACCEPT",  SMFIS_ACCEPT);
+    setitem(d,"TEMPFAIL",  SMFIS_TEMPFAIL);
++   return m;
+ }

Added: head/mail/py-milter/files/patch-Milter-dns.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/py-milter/files/patch-Milter-dns.py	Sat May 19 16:25:15 2018	(r470417)
@@ -0,0 +1,13 @@
+--- Milter/dns.py.orig	2016-12-13 19:17:34 UTC
++++ Milter/dns.py
+@@ -26,8 +26,8 @@ def DNSLookup(name, qtype):
+         # A RR as dotted quad.  For consistency, this driver should
+         # return both as binary string.
+         return [((a['name'], a['typename']), a['data']) for a in resp.answers]
+-    except IOError, x:
+-        raise DNSError, str(x)
++    except IOError as x:
++        raise DNSError(str(x))
+ 
+ class Session(object):
+   """A Session object has a simple cache with no TTL that is valid

Added: head/mail/py-milter/files/patch-Milter-dsn.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/py-milter/files/patch-Milter-dsn.py	Sat May 19 16:25:15 2018	(r470417)
@@ -0,0 +1,19 @@
+--- Milter/dsn.py.orig	2016-12-13 19:17:34 UTC
++++ Milter/dsn.py
+@@ -142,13 +142,13 @@ def send_dsn(mailfrom,receiver,msg=None,
+         if badrcpts:
+           return badrcpts
+       return None			# success
+-    except smtplib.SMTPRecipientsRefused,x:
++    except smtplib.SMTPRecipientsRefused as x:
+       if len(x.recipients) == 1:
+         return x.recipients.values()[0]	# permanent error
+       return x.recipients
+-    except smtplib.SMTPSenderRefused,x:
++    except smtplib.SMTPSenderRefused as x:
+       return x.args[:2]			# does not accept DSN
+-    except smtplib.SMTPDataError,x:
++    except smtplib.SMTPDataError as x:
+       return x.args			# permanent error
+     except smtplib.SMTPException:
+       pass		# any other error, try next MX


More information about the svn-ports-head mailing list