python: Move helper functions for using param into a separate file rather
authorJelmer Vernooij <jelmer@samba.org>
Wed, 22 Apr 2009 23:20:20 +0000 (01:20 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 2 Jun 2009 16:05:40 +0000 (18:05 +0200)
than linking against the python module.

source4/auth/config.mk
source4/auth/credentials/config.mk
source4/lib/registry/config.mk
source4/librpc/config.mk
source4/param/pyparam.c
source4/param/pyparam_util.c [new file with mode: 0644]
source4/scripting/python/config.mk

index 97916023c3e1bcc56b2fd5cca9d0f069ee64b49b..573f1972bc5fa4e16b555e78b70540202a1aa38d 100644 (file)
@@ -45,7 +45,7 @@ $(eval $(call proto_header_template,$(authsrcdir)/auth_sam_reply.h,$(auth_sam_re
 [PYTHON::pyauth]
 LIBRARY_REALNAME = samba/auth.$(SHLIBEXT)
 PUBLIC_DEPENDENCIES = auth_system_session
 [PYTHON::pyauth]
 LIBRARY_REALNAME = samba/auth.$(SHLIBEXT)
 PUBLIC_DEPENDENCIES = auth_system_session
-PRIVATE_DEPENDENCIES = SAMDB PYTALLOC param
+PRIVATE_DEPENDENCIES = SAMDB PYTALLOC pyparam_util
 
 pyauth_OBJ_FILES = $(authsrcdir)/pyauth.o
 
 
 pyauth_OBJ_FILES = $(authsrcdir)/pyauth.o
 
index 2402c732b36619a716672abed2a67a63d1cec07f..6b051ef46ce00b134f7b7a5e1245154fd2249a6f 100644 (file)
@@ -15,6 +15,6 @@ PUBLIC_HEADERS += $(authsrcdir)/credentials/credentials.h
 
 [PYTHON::pycredentials]
 LIBRARY_REALNAME = samba/credentials.$(SHLIBEXT)
 
 [PYTHON::pycredentials]
 LIBRARY_REALNAME = samba/credentials.$(SHLIBEXT)
-PUBLIC_DEPENDENCIES = CREDENTIALS LIBCMDLINE_CREDENTIALS PYTALLOC param
+PUBLIC_DEPENDENCIES = CREDENTIALS LIBCMDLINE_CREDENTIALS PYTALLOC pyparam_util
 
 pycredentials_OBJ_FILES = $(authsrcdir)/credentials/pycredentials.o
 
 pycredentials_OBJ_FILES = $(authsrcdir)/credentials/pycredentials.o
index a566042cf22ad8200ff792fbad5279ce059d305f..adf26b275f571f27b3b94b194fb7375ed55f8f4a 100644 (file)
@@ -105,6 +105,6 @@ $(eval $(call proto_header_template,$(libregistrysrcdir)/tests/proto.h,$(torture
 
 [PYTHON::py_registry]
 LIBRARY_REALNAME = samba/registry.$(SHLIBEXT)
 
 [PYTHON::py_registry]
 LIBRARY_REALNAME = samba/registry.$(SHLIBEXT)
-PUBLIC_DEPENDENCIES = registry PYTALLOC pycredentials param
+PUBLIC_DEPENDENCIES = registry PYTALLOC pycredentials pyparam_util
 
 py_registry_OBJ_FILES = $(libregistrysrcdir)/pyregistry.o
 
 py_registry_OBJ_FILES = $(libregistrysrcdir)/pyregistry.o
index 64a4750ab74cd48b8a2a03b0b15f86ae789f6506..52c7f3e2d1d131b2e5ed472ebfd7b88a98e0baa8 100644 (file)
@@ -631,7 +631,7 @@ PUBLIC_HEADERS += $(addprefix $(librpcsrcdir)/, rpc/dcerpc.h) \
 
 [PYTHON::python_dcerpc]
 LIBRARY_REALNAME = samba/dcerpc/base.$(SHLIBEXT)
 
 [PYTHON::python_dcerpc]
 LIBRARY_REALNAME = samba/dcerpc/base.$(SHLIBEXT)
-PUBLIC_DEPENDENCIES = LIBCLI_SMB LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG pycredentials param
+PUBLIC_DEPENDENCIES = LIBCLI_SMB LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG pycredentials pyparam_util
 
 python_dcerpc_OBJ_FILES = $(dcerpcsrcdir)/pyrpc.o
 
 
 python_dcerpc_OBJ_FILES = $(dcerpcsrcdir)/pyrpc.o
 
@@ -640,31 +640,31 @@ $(eval $(call python_py_module_template,samba/dcerpc/__init__.py,$(dcerpcsrcdir)
 
 [PYTHON::python_echo]
 LIBRARY_REALNAME = samba/dcerpc/echo.$(SHLIBEXT)
 
 [PYTHON::python_echo]
 LIBRARY_REALNAME = samba/dcerpc/echo.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_ECHO PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_ECHO PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_echo_OBJ_FILES = ../librpc/gen_ndr/py_echo.o
 
 [PYTHON::python_winreg]
 LIBRARY_REALNAME = samba/dcerpc/winreg.$(SHLIBEXT)
 
 python_echo_OBJ_FILES = ../librpc/gen_ndr/py_echo.o
 
 [PYTHON::python_winreg]
 LIBRARY_REALNAME = samba/dcerpc/winreg.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_WINREG PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_WINREG PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_winreg_OBJ_FILES = ../librpc/gen_ndr/py_winreg.o
 
 [PYTHON::python_dcerpc_misc]
 LIBRARY_REALNAME = samba/dcerpc/misc.$(SHLIBEXT)
 
 python_winreg_OBJ_FILES = ../librpc/gen_ndr/py_winreg.o
 
 [PYTHON::python_dcerpc_misc]
 LIBRARY_REALNAME = samba/dcerpc/misc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = PYTALLOC python_dcerpc
+PRIVATE_DEPENDENCIES = PYTALLOC python_dcerpc NDR_MISC NDR_KRB5PAC
 
 python_dcerpc_misc_OBJ_FILES = ../librpc/gen_ndr/py_misc.o
 
 [PYTHON::python_initshutdown]
 LIBRARY_REALNAME = samba/dcerpc/initshutdown.$(SHLIBEXT)
 
 python_dcerpc_misc_OBJ_FILES = ../librpc/gen_ndr/py_misc.o
 
 [PYTHON::python_initshutdown]
 LIBRARY_REALNAME = samba/dcerpc/initshutdown.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_INITSHUTDOWN PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_INITSHUTDOWN PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_initshutdown_OBJ_FILES = ../librpc/gen_ndr/py_initshutdown.o
 
 [PYTHON::python_epmapper]
 LIBRARY_REALNAME = samba/dcerpc/epmapper.$(SHLIBEXT)
 
 python_initshutdown_OBJ_FILES = ../librpc/gen_ndr/py_initshutdown.o
 
 [PYTHON::python_epmapper]
 LIBRARY_REALNAME = samba/dcerpc/epmapper.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES =  dcerpc PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES =  dcerpc PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_epmapper_OBJ_FILES = ../librpc/gen_ndr/py_epmapper.o
 
 
 python_epmapper_OBJ_FILES = ../librpc/gen_ndr/py_epmapper.o
 
@@ -676,67 +676,67 @@ python_mgmt_OBJ_FILES = ../librpc/gen_ndr/py_mgmt.o
 
 [PYTHON::python_atsvc]
 LIBRARY_REALNAME = samba/dcerpc/atsvc.$(SHLIBEXT)
 
 [PYTHON::python_atsvc]
 LIBRARY_REALNAME = samba/dcerpc/atsvc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = dcerpc_atsvc PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = dcerpc_atsvc PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_atsvc_OBJ_FILES = ../librpc/gen_ndr/py_atsvc.o
 
 [PYTHON::python_dcerpc_nbt]
 LIBRARY_REALNAME = samba/dcerpc/nbt.$(SHLIBEXT)
 
 python_atsvc_OBJ_FILES = ../librpc/gen_ndr/py_atsvc.o
 
 [PYTHON::python_dcerpc_nbt]
 LIBRARY_REALNAME = samba/dcerpc/nbt.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = NDR_NBT PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = NDR_NBT PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_dcerpc_nbt_OBJ_FILES = ../librpc/gen_ndr/py_nbt.o
 
 [PYTHON::python_samr]
 LIBRARY_REALNAME = samba/dcerpc/samr.$(SHLIBEXT)
 
 python_dcerpc_nbt_OBJ_FILES = ../librpc/gen_ndr/py_nbt.o
 
 [PYTHON::python_samr]
 LIBRARY_REALNAME = samba/dcerpc/samr.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = dcerpc_samr PYTALLOC pycredentials param python_dcerpc
+PRIVATE_DEPENDENCIES = dcerpc_samr PYTALLOC pycredentials pyparam_util python_dcerpc
 
 python_samr_OBJ_FILES = ../librpc/gen_ndr/py_samr.o
 
 [PYTHON::python_svcctl]
 LIBRARY_REALNAME = samba/dcerpc/svcctl.$(SHLIBEXT)
 
 python_samr_OBJ_FILES = ../librpc/gen_ndr/py_samr.o
 
 [PYTHON::python_svcctl]
 LIBRARY_REALNAME = samba/dcerpc/svcctl.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_SVCCTL PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_SVCCTL PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_svcctl_OBJ_FILES = ../librpc/gen_ndr/py_svcctl.o
 
 [PYTHON::python_lsa]
 LIBRARY_REALNAME = samba/dcerpc/lsa.$(SHLIBEXT)
 
 python_svcctl_OBJ_FILES = ../librpc/gen_ndr/py_svcctl.o
 
 [PYTHON::python_lsa]
 LIBRARY_REALNAME = samba/dcerpc/lsa.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_LSA PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_LSA PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_lsa_OBJ_FILES = ../librpc/gen_ndr/py_lsa.o
 
 [PYTHON::python_wkssvc]
 LIBRARY_REALNAME = samba/dcerpc/wkssvc.$(SHLIBEXT)
 
 python_lsa_OBJ_FILES = ../librpc/gen_ndr/py_lsa.o
 
 [PYTHON::python_wkssvc]
 LIBRARY_REALNAME = samba/dcerpc/wkssvc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_wkssvc_OBJ_FILES = ../librpc/gen_ndr/py_wkssvc.o
 
 [PYTHON::python_dfs]
 LIBRARY_REALNAME = samba/dcerpc/dfs.$(SHLIBEXT)
 
 python_wkssvc_OBJ_FILES = ../librpc/gen_ndr/py_wkssvc.o
 
 [PYTHON::python_dfs]
 LIBRARY_REALNAME = samba/dcerpc/dfs.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_DFS PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_DFS PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_dfs_OBJ_FILES = ../librpc/gen_ndr/py_dfs.o
 
 [PYTHON::python_unixinfo]
 LIBRARY_REALNAME = samba/dcerpc/unixinfo.$(SHLIBEXT)
 
 python_dfs_OBJ_FILES = ../librpc/gen_ndr/py_dfs.o
 
 [PYTHON::python_unixinfo]
 LIBRARY_REALNAME = samba/dcerpc/unixinfo.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_unixinfo_OBJ_FILES = ../librpc/gen_ndr/py_unixinfo.o
 
 [PYTHON::python_irpc]
 LIBRARY_REALNAME = samba/dcerpc/irpc.$(SHLIBEXT)
 
 python_unixinfo_OBJ_FILES = ../librpc/gen_ndr/py_unixinfo.o
 
 [PYTHON::python_irpc]
 LIBRARY_REALNAME = samba/dcerpc/irpc.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_IRPC PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_IRPC PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_irpc_OBJ_FILES = $(gen_ndrsrcdir)/py_irpc.o
 
 [PYTHON::python_drsuapi]
 LIBRARY_REALNAME = samba/dcerpc/drsuapi.$(SHLIBEXT)
 
 python_irpc_OBJ_FILES = $(gen_ndrsrcdir)/py_irpc.o
 
 [PYTHON::python_drsuapi]
 LIBRARY_REALNAME = samba/dcerpc/drsuapi.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI PYTALLOC param pycredentials python_dcerpc
+PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI PYTALLOC pyparam_util pycredentials python_dcerpc
 
 python_drsuapi_OBJ_FILES = ../librpc/gen_ndr/py_drsuapi.o
 
 [PYTHON::python_dcerpc_security]
 LIBRARY_REALNAME = samba/dcerpc/security.$(SHLIBEXT)
 
 python_drsuapi_OBJ_FILES = ../librpc/gen_ndr/py_drsuapi.o
 
 [PYTHON::python_dcerpc_security]
 LIBRARY_REALNAME = samba/dcerpc/security.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = PYTALLOC python_dcerpc_misc python_dcerpc
+PRIVATE_DEPENDENCIES = PYTALLOC python_dcerpc_misc python_dcerpc NDR_SECURITY
 
 python_dcerpc_security_OBJ_FILES = ../librpc/gen_ndr/py_security.o
 
 
 python_dcerpc_security_OBJ_FILES = ../librpc/gen_ndr/py_security.o
 
index efaedf7b4158120e14f4fae5fa8044f7f705bbed..e32cfa052330f5ee563d85b9af83a09ebb80d997 100644 (file)
@@ -325,30 +325,6 @@ PyTypeObject PyLoadparmService = {
        .tp_flags = Py_TPFLAGS_DEFAULT,
 };
 
        .tp_flags = Py_TPFLAGS_DEFAULT,
 };
 
-_PUBLIC_ struct loadparm_context *lp_from_py_object(PyObject *py_obj)
-{
-    struct loadparm_context *lp_ctx;
-    if (PyString_Check(py_obj)) {
-        lp_ctx = loadparm_init(NULL);
-        if (!lp_load(lp_ctx, PyString_AsString(py_obj))) {
-            talloc_free(lp_ctx);
-           PyErr_Format(PyExc_RuntimeError, 
-                        "Unable to load %s", PyString_AsString(py_obj));
-            return NULL;
-        }
-        return lp_ctx;
-    }
-
-    if (py_obj == Py_None) {
-        lp_ctx = loadparm_init(NULL);
-       /* We're not checking that loading the file succeeded *on purpose */
-        lp_load_default(lp_ctx);
-        return lp_ctx;
-    }
-
-    return PyLoadparmContext_AsLoadparmContext(py_obj);
-}
-
 struct loadparm_context *py_default_loadparm_context(TALLOC_CTX *mem_ctx)
 {
     struct loadparm_context *ret;
 struct loadparm_context *py_default_loadparm_context(TALLOC_CTX *mem_ctx)
 {
     struct loadparm_context *ret;
diff --git a/source4/param/pyparam_util.c b/source4/param/pyparam_util.c
new file mode 100644 (file)
index 0000000..0dc7c7f
--- /dev/null
@@ -0,0 +1,54 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Samba utility functions
+   Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2008
+   
+   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 <stdint.h>
+#include <stdbool.h>
+
+#include "includes.h"
+#include "param/param.h"
+#include "param/loadparm.h"
+#include <Python.h>
+#include "pytalloc.h"
+
+#define PyLoadparmContext_AsLoadparmContext(obj) py_talloc_get_type(obj, struct loadparm_context)
+
+_PUBLIC_ struct loadparm_context *lp_from_py_object(PyObject *py_obj)
+{
+    struct loadparm_context *lp_ctx;
+
+    if (PyString_Check(py_obj)) {
+        lp_ctx = loadparm_init(NULL);
+        if (!lp_load(lp_ctx, PyString_AsString(py_obj))) {
+            talloc_free(lp_ctx);
+                       PyErr_Format(PyExc_RuntimeError, "Unable to load %s", 
+                                                PyString_AsString(py_obj));
+            return NULL;
+        }
+        return lp_ctx;
+    }
+
+    if (py_obj == Py_None) {
+        lp_ctx = loadparm_init(NULL);
+               /* We're not checking that loading the file succeeded *on purpose */
+        lp_load_default(lp_ctx);
+        return lp_ctx;
+    }
+
+    return PyLoadparmContext_AsLoadparmContext(py_obj);
+}
index ba624ee163c2da30be6c579c88399e977e67680e..f485ca8bfb86f914fb48c60e18bdd1a22f275fd5 100644 (file)
@@ -17,7 +17,7 @@ python_uuid_OBJ_FILES = $(pyscriptsrcdir)/uuidmodule.o
 
 [PYTHON::python_glue]
 LIBRARY_REALNAME = samba/glue.$(SHLIBEXT)
 
 [PYTHON::python_glue]
 LIBRARY_REALNAME = samba/glue.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = LIBNDR LIBLDB SAMDB CREDENTIALS pyldb python_dcerpc_misc python_dcerpc_security pyauth
+PRIVATE_DEPENDENCIES = LIBNDR LIBLDB SAMDB CREDENTIALS pyldb python_dcerpc_misc python_dcerpc_security pyauth pyldb_util pyparam_util
 
 python_glue_OBJ_FILES = $(pyscriptsrcdir)/pyglue.o
 
 
 python_glue_OBJ_FILES = $(pyscriptsrcdir)/pyglue.o