diff options
Diffstat (limited to 'source4/scripting/python')
| -rw-r--r-- | source4/scripting/python/config.m4 | 9 | ||||
| -rw-r--r-- | source4/scripting/python/config.mk | 7 | ||||
| -rw-r--r-- | source4/scripting/python/modules.c | 45 | ||||
| -rw-r--r-- | source4/scripting/python/smbpython.c | 6 | ||||
| -rw-r--r-- | source4/scripting/python/uuidmodule.c | 4 | 
5 files changed, 63 insertions, 8 deletions
diff --git a/source4/scripting/python/config.m4 b/source4/scripting/python/config.m4 index 49ad7273a4..b6ca7966df 100644 --- a/source4/scripting/python/config.m4 +++ b/source4/scripting/python/config.m4 @@ -24,7 +24,7 @@ fi  PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`  PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags` -SMB_EXT_LIB(LIBPYTHON, [$PYTHON_LDFLAGS], [$PYTHON_CFLAGS]) +SMB_EXT_LIB(EXT_LIB_PYTHON, [$PYTHON_LDFLAGS], [$PYTHON_CFLAGS])  AC_MSG_CHECKING(working python module support)  if test x$working_python = xyes @@ -40,10 +40,12 @@ then  		],[  			Py_InitModule(NULL, NULL);  		],[ -			SMB_ENABLE(LIBPYTHON,YES) +			SMB_ENABLE(EXT_LIB_PYTHON,YES)  			SMB_ENABLE(smbpython,YES) +			SMB_ENABLE(LIBPYTHON,YES)  			AC_MSG_RESULT([yes])  		],[ +			SMB_ENABLE(EXT_LIB_PYTHON,NO)  			SMB_ENABLE(LIBPYTHON,NO)  			SMB_ENABLE(smbpython,NO)  			AC_MSG_RESULT([no]) @@ -52,7 +54,8 @@ then  	LIBS="$ac_save_LIBS"  	CFLAGS="$ac_save_CFLAGS"  else -	SMB_ENABLE(LIBPYTHON,NO) +	SMB_ENABLE(EXT_LIB_PYTHON,NO) +	SMB_ENABLE(LIBPYTHONyy,NO)  	SMB_ENABLE(smbpython,NO)  	AC_MSG_RESULT([no])  fi diff --git a/source4/scripting/python/config.mk b/source4/scripting/python/config.mk index ac923cb8d1..601e432906 100644 --- a/source4/scripting/python/config.mk +++ b/source4/scripting/python/config.mk @@ -1,7 +1,10 @@  [BINARY::smbpython]  PRIVATE_DEPENDENCIES = LIBPYTHON -OBJ_FILES = \ -			smbpython.o +OBJ_FILES = smbpython.o + +[SUBSYSTEM::LIBPYTHON] +PUBLIC_DEPENDENCIES = EXT_LIB_PYTHON +OBJ_FILES = modules.o  [PYTHON::python_uuid]  PRIVATE_DEPENDENCIES = LIBNDR  diff --git a/source4/scripting/python/modules.c b/source4/scripting/python/modules.c new file mode 100644 index 0000000000..6a766f3412 --- /dev/null +++ b/source4/scripting/python/modules.c @@ -0,0 +1,45 @@ +/*  +   Unix SMB/CIFS implementation. +   Samba utility functions +   Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007 +    +   This program is free software; you can redistribute it and/or modify +   it under the terms of the GNU General Public License as published by +   the Free Software Foundation; either version 3 of the License, or +   (at your option) any later version. +    +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU General Public License for more details. +    +   You should have received a copy of the GNU General Public License +   along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "includes.h" +#include <Python.h> +#include "build.h" + +extern void init_ldb(void); +extern void init_security(void); +extern void init_registry(void); +extern void init_param(void); +extern void init_misc(void); +extern void init_ldb(void); +extern void init_auth(void); +extern void init_credentials(void); +extern void init_tdb(void); +extern void init_dcerpc(void); +extern void init_events(void); +extern void inituuid(void); + +static struct _inittab py_modules[] = { STATIC_LIBPYTHON_MODULES }; + +void py_load_samba_modules(void) +{ +	int i; +	for (i = 0; i < ARRAY_SIZE(py_modules); i++) { +		PyImport_ExtendInittab(&py_modules[i]); +	} +} diff --git a/source4/scripting/python/smbpython.c b/source4/scripting/python/smbpython.c index 43785765c1..19c458e7ac 100644 --- a/source4/scripting/python/smbpython.c +++ b/source4/scripting/python/smbpython.c @@ -20,6 +20,10 @@  #include "includes.h"  #include <Python.h> -int main(int argc, char **argv) { +void py_load_samba_modules(void); + +int main(int argc, char **argv)  +{ +	py_load_samba_modules();  	return Py_Main(argc,argv);  } diff --git a/source4/scripting/python/uuidmodule.c b/source4/scripting/python/uuidmodule.c index 9ae432dfa5..02c929d4a5 100644 --- a/source4/scripting/python/uuidmodule.c +++ b/source4/scripting/python/uuidmodule.c @@ -26,7 +26,7 @@ static PyObject *uuid_random(PyObject *self, PyObject *args)  	struct GUID guid;  	char *str; -	if (!PyArg_ParseTuple(args, "")) +	if (!PyArg_ParseTuple(args, (char *)""))  	        return NULL;  	guid = GUID_random(); @@ -51,7 +51,7 @@ PyDoc_STRVAR(param_doc, "UUID helper routines");  PyMODINIT_FUNC inituuid(void)  { -	PyObject *mod = Py_InitModule3("uuid", methods, param_doc); +	PyObject *mod = Py_InitModule3((char *)"uuid", methods, param_doc);  	if (mod == NULL)  		return;  }  | 
