[SCM] Samba Shared Repository - branch v4-0-test updated -
release-4-0-0alpha2-285-gf24e5e8
Stefan Metzmacher
metze at samba.org
Fri Jan 4 09:38:42 GMT 2008
The branch, v4-0-test has been updated
via f24e5e8a2b16f2f1640cb573bdcb346cb3748f33 (commit)
via bc6aa49d8e33add2efa6f66630029f5305b56280 (commit)
via 336dae6d429f122f7f38a6c78d28b848ebfa3c67 (commit)
via 0ee0581f052d0b90b2697841aaa09e0955aff65a (commit)
via 885e5980d7d7fbafdcf308b8ba6f2560c5b467ec (commit)
via f47044aacc8eb6df856524744ab87bee997bae6d (commit)
via f1960ca7c4d1b75d64192efdd446482c6bbebcd9 (commit)
via 5c86cc6648169bf52161a1ffdbf17a38b62c611f (commit)
via ff67935be4980c701a9cd9a7fa435b8d1e02dfec (commit)
from 8a97886e24a4b969aa91409c06f423b71a45f6eb (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test
- Log -----------------------------------------------------------------
commit f24e5e8a2b16f2f1640cb573bdcb346cb3748f33
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Fri Jan 4 03:44:41 2008 -0600
r26663: Proper dependencies for pidl Python bindings.
commit bc6aa49d8e33add2efa6f66630029f5305b56280
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Fri Jan 4 03:44:38 2008 -0600
r26662: pidl/python: Add constructors for struct/union types.
commit 336dae6d429f122f7f38a6c78d28b848ebfa3c67
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Fri Jan 4 03:44:32 2008 -0600
r26661: pidl/python: More generic handling of NTSTATUS, add stubs for types.
commit 0ee0581f052d0b90b2697841aaa09e0955aff65a
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Thu Jan 3 23:58:38 2008 -0600
r26660: pidl/python: Generate stub functions for DCE/RPC client functions, constructor for interface objects.
commit 885e5980d7d7fbafdcf308b8ba6f2560c5b467ec
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Thu Jan 3 21:57:44 2008 -0600
r26659: pidl/python: Support string constants and handle modules.
commit f47044aacc8eb6df856524744ab87bee997bae6d
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Thu Jan 3 21:45:18 2008 -0600
r26658: pidl: Register Python modules.
commit f1960ca7c4d1b75d64192efdd446482c6bbebcd9
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Thu Jan 3 21:21:16 2008 -0600
r26657: pidl: Add basics for generating Python modules.
commit 5c86cc6648169bf52161a1ffdbf17a38b62c611f
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Thu Jan 3 21:21:12 2008 -0600
r26656: python: Add file documentating the status of the Python migration.
commit ff67935be4980c701a9cd9a7fa435b8d1e02dfec
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Thu Jan 3 21:21:05 2008 -0600
r26655: torture/auth/pac: remove uses of global_loadparm
-----------------------------------------------------------------------
Summary of changes:
source/librpc/config.mk | 4 +
source/librpc/idl-deps.pl | 2 +
source/main.mk | 3 +-
source/pidl/lib/Parse/Pidl/Samba4/Python.pm | 351 +++++++++++++++++++++++++++
source/pidl/pidl | 14 +-
source/script/build_idl.sh | 2 +-
source/scripting/python/STATUS | 20 ++
source/scripting/python/modules.c | 1 +
source/torture/auth/pac.c | 4 +-
9 files changed, 396 insertions(+), 5 deletions(-)
create mode 100644 source/pidl/lib/Parse/Pidl/Samba4/Python.pm
create mode 100644 source/scripting/python/STATUS
Changeset truncated at 500 lines:
diff --git a/source/librpc/config.mk b/source/librpc/config.mk
index 2b2f39b..debfbb6 100644
--- a/source/librpc/config.mk
+++ b/source/librpc/config.mk
@@ -594,3 +594,7 @@ PRIVATE_DEPENDENCIES = dcerpc NDR_IRPC EJSRPC
[PYTHON::swig_dcerpc]
SWIG_FILE = rpc/dcerpc.i
PUBLIC_DEPENDENCIES = LIBCLI_SMB NDR_MISC LIBSAMBA-UTIL LIBSAMBA-CONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG
+
+[PYTHON::python_echo]
+OBJ_FILES = gen_ndr/py_echo.o
+PRIVATE_DEPENDENCIES = NDR_ECHO
diff --git a/source/librpc/idl-deps.pl b/source/librpc/idl-deps.pl
index 2fffd6e..d5bfe0b 100755
--- a/source/librpc/idl-deps.pl
+++ b/source/librpc/idl-deps.pl
@@ -15,6 +15,8 @@ foreach(@ARGV) {
push (@{$vars{IDL_NDR_SERVER_C_FILES}}, "librpc/gen_ndr/ndr_$b\_s.c");
push (@{$vars{IDL_NDR_EJS_C_FILES}}, "librpc/gen_ndr/ndr_$b\_ejs.c");
push (@{$vars{IDL_NDR_EJS_H_FILES}}, "librpc/gen_ndr/ndr_$b\_ejs.h");
+ push (@{$vars{IDL_NDR_PY_C_FILES}}, "librpc/gen_ndr/py_$b.c");
+ push (@{$vars{IDL_NDR_PY_H_FILES}}, "librpc/gen_ndr/py_$b.h");
}
foreach (keys %vars) {
diff --git a/source/main.mk b/source/main.mk
index 38c76bb..7be6032 100644
--- a/source/main.mk
+++ b/source/main.mk
@@ -216,7 +216,8 @@ $(IDL_HEADER_FILES) \
$(IDL_NDR_PARSE_H_FILES) $(IDL_NDR_PARSE_C_FILES) \
$(IDL_NDR_CLIENT_C_FILES) $(IDL_NDR_CLIENT_H_FILES) \
$(IDL_NDR_SERVER_C_FILES) $(IDL_SWIG_FILES) \
- $(IDL_NDR_EJS_C_FILES) $(IDL_NDR_EJS_H_FILES): idl
+ $(IDL_NDR_EJS_C_FILES) $(IDL_NDR_EJS_H_FILES) \
+ $(IDL_NDR_PY_C_FILES) $(IDL_NDR_PY_H_FILES): idl
idl_full: pidl/lib/Parse/Pidl/IDL.pm pidl/lib/Parse/Pidl/Expr.pm
@CPP="$(CPP)" PERL="$(PERL)" srcdir=$(srcdir) $(srcdir)/script/build_idl.sh FULL
diff --git a/source/pidl/lib/Parse/Pidl/Samba4/Python.pm b/source/pidl/lib/Parse/Pidl/Samba4/Python.pm
new file mode 100644
index 0000000..874e7f8
--- /dev/null
+++ b/source/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -0,0 +1,351 @@
+###################################################
+# Python function wrapper generator
+# Copyright jelmer at samba.org 2007
+# released under the GNU GPL
+
+package Parse::Pidl::Samba4::Python;
+
+use Exporter;
+ at ISA = qw(Exporter);
+
+use strict;
+use Parse::Pidl::Typelist;
+use Parse::Pidl::Util qw(has_property ParseExpr);
+
+use vars qw($VERSION);
+$VERSION = '0.01';
+
+sub new($) {
+ my ($class) = @_;
+ my $self = { res => "", res_hdr => "", tabs => "", constants => {}};
+ bless($self, $class);
+}
+
+sub pidl_hdr ($$)
+{
+ my $self = shift;
+ $self->{res_hdr} .= shift;
+}
+
+sub pidl($$)
+{
+ my ($self, $d) = @_;
+ if ($d) {
+ $self->{res} .= $self->{tabs};
+ $self->{res} .= $d;
+ }
+ $self->{res} .= "\n";
+}
+
+sub indent($)
+{
+ my ($self) = @_;
+ $self->{tabs} .= "\t";
+}
+
+sub deindent($)
+{
+ my ($self) = @_;
+ $self->{tabs} = substr($self->{tabs}, 0, -1);
+}
+
+sub Import
+{
+ my $self = shift;
+ my @imports = @_;
+ foreach (@imports) {
+ s/\.idl\"$//;
+ s/^\"//;
+ $self->pidl_hdr("#include \"librpc/gen_ndr/py_$_\.h\"\n");
+ }
+}
+
+sub Const($$)
+{
+ my ($self, $const) = @_;
+ $self->{constants}->{$const->{NAME}} = [$const->{DATA}->{TYPE}, $const->{VALUE}];
+}
+
+sub FromTypeToPythonFunction($$)
+{
+ my ($self, $type) = @_;
+
+ #FIXME
+}
+
+sub FromPythonToTypeFunction($$)
+{
+ my ($self, $type) = @_;
+
+ #FIXME
+}
+
+sub TypeConstructor($$)
+{
+ my ($self, $type) = @_;
+
+ $self->pidl("staticforward PyTypeObject $type->{NAME}_ObjectType;");
+ $self->pidl("typedef struct {");
+ $self->indent;
+ $self->pidl("PyObject_HEAD");
+ $self->pidl("void *object;"); # FIXME: Use real type rather than void
+ $self->deindent;
+ $self->pidl("} $type->{NAME}_Object;");
+
+ $self->pidl("");
+
+ $self->pidl("static PyObject *py_$type->{NAME}_getattr(PyTypeObject *obj, char *name)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("return Py_None;");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+
+ $self->pidl("static void py_$type->{NAME}_dealloc(PyObject* self)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("$type->{NAME}_Object *obj = ($type->{NAME}_Object *)self;");
+ $self->pidl("talloc_free(obj->object);");
+ $self->pidl("PyObject_Del(self);");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+
+ $self->pidl("static PyObject *py_$type->{NAME}_setattr(PyTypeObject *obj, char *name, PyObject *value)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("return Py_None;");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+
+ $self->pidl("static PyTypeObject $type->{NAME}_ObjectType = {");
+ $self->indent;
+ $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
+ $self->pidl(".tp_name = (char *)\"$type->{NAME}\",");
+ $self->pidl(".tp_basicsize = sizeof($type->{NAME}_Object),");
+ $self->pidl(".tp_dealloc = py_$type->{NAME}_dealloc,");
+ $self->pidl(".tp_getattr = py_$type->{NAME}_getattr,");
+ $self->pidl(".tp_setattr = py_$type->{NAME}_setattr,");
+ $self->deindent;
+ $self->pidl("};");
+
+ $self->pidl("");
+
+ $self->pidl("static PyObject *py_$type->{NAME}(PyObject *self, PyObject *args)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("$type->{NAME}\_Object *ret;");
+ $self->pidl("ret = PyObject_New($type->{NAME}_Object, &$type->{NAME}_ObjectType);");
+ $self->pidl("return (PyObject *) ret;");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+}
+
+sub PythonFunction($$$)
+{
+ my ($self, $fn, $iface) = @_;
+
+ $self->pidl("static PyObject *py_$fn->{NAME}(PyObject *self, PyObject *args)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("$iface\_InterfaceObject *iface = ($iface\_InterfaceObject *)self;");
+ $self->pidl("NTSTATUS status;");
+ $self->pidl("");
+ # FIXME
+ $self->handle_ntstatus("status", "NULL");
+ $self->pidl("return Py_None;");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+}
+
+sub handle_ntstatus($$$)
+{
+ my ($self, $var, $retval) = @_;
+
+ $self->pidl("if (NT_STATUS_IS_ERR($var)) {");
+ $self->indent;
+ $self->pidl("PyErr_SetString(PyExc_RuntimeError, nt_errstr($var));");
+ $self->pidl("return $retval;");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+}
+
+sub Interface($$)
+{
+ my($self,$interface) = @_;
+
+ $self->pidl_hdr("#ifndef _HEADER_PYTHON_$interface->{NAME}\n");
+ $self->pidl_hdr("#define _HEADER_PYTHON_$interface->{NAME}\n\n");
+
+ $self->pidl_hdr("\n");
+
+ $self->Const($_) foreach (@{$interface->{CONSTS}});
+
+ foreach (@{$interface->{TYPES}}) {
+ $self->FromTypeToPythonFunction($_);
+ $self->FromPythonToTypeFunction($_);
+ $self->TypeConstructor($_);
+ }
+
+ $self->pidl("staticforward PyTypeObject $interface->{NAME}_InterfaceType;");
+ $self->pidl("typedef struct {");
+ $self->indent;
+ $self->pidl("PyObject_HEAD");
+ $self->pidl("struct dcerpc_pipe *pipe;");
+ $self->deindent;
+ $self->pidl("} $interface->{NAME}_InterfaceObject;");
+
+ $self->pidl("");
+
+ foreach my $d (@{$interface->{FUNCTIONS}}) {
+ next if not defined($d->{OPNUM});
+ next if has_property($d, "nopython");
+
+ $self->PythonFunction($d, $interface->{NAME});
+ }
+
+ $self->pidl("static PyMethodDef interface_$interface->{NAME}\_methods[] = {");
+ $self->indent;
+ foreach my $d (@{$interface->{FUNCTIONS}}) {
+ next if not defined($d->{OPNUM});
+ next if has_property($d, "nopython");
+
+ my $fn_name = $d->{NAME};
+
+ $fn_name =~ s/^$interface->{NAME}_//;
+
+ $self->pidl("{ (char *)\"$fn_name\", (PyCFunction)py_$d->{NAME}, METH_VARARGS|METH_KEYWORDS, NULL },");
+ }
+ $self->pidl("{ NULL, NULL, 0, NULL }");
+ $self->deindent;
+ $self->pidl("};");
+ $self->pidl("");
+
+ $self->pidl("static void interface_$interface->{NAME}_dealloc(PyObject* self)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("$interface->{NAME}_InterfaceObject *interface = ($interface->{NAME}_InterfaceObject *)self;");
+ $self->pidl("talloc_free(interface->pipe);");
+ $self->pidl("PyObject_Del(self);");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
+
+ $self->pidl("static PyObject *interface_$interface->{NAME}_getattr(PyTypeObject *obj, char *name)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("return Py_FindMethod(interface_$interface->{NAME}\_methods, (PyObject *)obj, name);");
+ $self->deindent;
+ $self->pidl("}");
+
+ $self->pidl("");
+
+ $self->pidl("static PyTypeObject $interface->{NAME}_InterfaceType = {");
+ $self->indent;
+ $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
+ $self->pidl(".tp_name = (char *)\"$interface->{NAME}\",");
+ $self->pidl(".tp_basicsize = sizeof($interface->{NAME}_InterfaceObject),");
+ $self->pidl(".tp_dealloc = interface_$interface->{NAME}_dealloc,");
+ $self->pidl(".tp_getattr = interface_$interface->{NAME}_getattr,");
+ $self->deindent;
+ $self->pidl("};");
+
+ $self->pidl("");
+
+ $self->pidl("static PyObject *interface_$interface->{NAME}(PyObject *self, PyObject *args)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("$interface->{NAME}_InterfaceObject *ret;");
+ $self->pidl("const char *binding_string;");
+ $self->pidl("struct cli_credentials *credentials;");
+ $self->pidl("struct loadparm_context *lp_ctx;");
+ $self->pidl("NTSTATUS status;");
+ $self->pidl("");
+
+ # FIXME: Arguments: binding string, credentials, loadparm context
+ $self->pidl("ret = PyObject_New($interface->{NAME}_InterfaceObject, &$interface->{NAME}_InterfaceType);");
+ $self->pidl("");
+
+ $self->pidl("status = dcerpc_pipe_connect(NULL, &ret->pipe, binding_string, ");
+ $self->pidl(" &ndr_table_$interface->{NAME}, credentials, NULL, lp_ctx);");
+ $self->handle_ntstatus("status", "NULL");
+
+ $self->pidl("return (PyObject *)ret;");
+ $self->deindent;
+ $self->pidl("}");
+
+ $self->pidl("");
+
+ $self->pidl_hdr("\n");
+ $self->pidl_hdr("#endif /* _HEADER_NDR_$interface->{NAME} */\n");
+}
+
+sub Parse($$$$)
+{
+ my($self,$basename,$ndr,$hdr) = @_;
+
+ my $py_hdr = $hdr;
+ $py_hdr =~ s/ndr_([^\/]+)$/py_$1/g;
+
+ $self->pidl_hdr("/* header auto-generated by pidl */\n\n");
+
+ $self->pidl("
+/* Python wrapper functions auto-generated by pidl */
+#include \"includes.h\"
+#include <Python.h>
+#include \"librpc/rpc/dcerpc.h\"
+#include \"$hdr\"
+#include \"$py_hdr\"
+
+");
+
+ foreach my $x (@$ndr) {
+ ($x->{TYPE} eq "INTERFACE") && $self->Interface($x);
+ ($x->{TYPE} eq "IMPORT") && $self->Import(@{$x->{PATHS}});
+ }
+
+ $self->pidl("static PyMethodDef $basename\_methods[] = {");
+ $self->indent;
+ foreach my $x (@$ndr) {
+ next if ($x->{TYPE} ne "INTERFACE");
+ $self->pidl("{ (char *)\"$x->{NAME}\", (PyCFunction)interface_$x->{NAME}, METH_VARARGS|METH_KEYWORDS, NULL },");
+
+ foreach my $d (@{$x->{TYPES}}) {
+ next if has_property($d, "nopython");
+ next if ($d->{TYPE} eq "ENUM" or $d->{TYPE} eq "BITMAP");
+
+ my $fn_name = $d->{NAME};
+
+ $fn_name =~ s/^$x->{NAME}_//;
+ $fn_name =~ s/^$basename\_//;
+
+ $self->pidl("{ (char *)\"$fn_name\", (PyCFunction)py_$d->{NAME}, METH_VARARGS|METH_KEYWORDS, NULL },");
+ }
+ }
+
+ $self->pidl("{ NULL, NULL, 0, NULL }");
+ $self->deindent;
+ $self->pidl("};");
+
+ $self->pidl("");
+
+ $self->pidl("void init$basename(void)");
+ $self->pidl("{");
+ $self->indent;
+ $self->pidl("PyObject *m;");
+ $self->pidl("m = Py_InitModule((char *)\"$basename\", $basename\_methods);");
+ foreach (keys %{$self->{constants}}) {
+ # FIXME: Handle non-string constants
+ $self->pidl("PyModule_AddObject(m, \"$_\", PyString_FromString(" . $self->{constants}->{$_}->[1] . "));");
+ }
+ $self->deindent;
+ $self->pidl("}");
+ return ($self->{res_hdr}, $self->{res});
+}
+
+1;
diff --git a/source/pidl/pidl b/source/pidl/pidl
index 4150ff7..4395df2 100755
--- a/source/pidl/pidl
+++ b/source/pidl/pidl
@@ -17,7 +17,7 @@ pidl - An IDL compiler written in Perl
pidl --help
-pidl [--outputdir[=OUTNAME]] [--includedir DIR...] [--parse-idl-tree] [--dump-idl-tree] [--dump-ndr-tree] [--header[=OUTPUT]] [--ejs[=OUTPUT]] [--swig[=OUTPUT]] [--ndr-parser[=OUTPUT]] [--client] [--server] [--warn-compat] [--quiet] [--verbose] [--template] [--ws-parser[=OUTPUT]] [--diff] [--dump-idl] [--tdr-parser[=OUTPUT]] [--samba3-ndr-client[=OUTPUT]] [--samba3-ndr-server[=OUTPUT]] [<idlfile>.idl]...
+pidl [--outputdir[=OUTNAME]] [--includedir DIR...] [--parse-idl-tree] [--dump-idl-tree] [--dump-ndr-tree] [--header[=OUTPUT]] [--ejs[=OUTPUT]] [--python[=OUTPUT]] [--swig[=OUTPUT]] [--ndr-parser[=OUTPUT]] [--client] [--server] [--warn-compat] [--quiet] [--verbose] [--template] [--ws-parser[=OUTPUT]] [--diff] [--dump-idl] [--tdr-parser[=OUTPUT]] [--samba3-ndr-client[=OUTPUT]] [--samba3-ndr-server[=OUTPUT]] [<idlfile>.idl]...
=head1 DESCRIPTION
@@ -468,6 +468,7 @@ my($opt_tdr_parser);
my($opt_ws_parser);
my($opt_swig);
my($opt_ejs);
+my($opt_python);
my($opt_quiet) = 0;
my($opt_outputdir) = '.';
my($opt_verbose) = 0;
@@ -504,6 +505,7 @@ Samba 4 output:
--client[=OUTFILE] create a C NDR client [ndr_BASENAME_c.c]
--tdr-parser[=OUTFILE] create a C TDR parser [tdr_BASENAME.c]
--ejs[=OUTFILE] create ejs wrapper file [BASENAME_ejs.c]
+ --python[=OUTFILE] create python wrapper file [py_BASENAME.c]
--swig[=OUTFILE] create swig wrapper file [BASENAME.i]
--server[=OUTFILE] create server boilerplate [ndr_BASENAME_s.c]
--template print a template for a pipe
@@ -538,6 +540,7 @@ my $result = GetOptions (
'client:s' => \$opt_client,
'ws-parser:s' => \$opt_ws_parser,
'ejs' => \$opt_ejs,
+ 'python' => \$opt_python,
'diff' => \$opt_diff,
'swig:s' => \$opt_swig,
'quiet' => \$opt_quiet,
@@ -606,6 +609,7 @@ sub process_file($)
defined($opt_header) or
defined($opt_ndr_parser) or
defined($opt_ejs) or
+ defined($opt_python) or
defined($opt_dump_ndr_tree) or
defined($opt_samba3_header) or
defined($opt_samba3_parser) or
@@ -657,6 +661,14 @@ sub process_file($)
FileSave("$outputdir/ndr_$basename\_ejs.h", $hdr);
}
+ if (defined($opt_python)) {
+ require Parse::Pidl::Samba4::Python;
+ my $generator = new Parse::Pidl::Samba4::Python();
+ my ($hdr,$prsr) = $generator->Parse($basename, $ndr, $h_filename);
+ FileSave("$outputdir/py_$basename.c", $prsr);
+ FileSave("$outputdir/py_$basename.h", $hdr);
+ }
+
if (defined($opt_server)) {
require Parse::Pidl::Samba4::NDR::Server;
diff --git a/source/script/build_idl.sh b/source/script/build_idl.sh
index ecf6657..ea0cb78 100755
--- a/source/script/build_idl.sh
+++ b/source/script/build_idl.sh
@@ -6,7 +6,7 @@ PIDL_EXTRA_ARGS="$*"
[ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
-PIDL="$PERL $srcdir/pidl/pidl --outputdir librpc/gen_ndr --header --ndr-parser --server --client --swig --ejs $PIDL_EXTRA_ARGS"
+PIDL="$PERL $srcdir/pidl/pidl --outputdir librpc/gen_ndr --header --ndr-parser --server --client --swig --ejs --python $PIDL_EXTRA_ARGS"
if [ x$FULLBUILD = xFULL ]; then
echo Rebuilding all idl files in librpc/idl
diff --git a/source/scripting/python/STATUS b/source/scripting/python/STATUS
new file mode 100644
index 0000000..b39563d
--- /dev/null
+++ b/source/scripting/python/STATUS
@@ -0,0 +1,20 @@
+dsdb/samdb/ldb_modules/tests/samba3sam.py
+lib/ldb/tests/python/ldap.py
+SWAT
+hierarchy
+DCE/RPC bindings
+ - pidl:
+ Parse::Pidl::Samba::Python
+ - wrap struct/bitmap/enum/union types
+ - __ndr_pack__/__ndr_unpack__ members
+ Parse::Pidl::Samba::NDR::Python
+ - pidl generated client fns
+ - one class per interface
+ - AddOne()
+
+ - scripting/bin/smbstatus.py
+ - scripting/bin/winreg.py
+
+not important before making Python the default:
+- scripting/python/samba/upgrade.py
+- install python modules into system
diff --git a/source/scripting/python/modules.c b/source/scripting/python/modules.c
index 6094cb4..55df51d 100644
--- a/source/scripting/python/modules.c
+++ b/source/scripting/python/modules.c
@@ -34,6 +34,7 @@ extern void init_dcerpc(void);
--
Samba Shared Repository
More information about the samba-cvs
mailing list