[PATCH] Enable Python 3 build for samba.dcerpc modules and more

Alexander Bokovoy ab at samba.org
Fri Jul 14 04:43:38 UTC 2017


On to, 13 heinä 2017, Andreas Schneider via samba-technical wrote:
> On Thursday, 13 July 2017 14:53:00 CEST Alexander Bokovoy via samba-technical 
> wrote:
> > Hi!
> > 
> > Attached patches fix samba.net.finddc() definition in lieu of
> > https://bugs.python.org/issue15657 and enable remaining samba.dcerpc
> > modules to be compiled for Python 3. These two patches are needed to get
> > FreeIPA moved to Python 3.
> > 
> > I'd like to see them in 4.7 as well, I'll open a bug about the backport.
> 
> Please open the bug report first and then open a line
> 
> BUG: https://buzilla.samba.org ...
> 
> 
> to all the patches like we always do it :-)
Re-sending.

-- 
/ Alexander Bokovoy
-------------- next part --------------
>From cc5bf9dd3ff44971db122b92518f70c844bebbd3 Mon Sep 17 00:00:00 2001
From: Alexander Bokovoy <ab at samba.org>
Date: Thu, 13 Jul 2017 15:37:47 +0300
Subject: [PATCH 1/2] py3: Make sure to specify METH_VARARGS together with
 METH_KEYWORDS

A Python 3 bug https://bugs.python.org/issue15657 explains that one should
always use METH_VARARGS|METH_KEYWORDS when defining a function rather
than a lonely METH_KEYWORDS. We had only one definition like this in
Samba and it was the one that affects FreeIPA when running in Python 3
mode.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12905

Signed-off-by: Alexander Bokovoy <ab at samba.org>
---
 source4/libnet/py_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c
index 78e60f6d6a6..7ddee2df92c 100644
--- a/source4/libnet/py_net.c
+++ b/source4/libnet/py_net.c
@@ -745,7 +745,7 @@ static PyMethodDef net_obj_methods[] = {
 	{"replicate_init", (PyCFunction)py_net_replicate_init, METH_VARARGS|METH_KEYWORDS, py_net_replicate_init_doc},
 	{"replicate_chunk", (PyCFunction)py_net_replicate_chunk, METH_VARARGS|METH_KEYWORDS, py_net_replicate_chunk_doc},
 	{"replicate_decrypt", (PyCFunction)py_net_replicate_decrypt, METH_VARARGS|METH_KEYWORDS, py_net_replicate_decrypt_doc},
-	{"finddc", (PyCFunction)py_net_finddc, METH_KEYWORDS, py_net_finddc_doc},
+	{"finddc", (PyCFunction)py_net_finddc, METH_VARARGS|METH_KEYWORDS, py_net_finddc_doc},
 	{ NULL }
 };
 
-- 
2.13.0


>From 78ea553302f8bdca42079364341c4e57ae0c6a45 Mon Sep 17 00:00:00 2001
From: Alexander Bokovoy <ab at samba.org>
Date: Thu, 13 Jul 2017 14:49:12 +0300
Subject: [PATCH 2/2] Build py3 versions of other rpc modules

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12905

Signed-off-by: Alexander Bokovoy <ab at samba.org>
---
 source4/librpc/wscript_build | 242 +++++++++++++++++++++----------------------
 1 file changed, 121 insertions(+), 121 deletions(-)

diff --git a/source4/librpc/wscript_build b/source4/librpc/wscript_build
index a14215bc5ac..e341432fa14 100644
--- a/source4/librpc/wscript_build
+++ b/source4/librpc/wscript_build
@@ -252,159 +252,159 @@ for env in bld.gen_python_environments():
 		realname='samba/dcerpc/ntlmssp.so'
 		)
 
-bld.SAMBA_PYTHON('python_srvsvc',
-    source='../../librpc/gen_ndr/py_srvsvc.c',
-    deps='RPC_NDR_SRVSVC pytalloc-util pyrpc_util',
-    realname='samba/dcerpc/srvsvc.so'
-    )
-
-bld.SAMBA_PYTHON('python_echo',
-	source='../../librpc/gen_ndr/py_echo.c',
-	deps='RPC_NDR_ECHO pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/echo.so'
-	)
+	bld.SAMBA_PYTHON('python_srvsvc',
+	    source='../../librpc/gen_ndr/py_srvsvc.c',
+	    deps='RPC_NDR_SRVSVC pytalloc-util pyrpc_util',
+	    realname='samba/dcerpc/srvsvc.so'
+	    )
+
+	bld.SAMBA_PYTHON('python_echo',
+		source='../../librpc/gen_ndr/py_echo.c',
+		deps='RPC_NDR_ECHO pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/echo.so'
+		)
 
-bld.SAMBA_PYTHON('python_dns',
-	source='../../librpc/gen_ndr/py_dns.c',
-	deps='NDR_DNS pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/dns.so'
-	)
+	bld.SAMBA_PYTHON('python_dns',
+		source='../../librpc/gen_ndr/py_dns.c',
+		deps='NDR_DNS pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/dns.so'
+		)
 
-bld.SAMBA_PYTHON('python_winreg',
-	source='../../librpc/gen_ndr/py_winreg.c',
-	deps='RPC_NDR_WINREG pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/winreg.so'
-	)
+	bld.SAMBA_PYTHON('python_winreg',
+		source='../../librpc/gen_ndr/py_winreg.c',
+		deps='RPC_NDR_WINREG pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/winreg.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_initshutdown',
-	source='../../librpc/gen_ndr/py_initshutdown.c',
-	deps='RPC_NDR_INITSHUTDOWN pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/initshutdown.so'
-	)
+	bld.SAMBA_PYTHON('python_initshutdown',
+		source='../../librpc/gen_ndr/py_initshutdown.c',
+		deps='RPC_NDR_INITSHUTDOWN pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/initshutdown.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_epmapper',
-	source='../../librpc/gen_ndr/py_epmapper.c',
-	deps='dcerpc pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/epmapper.so'
-	)
+	bld.SAMBA_PYTHON('python_epmapper',
+		source='../../librpc/gen_ndr/py_epmapper.c',
+		deps='dcerpc pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/epmapper.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_mgmt',
-	source='../../librpc/gen_ndr/py_mgmt.c',
-	deps='pytalloc-util dcerpc pyrpc_util',
-	realname='samba/dcerpc/mgmt.so'
-	)
+	bld.SAMBA_PYTHON('python_mgmt',
+		source='../../librpc/gen_ndr/py_mgmt.c',
+		deps='pytalloc-util dcerpc pyrpc_util',
+		realname='samba/dcerpc/mgmt.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_atsvc',
-	source='../../librpc/gen_ndr/py_atsvc.c',
-	deps='RPC_NDR_ATSVC pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/atsvc.so'
-	)
+	bld.SAMBA_PYTHON('python_atsvc',
+		source='../../librpc/gen_ndr/py_atsvc.c',
+		deps='RPC_NDR_ATSVC pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/atsvc.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_svcctl',
-	source='../../librpc/gen_ndr/py_svcctl.c',
-	deps='RPC_NDR_SVCCTL pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/svcctl.so'
-	)
+	bld.SAMBA_PYTHON('python_svcctl',
+		source='../../librpc/gen_ndr/py_svcctl.c',
+		deps='RPC_NDR_SVCCTL pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/svcctl.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_wkssvc',
-	source='../../librpc/gen_ndr/py_wkssvc.c',
-	deps='RPC_NDR_WKSSVC pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/wkssvc.so'
-	)
+	bld.SAMBA_PYTHON('python_wkssvc',
+		source='../../librpc/gen_ndr/py_wkssvc.c',
+		deps='RPC_NDR_WKSSVC pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/wkssvc.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_dfs',
-	source='../../librpc/gen_ndr/py_dfs.c',
-	deps='RPC_NDR_DFS pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/dfs.so'
-	)
+	bld.SAMBA_PYTHON('python_dfs',
+		source='../../librpc/gen_ndr/py_dfs.c',
+		deps='RPC_NDR_DFS pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/dfs.so'
+		)
 
-bld.SAMBA_PYTHON('python_dcerpc_dcerpc',
-	source='../../librpc/gen_ndr/py_dcerpc.c',
-	deps='NDR_DCERPC pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/dcerpc.so'
-	)
+	bld.SAMBA_PYTHON('python_dcerpc_dcerpc',
+		source='../../librpc/gen_ndr/py_dcerpc.c',
+		deps='NDR_DCERPC pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/dcerpc.so'
+		)
 
-bld.SAMBA_PYTHON('python_unixinfo',
-	source='../../librpc/gen_ndr/py_unixinfo.c',
-	deps='RPC_NDR_UNIXINFO pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/unixinfo.so'
-	)
+	bld.SAMBA_PYTHON('python_unixinfo',
+		source='../../librpc/gen_ndr/py_unixinfo.c',
+		deps='RPC_NDR_UNIXINFO pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/unixinfo.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_irpc',
-	source='gen_ndr/py_irpc.c',
-	deps='RPC_NDR_IRPC pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/irpc.so'
-	)
+	bld.SAMBA_PYTHON('python_irpc',
+		source='gen_ndr/py_irpc.c',
+		deps='RPC_NDR_IRPC pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/irpc.so'
+		)
 
-bld.SAMBA_PYTHON('python_server_id',
-	source='../../librpc/gen_ndr/py_server_id.c',
-	deps='RPC_NDR_SERVER_ID pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/server_id.so'
-	)
+	bld.SAMBA_PYTHON('python_server_id',
+		source='../../librpc/gen_ndr/py_server_id.c',
+		deps='RPC_NDR_SERVER_ID pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/server_id.so'
+		)
 
-bld.SAMBA_PYTHON('python_winbind',
-	source='../../librpc/gen_ndr/py_winbind.c',
-	deps='RPC_NDR_WINBIND pytalloc-util pyrpc_util python_netlogon',
-	realname='samba/dcerpc/winbind.so'
-	)
+	bld.SAMBA_PYTHON('python_winbind',
+		source='../../librpc/gen_ndr/py_winbind.c',
+		deps='RPC_NDR_WINBIND pytalloc-util pyrpc_util python_netlogon',
+		realname='samba/dcerpc/winbind.so'
+		)
 
-bld.SAMBA_PYTHON('python_idmap',
-	source='../../librpc/gen_ndr/py_idmap.c',
-	deps='NDR_IDMAP pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/idmap.so'
-	)
+	bld.SAMBA_PYTHON('python_idmap',
+		source='../../librpc/gen_ndr/py_idmap.c',
+		deps='NDR_IDMAP pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/idmap.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_drsuapi',
-	source='../../librpc/gen_ndr/py_drsuapi.c',
-	deps='RPC_NDR_DRSUAPI pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/drsuapi.so'
-	)
+	bld.SAMBA_PYTHON('python_drsuapi',
+		source='../../librpc/gen_ndr/py_drsuapi.c',
+		deps='RPC_NDR_DRSUAPI pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/drsuapi.so'
+		)
 
-bld.SAMBA_PYTHON('python_dcerpc_dnsp',
-	source='../../librpc/gen_ndr/py_dnsp.c',
-	deps='pytalloc-util pyrpc_util NDR_SECURITY NDR_DNSP',
-	realname='samba/dcerpc/dnsp.so'
-	)
+	bld.SAMBA_PYTHON('python_dcerpc_dnsp',
+		source='../../librpc/gen_ndr/py_dnsp.c',
+		deps='pytalloc-util pyrpc_util NDR_SECURITY NDR_DNSP',
+		realname='samba/dcerpc/dnsp.so'
+		)
 
 
-bld.SAMBA_PYTHON('python_dcerpc_xattr',
-	source='../../librpc/gen_ndr/py_xattr.c',
-	deps='pytalloc-util pyrpc_util RPC_NDR_XATTR',
-	realname='samba/dcerpc/xattr.so'
-	)
+	bld.SAMBA_PYTHON('python_dcerpc_xattr',
+		source='../../librpc/gen_ndr/py_xattr.c',
+		deps='pytalloc-util pyrpc_util RPC_NDR_XATTR',
+		realname='samba/dcerpc/xattr.so'
+		)
 
-bld.SAMBA_PYTHON('python_dcerpc_idmap',
-	source='../../librpc/gen_ndr/py_idmap.c',
-	deps='pytalloc-util pyrpc_util RPC_NDR_XATTR',
-	realname='samba/dcerpc/idmap.so'
-	)
+	bld.SAMBA_PYTHON('python_dcerpc_idmap',
+		source='../../librpc/gen_ndr/py_idmap.c',
+		deps='pytalloc-util pyrpc_util RPC_NDR_XATTR',
+		realname='samba/dcerpc/idmap.so'
+		)
 
-bld.SAMBA_PYTHON('python_dnsserver',
-	source='../../librpc/gen_ndr/py_dnsserver.c',
-	deps='RPC_NDR_DNSSERVER pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/dnsserver.so'
-	)
+	bld.SAMBA_PYTHON('python_dnsserver',
+		source='../../librpc/gen_ndr/py_dnsserver.c',
+		deps='RPC_NDR_DNSSERVER pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/dnsserver.so'
+		)
 
-bld.SAMBA_PYTHON('python_dcerpc_smb_acl',
-	source='../../librpc/gen_ndr/py_smb_acl.c',
-	deps='pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/smb_acl.so'
-	)
+	bld.SAMBA_PYTHON('python_dcerpc_smb_acl',
+		source='../../librpc/gen_ndr/py_smb_acl.c',
+		deps='pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/smb_acl.so'
+		)
 
-bld.SAMBA_PYTHON('dcerpc_python_messaging',
-	source='../../librpc/gen_ndr/py_messaging.c',
-	deps='pytalloc-util pyrpc_util',
-	realname='samba/dcerpc/messaging.so'
-	)
+	bld.SAMBA_PYTHON('dcerpc_python_messaging',
+		source='../../librpc/gen_ndr/py_messaging.c',
+		deps='pytalloc-util pyrpc_util',
+		realname='samba/dcerpc/messaging.so'
+		)
 
 if bld.PYTHON_BUILD_IS_ENABLED():
     bld.SAMBA_SCRIPT('python_dcerpc_init',
-- 
2.13.0



More information about the samba-technical mailing list