The branch, master has been updated via 7f75ee0... ldb: Install ldb_handlers.h header. via fe8302b... ldb: Remove Samba-specific symbols. via 1bc53f0... ldb: Move utility functions to separate file. via 82d56b9... ldb: Fix dependencies when building with system ldb. from 471ed70... s3:smbd map_username() doesn't need sconn anymore
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 7f75ee025ff9c02763fb9201d94af4b2739c8e03 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon May 31 18:29:11 2010 +0200 ldb: Install ldb_handlers.h header. commit fe8302b235197e359a20ba0489eb72b54793963e Author: Jelmer Vernooij <jel...@samba.org> Date: Mon May 31 18:28:09 2010 +0200 ldb: Remove Samba-specific symbols. commit 1bc53f0213b04e30ebf2ac60695c84c5781e4e72 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon May 31 18:12:05 2010 +0200 ldb: Move utility functions to separate file. commit 82d56b937445585b9e60451daf660aee5ace0523 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon May 31 16:05:41 2010 +0200 ldb: Fix dependencies when building with system ldb. ----------------------------------------------------------------------- Summary of changes: source4/auth/wscript_build | 2 +- source4/dsdb/wscript_build | 2 +- source4/lib/ldb/ABI/ldb-samba4-0.9.11.sigs | 5 -- source4/lib/ldb/pyldb_util.c | 81 ++++++++++++++++++++++++++++ source4/lib/ldb/tools/cmdline.c | 10 ++-- source4/lib/ldb/tools/ldbedit.c | 7 +++ source4/lib/ldb/tools/ldbsearch.c | 6 ++ source4/lib/ldb/tools/ldbtest.c | 5 ++ source4/lib/ldb/wscript | 25 ++++++--- source4/scripting/python/wscript_build | 2 +- 10 files changed, 124 insertions(+), 21 deletions(-) create mode 100644 source4/lib/ldb/pyldb_util.c Changeset truncated at 500 lines: diff --git a/source4/auth/wscript_build b/source4/auth/wscript_build index 349171e..db8fdf8 100644 --- a/source4/auth/wscript_build +++ b/source4/auth/wscript_build @@ -12,7 +12,7 @@ bld.SAMBA_SUBSYSTEM('auth_session', public_deps='CREDENTIALS', public_headers='session.h', header_path='samba', - deps='SAMDB' + deps='SAMDB auth_sam' ) diff --git a/source4/dsdb/wscript_build b/source4/dsdb/wscript_build index 1bf8413..0a1ea1c 100644 --- a/source4/dsdb/wscript_build +++ b/source4/dsdb/wscript_build @@ -51,6 +51,6 @@ bld.SAMBA_MODULE('DNS_UPDATE_SRV', bld.SAMBA_PYTHON('python_dsdb', source='pydsdb.c', - deps='SAMDB pyldb', + deps='SAMDB pyldb_util', realname='samba/dsdb.so' ) diff --git a/source4/lib/ldb/ABI/ldb-samba4-0.9.11.sigs b/source4/lib/ldb/ABI/ldb-samba4-0.9.11.sigs index 4639220..2206e79 100644 --- a/source4/lib/ldb/ABI/ldb-samba4-0.9.11.sigs +++ b/source4/lib/ldb/ABI/ldb-samba4-0.9.11.sigs @@ -166,7 +166,6 @@ ldb_parse_tree_copy_shallow: struct ldb_parse_tree *(TALLOC_CTX *, const struct ldb_qsort: void (void * const, size_t, size_t, void *, ldb_qsort_cmp_fn_t) ldb_register_backend: int (const char *, ldb_connect_fn) ldb_register_module: int (const struct ldb_module_ops *) -ldb_register_samba_handlers: int (struct ldb_context *) ldb_rename: int (struct ldb_context *, struct ldb_dn *, struct ldb_dn *) ldb_reply_add_control: int (struct ldb_reply *, const char *, bool, void *) ldb_reply_get_control: struct ldb_control *(struct ldb_reply *, const char *) @@ -177,8 +176,6 @@ ldb_request_get_control: struct ldb_control *(struct ldb_request *, const char * ldb_request_get_status: int (struct ldb_request *) ldb_request_set_state: void (struct ldb_request *, int) ldb_reset_err_string: void (struct ldb_context *) -ldb_samba_syntax_by_lDAPDisplayName: const struct ldb_schema_syntax *(struct ldb_context *, const char *) -ldb_samba_syntax_by_name: const struct ldb_schema_syntax *(struct ldb_context *, const char *) ldb_schema_attribute_add: int (struct ldb_context *, const char *, unsigned int, const char *) ldb_schema_attribute_add_with_syntax: int (struct ldb_context *, const char *, unsigned int, const struct ldb_schema_syntax *) ldb_schema_attribute_by_name: const struct ldb_schema_attribute *(struct ldb_context *, const char *) @@ -220,5 +217,3 @@ ldb_val_map_remote: struct ldb_val (struct ldb_module *, void *, const struct ld ldb_val_to_time: int (const struct ldb_val *, time_t *) ldb_valid_attr_name: int (const char *) ldb_wait: int (struct ldb_handle *, enum ldb_wait_type) -ldb_wrap_connect: struct ldb_context *(TALLOC_CTX *, struct tevent_context *, struct loadparm_context *, const char *, struct auth_session_info *, struct cli_credentials *, unsigned int) -ldb_wrap_fork_hook: void (void) diff --git a/source4/lib/ldb/pyldb_util.c b/source4/lib/ldb/pyldb_util.c new file mode 100644 index 0000000..fb06946 --- /dev/null +++ b/source4/lib/ldb/pyldb_util.c @@ -0,0 +1,81 @@ +/* + Unix SMB/CIFS implementation. + + Python interface to ldb - utility functions. + + Copyright (C) 2007-2010 Jelmer Vernooij <jel...@samba.org> + + ** NOTE! The following LGPL license applies to the ldb + ** library. This does NOT imply that all of Samba is released + ** under the LGPL + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see <http://www.gnu.org/licenses/>. +*/ + +#include <Python.h> +#include "replace.h" +#include "pyldb.h" +#include <ldb.h> + +static PyObject *ldb_module = NULL; + +/* There's no Py_ssize_t in 2.4, apparently */ +#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5 +typedef int Py_ssize_t; +typedef inquiry lenfunc; +typedef intargfunc ssizeargfunc; +#endif + +#ifndef Py_RETURN_NONE +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#endif + +/** + * Obtain a ldb DN from a Python object. + * + * @param mem_ctx Memory context + * @param object Python object + * @param ldb_ctx LDB context + * @return Whether or not the conversion succeeded + */ +bool PyObject_AsDn(TALLOC_CTX *mem_ctx, PyObject *object, + struct ldb_context *ldb_ctx, struct ldb_dn **dn) +{ + struct ldb_dn *odn; + PyObject *PyLdb_Dn_Type; + + if (ldb_ctx != NULL && PyString_Check(object)) { + odn = ldb_dn_new(mem_ctx, ldb_ctx, PyString_AsString(object)); + *dn = odn; + return true; + } + + if (ldb_module == NULL) { + ldb_module = PyImport_ImportModule("ldb"); + if (ldb_module == NULL) + return false; + } + + PyLdb_Dn_Type = PyObject_GetAttrString(ldb_module, "Dn"); + if (PyLdb_Dn_Type == NULL) + return false; + + if (PyObject_TypeCheck(object, PyLdb_Dn_Type)) { + *dn = PyLdbDn_AsDn(object); + return true; + } + + PyErr_SetString(PyExc_TypeError, "Expected DN"); + return false; +} diff --git a/source4/lib/ldb/tools/cmdline.c b/source4/lib/ldb/tools/cmdline.c index 180923f..c2b595f 100644 --- a/source4/lib/ldb/tools/cmdline.c +++ b/source4/lib/ldb/tools/cmdline.c @@ -21,12 +21,9 @@ License along with this library; if not, see <http://www.gnu.org/licenses/>. */ -#include "ldb_includes.h" -#include "ldb.h" -#include "tools/cmdline.h" - #if (_SAMBA_BUILD_ >= 4) #include "includes.h" +#include <ldb.h> #include "lib/cmdline/popt_common.h" #include "lib/ldb-samba/ldif_handlers.h" #include "auth/gensec/gensec.h" @@ -36,8 +33,13 @@ #include "librpc/gen_ndr/drsblobs.h" #include "dsdb/schema/schema.h" #include "dsdb/common/proto.h" +#else +#include "ldb_includes.h" +#include "ldb.h" #endif +#include "tools/cmdline.h" + static struct ldb_cmdline options; /* needs to be static for older compilers */ static struct poptOption popt_options[] = { diff --git a/source4/lib/ldb/tools/ldbedit.c b/source4/lib/ldb/tools/ldbedit.c index 6635466..f28964b 100644 --- a/source4/lib/ldb/tools/ldbedit.c +++ b/source4/lib/ldb/tools/ldbedit.c @@ -30,7 +30,14 @@ * * Author: Andrew Tridgell */ + +#ifdef _SAMBA_BUILD_ +#include "includes.h" +#include <system/filesys.h> +#else #include "ldb_includes.h" +#endif + #include "ldb.h" #include "tools/cmdline.h" #include "tools/ldbutil.h" diff --git a/source4/lib/ldb/tools/ldbsearch.c b/source4/lib/ldb/tools/ldbsearch.c index 179646c..55144a7 100644 --- a/source4/lib/ldb/tools/ldbsearch.c +++ b/source4/lib/ldb/tools/ldbsearch.c @@ -31,8 +31,14 @@ * Author: Andrew Tridgell */ +#ifdef _SAMBA_BUILD_ +#include "includes.h" +#include <ldb.h> +#else #include "ldb_includes.h" #include "ldb.h" +#endif + #include "tools/cmdline.h" static void usage(void) diff --git a/source4/lib/ldb/tools/ldbtest.c b/source4/lib/ldb/tools/ldbtest.c index 077eb98..b76889c 100644 --- a/source4/lib/ldb/tools/ldbtest.c +++ b/source4/lib/ldb/tools/ldbtest.c @@ -31,7 +31,12 @@ * Author: Andrew Tridgell */ +#ifdef _SAMBA_BUILD_ +#include "includes.h" +#else #include "ldb_includes.h" +#endif + #include "ldb.h" #include "tools/cmdline.h" diff --git a/source4/lib/ldb/wscript b/source4/lib/ldb/wscript index 2d54b61..dbe2ae4 100644 --- a/source4/lib/ldb/wscript +++ b/source4/lib/ldb/wscript @@ -150,21 +150,23 @@ def build(bld): bld.env.PACKAGE_VERSION = VERSION bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' - ldb_deps = 'tevent LIBLDB' if s4_build: - ldb_deps += ' LDBSAMBA POPT_CREDENTIALS POPT_SAMBA LIBCMDLINE_CREDENTIALS gensec' abi_file='ABI/ldb-samba4-%s.sigs' % VERSION else: abi_file='ABI/ldb-%s.sigs' % VERSION + bld.SAMBA_PYTHON('pyldb_util', + deps='ldb LIBPYTHON', + source='pyldb_util.c') + if not bld.CONFIG_SET('USING_SYSTEM_LDB'): modules_dir = bld.EXPAND_VARIABLES('${LDB_MODULESDIR}') bld.SAMBA_LIBRARY('ldb', COMMON_SRC + ' ' + LDB_MAP_SRC, - deps=ldb_deps, + deps='tevent LIBLDB', includes='include', public_headers='include/ldb.h include/ldb_errors.h '\ - 'include/ldb_module.h', + 'include/ldb_module.h include/ldb_handlers.h', pc_files='ldb.pc', cflags='-DLDB_MODULESDIR=\"%s\"' % modules_dir, abi_file=abi_file, @@ -172,9 +174,18 @@ def build(bld): vnum=VERSION, manpages='man/ldb.3', is_bundled=not bld.env.standalone_ldb) + bld.SAMBA_PYTHON('pyldb', 'pyldb.c', + deps='ldb pyldb_util', + realname='ldb.so') + + extra_cmdline_deps = '' + if s4_build: + extra_cmdline_deps += ' LDBSAMBA POPT_SAMBA POPT_CREDENTIALS ' \ + 'LIBCMDLINE_CREDENTIALS gensec' + bld.SAMBA_SUBSYSTEM('LIBLDB_CMDLINE', 'tools/ldbutil.c tools/cmdline.c', - 'ldb dl popt') + 'ldb dl popt' + extra_cmdline_deps) LDB_TOOLS='ldbadd ldbsearch ldbdel ldbmodify ldbedit ldbrename' for t in LDB_TOOLS.split(): @@ -185,10 +196,6 @@ def build(bld): bld.SAMBA_BINARY('ldbtest', 'tools/ldbtest.c', deps='LIBLDB_CMDLINE', install=False) - bld.SAMBA_PYTHON('pyldb', 'pyldb.c', - deps='ldb', - realname='ldb.so') - def test(ctx): '''run ldb testsuite''' diff --git a/source4/scripting/python/wscript_build b/source4/scripting/python/wscript_build index 0709c42..af3c6ed 100644 --- a/source4/scripting/python/wscript_build +++ b/source4/scripting/python/wscript_build @@ -24,7 +24,7 @@ bld.SAMBA_PYTHON('python_uuid', bld.SAMBA_PYTHON('python_glue', source='pyglue.c', - deps='LIBNDR ldb SAMDB CREDENTIALS pyldb python_dcerpc_misc python_dcerpc_security pyauth pyldb_util pyparam_util', + deps='LIBNDR ldb SAMDB CREDENTIALS python_dcerpc_misc python_dcerpc_security pyauth pyldb_util pyparam_util', realname='samba/_glue.so' ) -- Samba Shared Repository