Index: head/devel/py-freebsd/Makefile =================================================================== --- head/devel/py-freebsd/Makefile (revision 441944) +++ head/devel/py-freebsd/Makefile (revision 441945) @@ -1,29 +1,32 @@ # Created by: Hye-Shik Chang # $FreeBSD$ PORTNAME= freebsd PORTVERSION= 0.9.3 -PORTREVISION= 6 +PORTREVISION= 7 CATEGORIES= devel python MASTER_SITES= LOCAL/perky \ http://people.freebsd.org/~perky/distfiles/ PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DISTNAME= py-freebsd-${PORTVERSION} -LICENSE= BSD2CLAUSE -LICENSE_FILE= ${WRKSRC}/COPYRIGHT - MAINTAINER= python@FreeBSD.org COMMENT= Python interface to FreeBSD-specific system libraries +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/COPYRIGHT + USES= python:2 -USE_PYTHON= distutils autoplist +USE_PYTHON= autoplist distutils .include .if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1100002 EXTRA_PATCHES+= ${FILESDIR}/freebsd11_patch-src__.const.def \ ${FILESDIR}/freebsd11_patch-src__netstat.c .endif + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/freebsd.so .include Index: head/devel/py-freebsd/files/freebsd11_patch-src__.const.def =================================================================== --- head/devel/py-freebsd/files/freebsd11_patch-src__.const.def (revision 441944) +++ head/devel/py-freebsd/files/freebsd11_patch-src__.const.def (revision 441945) @@ -1,10 +1,10 @@ ---- src/.const.def.orig 2005-12-09 06:40:56.000000000 +0300 -+++ src/.const.def 2014-10-18 00:25:38.000000000 +0400 -@@ -69,7 +69,6 @@ +--- src/.const.def.orig 2005-12-09 03:40:56 UTC ++++ src/.const.def +@@ -69,7 +69,6 @@ SETDICT_INT(d, "IFF_BROADCAST", IFF_BROA SETDICT_INT(d, "IFF_DEBUG", IFF_DEBUG); SETDICT_INT(d, "IFF_LOOPBACK", IFF_LOOPBACK); SETDICT_INT(d, "IFF_POINTOPOINT", IFF_POINTOPOINT); -SETDICT_INT(d, "IFF_SMART", IFF_SMART); SETDICT_INT(d, "IFF_RUNNING", IFF_RUNNING); SETDICT_INT(d, "IFF_NOARP", IFF_NOARP); SETDICT_INT(d, "IFF_PROMISC", IFF_PROMISC); Index: head/devel/py-freebsd/files/freebsd11_patch-src__netstat.c =================================================================== --- head/devel/py-freebsd/files/freebsd11_patch-src__netstat.c (revision 441944) +++ head/devel/py-freebsd/files/freebsd11_patch-src__netstat.c (revision 441945) @@ -1,10 +1,10 @@ ---- src/netstat.c.orig 2005-05-08 10:55:00.000000000 +0400 -+++ src/netstat.c 2014-10-18 00:25:23.000000000 +0400 -@@ -40,7 +40,6 @@ +--- src/netstat.c.orig 2005-05-08 06:55:00 UTC ++++ src/netstat.c +@@ -40,7 +40,6 @@ EXPCONST(int IFF_BROADCAST) EXPCONST(int IFF_DEBUG) EXPCONST(int IFF_LOOPBACK) EXPCONST(int IFF_POINTOPOINT) -EXPCONST(int IFF_SMART) EXPCONST(int IFF_RUNNING) EXPCONST(int IFF_NOARP) EXPCONST(int IFF_PROMISC) Index: head/devel/py-freebsd/files/patch-setup.py =================================================================== --- head/devel/py-freebsd/files/patch-setup.py (revision 441944) +++ head/devel/py-freebsd/files/patch-setup.py (revision 441945) @@ -1,10 +1,10 @@ ---- setup.py.orig Mon Apr 11 23:31:45 2005 -+++ setup.py Mon Apr 11 23:32:09 2005 -@@ -52,6 +52,7 @@ +--- setup.py.orig 2005-12-09 03:39:16 UTC ++++ setup.py +@@ -52,6 +52,7 @@ setup(name = "py-freebsd", "freebsd", ["src/freebsdmodule.c"], libraries=libs, + library_dirs=['/lib', '/usr/lib'], depends=DEPENDS, ) ], Index: head/devel/py-freebsd/files/patch-src-jail.c =================================================================== --- head/devel/py-freebsd/files/patch-src-jail.c (revision 441944) +++ head/devel/py-freebsd/files/patch-src-jail.c (revision 441945) @@ -1,45 +1,45 @@ ---- src/jail.c.orig 2005-05-08 06:55:00.000000000 +0000 -+++ src/jail.c 2008-12-23 13:54:31.000000000 +0000 +--- src/jail.c.orig 2005-05-08 06:55:00 UTC ++++ src/jail.c @@ -40,21 +40,37 @@ static PyObject * PyFB_jail(PyObject *self, PyObject *args) { struct jail jp; + struct in_addr ia; char *ipaddr; + int error; if (!PyArg_ParseTuple(args, "sss:jail", &(jp.path), &(jp.hostname), &ipaddr)) return NULL; - jp.version = 0; - jp.ip_number = inet_addr(ipaddr); - - if (jp.ip_number == INADDR_NONE) { + ia.s_addr = inet_addr(ipaddr); + if (ia.s_addr == INADDR_NONE) { PyErr_SetString(PyExc_ValueError, "malformed internet address"); return NULL; } - if (jail(&jp) == -1) + jp.version = JAIL_API_VERSION; + jp.jailname = NULL; + jp.ip4s = 1; + jp.ip4 = malloc(jp.ip4s * sizeof(struct in_addr)); + if (jp.ip4 == NULL) { + PyErr_SetString(PyExc_ValueError, "Cannot allocate memory"); + return NULL; + } + jp.ip4->s_addr = ia.s_addr; + jp.ip6s = 0; + jp.ip6 = NULL; + + error = jail(&jp); + + free(jp.ip4); + + if (error == -1) return OSERROR(); Py_RETURN_NONE; Index: head/devel/py-freebsd/files/patch-src-netstat.c =================================================================== --- head/devel/py-freebsd/files/patch-src-netstat.c (revision 441944) +++ head/devel/py-freebsd/files/patch-src-netstat.c (revision 441945) @@ -1,10 +1,10 @@ ---- src/netstat.c.orig 2007-08-17 13:07:10.654911645 -0500 -+++ src/netstat.c 2007-08-17 13:07:19.496912514 -0500 -@@ -243,7 +243,6 @@ +--- src/netstat.c.orig 2005-05-08 06:55:00 UTC ++++ src/netstat.c +@@ -243,7 +243,6 @@ PyFB_ifstats(PyObject *self) Py_DECREF(t); p_int(type); p_int(physical); p_int(addrlen); p_int(hdrlen); - p_int(recvquota); p_int(xmitquota); p_long(mtu); p_long(metric); p_long(baudrate); p_long(ipackets); p_long(ierrors); p_long(opackets); Index: head/devel/py-freebsd/files/patch-src-process.c =================================================================== --- head/devel/py-freebsd/files/patch-src-process.c (revision 441944) +++ head/devel/py-freebsd/files/patch-src-process.c (revision 441945) @@ -1,52 +1,52 @@ ---- src/process.c.orig Sun May 8 08:55:00 2005 -+++ src/process.c Sat Nov 25 18:12:52 2006 -@@ -51,10 +51,19 @@ +--- src/process.c.orig 2005-05-08 06:55:00 UTC ++++ src/process.c +@@ -51,10 +51,19 @@ static char PyFB_setprogname__doc__[] = static PyObject * PyFB_setprogname(PyObject *self, PyObject *args) { - char *progname; + const char *progname; + static PyObject *namestr = NULL; if (!PyArg_ParseTuple(args, "s:setprogname", &progname)) return NULL; + /* + * Setprogname(3) does not copy the string, it only stores the + * string pointer. Make sure that the string object does not + * get garbage collected and its memory reused! + */ + Py_XDECREF(namestr); /* maybe free old progname */ + PyArg_ParseTuple(args, "O", &namestr); + Py_INCREF(namestr); /* keep new progname object */ setprogname(progname); Py_RETURN_NONE; -@@ -64,16 +73,24 @@ +@@ -64,16 +73,24 @@ PyFB_setprogname(PyObject *self, PyObjec static char PyFB_setproctitle__doc__[] = "setproctitle(title):\n" "The setproctitle() library routine sets the process title that\n" -"appears on the ps(1) command."; +"appears on the ps(1) command. The progname and a colon are\n" +"prepended automatically. This behaviour is suppressed when the\n" +"title starts with a dash (-) character. Calling with a None\n" +"argument restores a default process title."; static PyObject * PyFB_setproctitle(PyObject *self, PyObject *args) { - char *newtitle; + const char *newtitle; - if (!PyArg_ParseTuple(args, "s:setproctitle", &newtitle)) + if (!PyArg_ParseTuple(args, "z:setproctitle", &newtitle)) return NULL; - setproctitle(newtitle); + if (newtitle == NULL) + setproctitle(NULL); + else if (*newtitle == '-') + setproctitle("-%s", newtitle+1); + else + setproctitle("%s", newtitle); Py_RETURN_NONE; } Index: head/devel/py-freebsd/files/patch-src-sysctl.c =================================================================== --- head/devel/py-freebsd/files/patch-src-sysctl.c (revision 441944) +++ head/devel/py-freebsd/files/patch-src-sysctl.c (revision 441945) @@ -1,38 +1,38 @@ ---- src/sysctl.c.orig 2011-04-12 12:30:50.000000000 +0400 -+++ src/sysctl.c 2011-04-12 12:37:45.000000000 +0400 +--- src/sysctl.c.orig 2005-05-08 06:55:00 UTC ++++ src/sysctl.c @@ -121,7 +121,7 @@ const size_t sysctl_type_sizes[CTLTYPE] 0, /* CTLTYPE_NODE */ sizeof(int), /* CTLTYPE_INT */ 0, /* CTLTYPE_STRING */ - sizeof(quad_t), /* CTLTYPE_QUAD */ + sizeof(quad_t), /* CTLTYPE_S64 */ 0, /* CTLTYPE_OPAQUE */ sizeof(unsigned int), /* CTLTYPE_UINT */ sizeof(long), /* CTLTYPE_LONG */ @@ -329,7 +329,7 @@ PyFB_sysctl(PyObject *self, PyObject *ar case CTLTYPE_UINT: case CTLTYPE_LONG: case CTLTYPE_ULONG: - case CTLTYPE_QUAD: + case CTLTYPE_S64: if (!PyInt_Check(newobj) && !PyLong_Check(newobj)) { PyErr_SetString(PyExc_TypeError, "argument 2 must be integer for this node"); @@ -350,7 +350,7 @@ PyFB_sysctl(PyObject *self, PyObject *ar case CTLTYPE_ULONG: val.m_ulong = PyLong_AsUnsignedLong(newobj); break; - case CTLTYPE_QUAD: + case CTLTYPE_S64: val.m_quad = (quad_t)PyLong_AsLongLong(newobj); break; } @@ -439,7 +439,7 @@ PyFB_sysctl(PyObject *self, PyObject *ar case CTLTYPE_STRING: ret = PyString_FromStringAndSize(oldp, oldlen - 1); break; - case CTLTYPE_QUAD: + case CTLTYPE_S64: assert(oldlen == sizeof(quad_t)); ret = PyLong_FromLongLong((long long)*(quad_t *)oldp); break;