From: Petr Viktorin Date: Mon, 23 Jan 2017 19:34:08 +0000 (+0100) Subject: python: Port the samba.net module to Python 3 X-Git-Tag: tdb-1.3.13~551 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ba2fe54dea3e99da7f9b18557d9d31aed3ff7d0;p=thirdparty%2Fsamba.git python: Port the samba.net module to Python 3 Signed-off-by: Petr Viktorin Reviewed-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c index 5180c247a71..bf39415cf32 100644 --- a/source4/libnet/py_net.c +++ b/source4/libnet/py_net.c @@ -20,6 +20,7 @@ */ #include +#include "python/py3compat.h" #include "includes.h" #include #include @@ -36,8 +37,6 @@ #include "py_net.h" #include "librpc/rpc/pyrpc_util.h" -void initnet(void); - static void PyErr_SetDsExtendedError(enum drsuapi_DsExtendedError ext_err, const char *error_description) { PyObject *error = PyObject_GetAttrString(PyImport_ImportModule("samba"), @@ -290,7 +289,7 @@ static PyObject *py_net_time(py_net_Object *self, PyObject *args, PyObject *kwar tm = localtime(&r.generic.out.time); strftime(timestr, sizeof(timestr)-1, "%c %Z",tm); - ret = PyString_FromString(timestr); + ret = PyStr_FromString(timestr); talloc_free(mem_ctx); @@ -720,7 +719,7 @@ static PyObject *net_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwarg PyTypeObject py_net_Type = { - PyObject_HEAD_INIT(NULL) 0, + PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "net.Net", .tp_basicsize = sizeof(py_net_Object), .tp_dealloc = (destructor)py_net_dealloc, @@ -728,21 +727,29 @@ PyTypeObject py_net_Type = { .tp_new = net_obj_new, }; -void initnet(void) +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + .m_name = "net", + .m_size = -1, +}; + +MODULE_INIT_FUNC(net) { PyObject *m; if (PyType_Ready(&py_net_Type) < 0) - return; + return NULL; - m = Py_InitModule3("net", NULL, NULL); + m = PyModule_Create(&moduledef); if (m == NULL) - return; + return NULL; Py_INCREF(&py_net_Type); PyModule_AddObject(m, "Net", (PyObject *)&py_net_Type); - PyModule_AddObject(m, "LIBNET_JOINDOMAIN_AUTOMATIC", PyInt_FromLong(LIBNET_JOINDOMAIN_AUTOMATIC)); - PyModule_AddObject(m, "LIBNET_JOINDOMAIN_SPECIFIED", PyInt_FromLong(LIBNET_JOINDOMAIN_SPECIFIED)); - PyModule_AddObject(m, "LIBNET_JOIN_AUTOMATIC", PyInt_FromLong(LIBNET_JOIN_AUTOMATIC)); - PyModule_AddObject(m, "LIBNET_JOIN_SPECIFIED", PyInt_FromLong(LIBNET_JOIN_SPECIFIED)); + PyModule_AddIntConstant(m, "LIBNET_JOINDOMAIN_AUTOMATIC", LIBNET_JOINDOMAIN_AUTOMATIC); + PyModule_AddIntConstant(m, "LIBNET_JOINDOMAIN_SPECIFIED", LIBNET_JOINDOMAIN_SPECIFIED); + PyModule_AddIntConstant(m, "LIBNET_JOIN_AUTOMATIC", LIBNET_JOIN_AUTOMATIC); + PyModule_AddIntConstant(m, "LIBNET_JOIN_SPECIFIED", LIBNET_JOIN_SPECIFIED); + + return m; } diff --git a/source4/libnet/wscript_build b/source4/libnet/wscript_build index 1274a82d04c..db113b2f71e 100644 --- a/source4/libnet/wscript_build +++ b/source4/libnet/wscript_build @@ -8,11 +8,14 @@ bld.SAMBA_LIBRARY('samba-net', ) -bld.SAMBA_PYTHON('python_net', - source='py_net.c', - deps='samba-net pyrpc_util pytalloc-util', - realname='samba/net.so' - ) +for env in bld.gen_python_environments(): + pytalloc_util = bld.pyembed_libname('pytalloc-util') + pyrpc_util = bld.pyembed_libname('pyrpc_util') + bld.SAMBA_PYTHON('python_net', + source='py_net.c', + deps='samba-net %s %s' % (pyrpc_util, pytalloc_util), + realname='samba/net.so' + ) bld.SAMBA_PYTHON('python_dckeytab', source='py_net_dckeytab.c libnet_export_keytab.c',