summaryrefslogtreecommitdiff
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
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)
-rw-r--r--source4/auth/auth.c2
-rw-r--r--source4/auth/config.mk2
-rw-r--r--source4/auth/credentials/config.mk2
-rw-r--r--source4/auth/gensec/gensec.c2
-rwxr-xr-xsource4/build/smb_build/dot.pl8
-rw-r--r--source4/build/smb_build/header.pm14
-rw-r--r--source4/build/smb_build/input.pm19
-rw-r--r--source4/lib/events/events.c2
-rw-r--r--source4/lib/ldb/common/ldb_modules.c2
-rw-r--r--source4/lib/ldb/python.mk2
-rw-r--r--source4/lib/registry/config.mk2
-rw-r--r--source4/ntptr/ntptr_base.c2
-rw-r--r--source4/ntvfs/ntvfs_base.c2
-rw-r--r--source4/ntvfs/sysdep/sys_notify.c2
-rw-r--r--source4/param/param.i2
-rw-r--r--source4/param/param_wrap.c2
-rw-r--r--source4/param/share.c2
-rw-r--r--source4/rpc_server/service_rpc.c2
-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
-rw-r--r--source4/selftest/env/Samba4.pm1
-rw-r--r--source4/smbd/process_model.c2
-rw-r--r--source4/smbd/server.c2
-rw-r--r--source4/torture/torture.c2
28 files changed, 107 insertions, 44 deletions
diff --git a/source4/auth/auth.c b/source4/auth/auth.c
index 918890b3f6..4bfc92e8f9 100644
--- a/source4/auth/auth.c
+++ b/source4/auth/auth.c
@@ -516,7 +516,7 @@ NTSTATUS auth_init(void)
{
static bool initialized = false;
- init_module_fn static_init[] = STATIC_auth_MODULES;
+ init_module_fn static_init[] = { STATIC_auth_MODULES, NULL };
if (initialized) return NT_STATUS_OK;
initialized = true;
diff --git a/source4/auth/config.mk b/source4/auth/config.mk
index 3514059cf0..4d111107a9 100644
--- a/source4/auth/config.mk
+++ b/source4/auth/config.mk
@@ -92,6 +92,6 @@ PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL
#######################
[PYTHON::swig_auth]
-PUBLIC_DEPENDENCIES = auth_system_session LIBPYTHON
+PUBLIC_DEPENDENCIES = auth_system_session
PRIVATE_DEPENDENCIES = SAMDB
SWIG_FILE = auth.i
diff --git a/source4/auth/credentials/config.mk b/source4/auth/credentials/config.mk
index 4c8308d01f..8d33bdbd55 100644
--- a/source4/auth/credentials/config.mk
+++ b/source4/auth/credentials/config.mk
@@ -14,5 +14,5 @@ PRIVATE_DEPENDENCIES = \
SECRETS
[PYTHON::swig_credentials]
-PUBLIC_DEPENDENCIES = CREDENTIALS LIBPYTHON
+PUBLIC_DEPENDENCIES = CREDENTIALS
SWIG_FILE = credentials.i
diff --git a/source4/auth/gensec/gensec.c b/source4/auth/gensec/gensec.c
index f055b1a995..6f7ff91db6 100644
--- a/source4/auth/gensec/gensec.c
+++ b/source4/auth/gensec/gensec.c
@@ -1268,7 +1268,7 @@ NTSTATUS gensec_init(struct loadparm_context *lp_ctx)
{
static bool initialized = false;
- init_module_fn static_init[] = STATIC_gensec_MODULES;
+ init_module_fn static_init[] = { STATIC_gensec_MODULES, NULL };
init_module_fn *shared_init;
if (initialized) return NT_STATUS_OK;
diff --git a/source4/build/smb_build/dot.pl b/source4/build/smb_build/dot.pl
index c8203d4cdd..82f89c081a 100755
--- a/source4/build/smb_build/dot.pl
+++ b/source4/build/smb_build/dot.pl
@@ -25,9 +25,11 @@ sub generate($$$)
foreach my $part (values %{$depend}) {
next if (defined($only) and not contains($only,$part->{NAME}));
- foreach my $elem (@{$part->{PUBLIC_DEPENDENCIES}},
- @{$part->{PRIVATE_DEPENDENCIES}}) {
- $res .= "\t\"$part->{NAME}\" -> \"$elem\";\n";
+ foreach my $elem (@{$part->{PUBLIC_DEPENDENCIES}}) {
+ $res .= "\t\"$part->{NAME}\" -> \"$elem\"; /* public */\n";
+ }
+ foreach my $elem (@{$part->{PRIVATE_DEPENDENCIES}}) {
+ $res .= "\t\"$part->{NAME}\" -> \"$elem\"; /* private */\n";
}
}
diff --git a/source4/build/smb_build/header.pm b/source4/build/smb_build/header.pm
index 34e81a3a24..b0dced4897 100644
--- a/source4/build/smb_build/header.pm
+++ b/source4/build/smb_build/header.pm
@@ -39,16 +39,18 @@ sub _prepare_build_h($)
$name =~ s/-/_/g;
$DEFINE->{COMMENT} = "$key->{TYPE} $key->{NAME} INIT";
$DEFINE->{KEY} = "STATIC_$name\_MODULES";
- $DEFINE->{VAL} = "{ \\\n";
+ $DEFINE->{VAL} = "\\\n";
foreach (@{$key->{INIT_FUNCTIONS}}) {
$DEFINE->{VAL} .= "\t$_, \\\n";
- my $fn = $key->{INIT_FUNCTION_TYPE};
- unless(defined($fn)) { $fn = "NTSTATUS (*) (void)"; }
- $fn =~ s/\(\*\)/$_/;
- $output .= "$fn;\n";
+ unless (/{/) {
+ my $fn = $key->{INIT_FUNCTION_TYPE};
+ unless(defined($fn)) { $fn = "NTSTATUS (*) (void)"; }
+ $fn =~ s/\(\*\)/$_/;
+ $output .= "$fn;\n";
+ }
}
- $DEFINE->{VAL} .= "\tNULL \\\n }";
+ $DEFINE->{VAL} =~ s/, \\\n$//g; # Remove the last comma
push(@defines,$DEFINE);
}
diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm
index 431fd3cb83..ae37a7602b 100644
--- a/source4/build/smb_build/input.pm
+++ b/source4/build/smb_build/input.pm
@@ -108,7 +108,7 @@ sub check_module($$$)
my $sane_subsystem = lc($mod->{SUBSYSTEM});
$sane_subsystem =~ s/^lib//;
$mod->{INSTALLDIR} = "MODULESDIR/$sane_subsystem";
- push (@{$mod->{PRIVATE_DEPENDENCIES}}, $mod->{SUBSYSTEM});
+ push (@{$mod->{PUBLIC_DEPENDENCIES}}, $mod->{SUBSYSTEM});
}
if (grep(/INTEGRATED/, @{$mod->{OUTPUT_TYPE}})) {
push (@{$INPUT->{$mod->{SUBSYSTEM}}{INIT_FUNCTIONS}}, $mod->{INIT_FUNCTION}) if defined($mod->{INIT_FUNCTION});
@@ -147,14 +147,14 @@ sub check_library($$$)
add_libreplace($lib);
}
-sub check_python($$)
+sub check_python($$$)
{
- my ($INPUT, $python) = @_;
+ my ($INPUT, $python, $default_ot) = @_;
return if ($INPUT->{LIBPYTHON}{ENABLE} ne "YES");
$python->{INSTALLDIR} = "PYTHONDIR";
- push (@{$python->{PUBLIC_DEPENDENCIES}}, "LIBPYTHON");
+ unless (defined($python->{CFLAGS})) { $python->{CFLAGS} = []; }
if (defined($python->{SWIG_FILE})) {
my $dirname = dirname($python->{SWIG_FILE});
my $basename = basename($python->{SWIG_FILE}, ".i");
@@ -165,18 +165,20 @@ sub check_python($$)
$python->{OBJ_FILES} = ["$dirname$basename\_wrap.o"];
$python->{LIBRARY_REALNAME} = "_$basename.\$(SHLIBEXT)";
$python->{PYTHON_FILES} = ["$dirname$basename.py"];
- unless (defined($python->{CFLAGS})) { $python->{CFLAGS} = []; }
push (@{$python->{CFLAGS}}, $config::config{CFLAG_NO_UNUSED_MACROS});
push (@{$python->{CFLAGS}}, $config::config{CFLAG_NO_CAST_QUAL});
+ $python->{INIT_FUNCTION} = "{ (char *)\"_$basename\", init_$basename }";
} else {
my $basename = $python->{NAME};
$basename =~ s/^python_//g;
$python->{LIBRARY_REALNAME} = "$basename.\$(SHLIBEXT)";
+ $python->{INIT_FUNCTION} = "{ (char *)\"$basename\", init$basename }";
}
+ push (@{$python->{CFLAGS}}, @{$INPUT->{EXT_LIB_PYTHON}->{CFLAGS}});
$python->{SUBSYSTEM} = "LIBPYTHON";
- check_module($INPUT, $python, ["SHARED_LIBRARY"]);
+ check_module($INPUT, $python, $default_ot);
}
sub check_binary($$)
@@ -204,7 +206,8 @@ sub import_integrated($$)
push (@{$lib->{FULL_OBJ_LIST}}, "\$($mod->{TYPE}_$mod->{NAME}_FULL_OBJ_LIST)");
push (@{$lib->{LINK_FLAGS}}, "\$($mod->{TYPE}_$mod->{NAME}_LINK_FLAGS)");
- push (@{$lib->{PRIVATE_DEPENDENCIES}}, @{$mod->{PUBLIC_DEPENDENCIES}}) if defined($mod->{PUBLIC_DEPENDENCIES});
+ push (@{$lib->{CFLAGS}}, @{$mod->{CFLAGS}}) if defined($mod->{CFLAGS});
+ push (@{$lib->{PUBLIC_DEPENDENCIES}}, @{$mod->{PUBLIC_DEPENDENCIES}}) if defined($mod->{PUBLIC_DEPENDENCIES});
push (@{$lib->{PRIVATE_DEPENDENCIES}}, @{$mod->{PRIVATE_DEPENDENCIES}}) if defined($mod->{PRIVATE_DEPENDENCIES});
$mod->{ENABLE} = "NO";
@@ -288,7 +291,7 @@ sub check($$$$$)
} elsif ($part->{TYPE} eq "BINARY") {
check_binary($INPUT, $part);
} elsif ($part->{TYPE} eq "PYTHON") {
- check_python($INPUT, $part);
+ check_python($INPUT, $part, $module_ot);
} elsif ($part->{TYPE} eq "EXT_LIB") {
} else {
die("Unknown type $part->{TYPE}");
diff --git a/source4/lib/events/events.c b/source4/lib/events/events.c
index fd736e46d8..db7c3a5066 100644
--- a/source4/lib/events/events.c
+++ b/source4/lib/events/events.c
@@ -102,7 +102,7 @@ void event_set_default_backend(const char *backend)
static void event_backend_init(void)
{
#if _SAMBA_BUILD_
- init_module_fn static_init[] = STATIC_LIBEVENTS_MODULES;
+ init_module_fn static_init[] = { STATIC_LIBEVENTS_MODULES, NULL };
init_module_fn *shared_init;
if (event_backends) return;
shared_init = load_samba_modules(NULL, global_loadparm, "events");
diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c
index 72ed969298..f30206dc5b 100644
--- a/source4/lib/ldb/common/ldb_modules.c
+++ b/source4/lib/ldb/common/ldb_modules.c
@@ -168,7 +168,7 @@ static const struct ldb_module_ops *ldb_find_module_ops(const char *name)
int ldb_global_init(void)
{
- int (*static_init_fns[])(void) = STATIC_LIBLDB_MODULES;
+ int (*static_init_fns[])(void) = { STATIC_LIBLDB_MODULES, NULL };
static int initialized = 0;
int ret = 0, i;
diff --git a/source4/lib/ldb/python.mk b/source4/lib/ldb/python.mk
index 12badf04f6..f81c2e3e16 100644
--- a/source4/lib/ldb/python.mk
+++ b/source4/lib/ldb/python.mk
@@ -1,7 +1,7 @@
#######################
# Start LIBRARY swig_ldb
[PYTHON::swig_ldb]
-PUBLIC_DEPENDENCIES = LIBLDB LIBPYTHON
+PUBLIC_DEPENDENCIES = LIBLDB
SWIG_FILE = ldb.i
# End LIBRARY swig_ldb
#######################
diff --git a/source4/lib/registry/config.mk b/source4/lib/registry/config.mk
index b289ff9afd..f1f50479cb 100644
--- a/source4/lib/registry/config.mk
+++ b/source4/lib/registry/config.mk
@@ -102,6 +102,6 @@ OBJ_FILES = \
tests/registry.o
[PYTHON::swig_registry]
-PUBLIC_DEPENDENCIES = registry LIBPYTHON
+PUBLIC_DEPENDENCIES = registry
SWIG_FILE = registry.i
diff --git a/source4/ntptr/ntptr_base.c b/source4/ntptr/ntptr_base.c
index e184afcfd5..275f204524 100644
--- a/source4/ntptr/ntptr_base.c
+++ b/source4/ntptr/ntptr_base.c
@@ -71,7 +71,7 @@ NTSTATUS ntptr_register(const void *_ops)
NTSTATUS ntptr_init(struct loadparm_context *lp_ctx)
{
- init_module_fn static_init[] = STATIC_ntptr_MODULES;
+ init_module_fn static_init[] = { STATIC_ntptr_MODULES, NULL };
init_module_fn *shared_init = load_samba_modules(NULL, lp_ctx, "ntptr");
run_init_functions(static_init);
diff --git a/source4/ntvfs/ntvfs_base.c b/source4/ntvfs/ntvfs_base.c
index 28f43eabe8..d4ae6c8b4f 100644
--- a/source4/ntvfs/ntvfs_base.c
+++ b/source4/ntvfs/ntvfs_base.c
@@ -202,7 +202,7 @@ NTSTATUS ntvfs_init_connection(TALLOC_CTX *mem_ctx, struct share_config *scfg, e
NTSTATUS ntvfs_init(struct loadparm_context *lp_ctx)
{
static bool initialized = false;
- init_module_fn static_init[] = STATIC_ntvfs_MODULES;
+ init_module_fn static_init[] = { STATIC_ntvfs_MODULES, NULL };
init_module_fn *shared_init;
if (initialized) return NT_STATUS_OK;
diff --git a/source4/ntvfs/sysdep/sys_notify.c b/source4/ntvfs/sysdep/sys_notify.c
index 1664461d33..a6d0a698bc 100644
--- a/source4/ntvfs/sysdep/sys_notify.c
+++ b/source4/ntvfs/sysdep/sys_notify.c
@@ -125,7 +125,7 @@ _PUBLIC_ NTSTATUS sys_notify_init(void)
{
static bool initialized = false;
- init_module_fn static_init[] = STATIC_sys_notify_MODULES;
+ init_module_fn static_init[] = { STATIC_sys_notify_MODULES, NULL };
init_module_fn *shared_init;
if (initialized) return NT_STATUS_OK;
diff --git a/source4/param/param.i b/source4/param/param.i
index 55c7b3fe0c..11cda9910a 100644
--- a/source4/param/param.i
+++ b/source4/param/param.i
@@ -186,7 +186,7 @@ typedef struct param_context {
struct param_opt *opt = param_get_add($self, parameter, section_name);
talloc_free(opt->value);
- opt->value = talloc_strdup(opt, PyObject_Str(ob));
+ opt->value = talloc_strdup(opt, PyString_AsString(PyObject_Str(ob)));
return 0;
}
diff --git a/source4/param/param_wrap.c b/source4/param/param_wrap.c
index d594955f38..49c986aeb7 100644
--- a/source4/param/param_wrap.c
+++ b/source4/param/param_wrap.c
@@ -2747,7 +2747,7 @@ SWIGINTERN int param_set(param *self,char const *parameter,PyObject *ob,char con
struct param_opt *opt = param_get_add(self, parameter, section_name);
talloc_free(opt->value);
- opt->value = talloc_strdup(opt, PyObject_Str(ob));
+ opt->value = talloc_strdup(opt, PyString_AsString(PyObject_Str(ob)));
return 0;
}
diff --git a/source4/param/share.c b/source4/param/share.c
index 2ada9999ea..edbb68b5f0 100644
--- a/source4/param/share.c
+++ b/source4/param/share.c
@@ -146,7 +146,7 @@ NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, const char *backend_name
*/
NTSTATUS share_init(void)
{
- init_module_fn static_init[] = STATIC_share_MODULES;
+ init_module_fn static_init[] = { STATIC_share_MODULES, NULL };
run_init_functions(static_init);
diff --git a/source4/rpc_server/service_rpc.c b/source4/rpc_server/service_rpc.c
index 33a86851a8..0483736912 100644
--- a/source4/rpc_server/service_rpc.c
+++ b/source4/rpc_server/service_rpc.c
@@ -467,7 +467,7 @@ static NTSTATUS dcesrv_init(struct event_context *event_context,
NTSTATUS server_service_rpc_init(void)
{
- init_module_fn static_init[] = STATIC_dcerpc_server_MODULES;
+ init_module_fn static_init[] = { STATIC_dcerpc_server_MODULES, NULL };
init_module_fn *shared_init = load_samba_modules(NULL, global_loadparm, "dcerpc_server");
run_init_functions(static_init);
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;
}
diff --git a/source4/selftest/env/Samba4.pm b/source4/selftest/env/Samba4.pm
index 4f8b96d332..ae7302fc4a 100644
--- a/source4/selftest/env/Samba4.pm
+++ b/source4/selftest/env/Samba4.pm
@@ -640,6 +640,7 @@ nogroup:x:65534:nobody
push (@provision_options, "NSS_WRAPPER_PASSWD=\"$nsswrap_passwd\"");
push (@provision_options, "NSS_WRAPPER_GROUP=\"$nsswrap_group\"");
if (defined($ENV{PROVISION_PYTHON})) {
+ push (@provision_options, "$self->{bindir}/smbpython");
push (@provision_options, "$self->{setupdir}/provision.py");
} else {
push (@provision_options, "$self->{bindir}/smbscript");
diff --git a/source4/smbd/process_model.c b/source4/smbd/process_model.c
index e240ae2c60..dc3ede613c 100644
--- a/source4/smbd/process_model.c
+++ b/source4/smbd/process_model.c
@@ -82,7 +82,7 @@ _PUBLIC_ NTSTATUS register_process_model(const void *_ops)
NTSTATUS process_model_init(struct loadparm_context *lp_ctx)
{
- init_module_fn static_init[] = STATIC_process_model_MODULES;
+ init_module_fn static_init[] = { STATIC_process_model_MODULES, NULL };
init_module_fn *shared_init = load_samba_modules(NULL, lp_ctx, "process_model");
run_init_functions(static_init);
diff --git a/source4/smbd/server.c b/source4/smbd/server.c
index 3f1d3c35d8..78892b6760 100644
--- a/source4/smbd/server.c
+++ b/source4/smbd/server.c
@@ -187,7 +187,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
bool opt_interactive = false;
int opt;
poptContext pc;
- init_module_fn static_init[] = STATIC_service_MODULES;
+ init_module_fn static_init[] = { STATIC_service_MODULES, NULL };
init_module_fn *shared_init;
struct event_context *event_ctx;
NTSTATUS status;
diff --git a/source4/torture/torture.c b/source4/torture/torture.c
index f0538c0362..6bce38363e 100644
--- a/source4/torture/torture.c
+++ b/source4/torture/torture.c
@@ -64,7 +64,7 @@ struct torture_context *torture_context_init(TALLOC_CTX *mem_ctx,
int torture_init(void)
{
- init_module_fn static_init[] = STATIC_torture_MODULES;
+ init_module_fn static_init[] = { STATIC_torture_MODULES, NULL };
init_module_fn *shared_init = load_samba_modules(NULL, cmdline_lp_ctx, "torture");
run_init_functions(static_init);