summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-12-23 23:54:30 -0600
committerStefan Metzmacher <metze@samba.org>2007-12-24 01:51:06 -0600
commitbe33f4c611d37ebba59ff618033dc73601339ad1 (patch)
tree2d1fdd393172069a89dd5819d614db6a917bc984 /source4/scripting
parent1ab5bcfb93c9fc7b18d55e6c5995efddf97fea09 (diff)
downloadsamba-be33f4c611d37ebba59ff618033dc73601339ad1.tar.gz
samba-be33f4c611d37ebba59ff618033dc73601339ad1.tar.bz2
samba-be33f4c611d37ebba59ff618033dc73601339ad1.zip
r26576: Allow the static module loading code to be used for the Python modules.
Simplify the way module initialization functions are handled. (This used to be commit ba8be2dfc0de4434c798663336b81f7f95cde520)
Diffstat (limited to 'source4/scripting')
-rw-r--r--source4/scripting/ejs/smbcalls.c2
-rw-r--r--source4/scripting/python/config.m49
-rw-r--r--source4/scripting/python/config.mk7
-rw-r--r--source4/scripting/python/modules.c45
-rw-r--r--source4/scripting/python/smbpython.c6
-rw-r--r--source4/scripting/python/uuidmodule.c4
6 files changed, 64 insertions, 9 deletions
diff --git a/source4/scripting/ejs/smbcalls.c b/source4/scripting/ejs/smbcalls.c
index 8a3ce245d2..da13f1f6ef 100644
--- a/source4/scripting/ejs/smbcalls.c
+++ b/source4/scripting/ejs/smbcalls.c
@@ -173,7 +173,7 @@ _PUBLIC_ void ejs_exception(const char *reason)
*/
void smb_setup_ejs_functions(void (*exception_handler)(const char *))
{
- init_module_fn static_init[] = STATIC_smbcalls_MODULES;
+ init_module_fn static_init[] = { STATIC_smbcalls_MODULES, NULL };
init_module_fn *shared_init;
ejs_exception_handler = exception_handler;
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;
}