[PATCHv2 1-14/14] Re: Disabling Python Modules

Ian Stakenvicius axs at gentoo.org
Sat Jan 28 06:16:04 UTC 2017


Hi everyone -- ok here's version two of the disable-python patchset.
Same effect but only 14 patches.

Although this patchset adds --disable-python directly into wafsamba, I
did not strip out the --disable-python configuration options in the
other standalone modules yet.  It looks, however, like it should play
nice as-is.

Please review, and I can make necessary adjustments going forward.

-------------- next part --------------
diff --git a/buildtools/wafsamba/samba_python.py b/buildtools/wafsamba/samba_python.py
index 057a017..b6bf079 100644
--- a/buildtools/wafsamba/samba_python.py
+++ b/buildtools/wafsamba/samba_python.py
@@ -40,22 +40,31 @@ def SAMBA_CHECK_PYTHON(conf, mandatory=True, version=(2,4,2)):
 
 @conf
 def SAMBA_CHECK_PYTHON_HEADERS(conf, mandatory=True):
-    if conf.env["python_headers_checked"] == []:
-        if conf.env['EXTRA_PYTHON']:
-            conf.setenv('extrapython')
-            _check_python_headers(conf, mandatory=True)
-            conf.setenv('default')
-
-        _check_python_headers(conf, mandatory)
-        conf.env["python_headers_checked"] = "yes"
-
-        if conf.env['EXTRA_PYTHON']:
-            extraversion = conf.all_envs['extrapython']['PYTHON_VERSION']
-            if extraversion == conf.env['PYTHON_VERSION']:
-                raise Utils.WafError("extrapython %s is same as main python %s" % (
-                    extraversion, conf.env['PYTHON_VERSION']))
+    if not conf.env.disable_python:
+        if conf.env["python_headers_checked"] == []:
+            if conf.env['EXTRA_PYTHON']:
+                conf.setenv('extrapython')
+                _check_python_headers(conf, mandatory=True)
+                conf.setenv('default')
+
+            _check_python_headers(conf, mandatory)
+            conf.env["python_headers_checked"] = "yes"
+
+            if conf.env['EXTRA_PYTHON']:
+                extraversion = conf.all_envs['extrapython']['PYTHON_VERSION']
+                if extraversion == conf.env['PYTHON_VERSION']:
+                    raise Utils.WafError("extrapython %s is same as main python %s" % (
+                        extraversion, conf.env['PYTHON_VERSION']))
+
+        else:
+            conf.msg("python headers", "using cache")
+
     else:
-        conf.msg("python headers", "using cache")
+        if mandatory:
+            raise Utils.WafError("Cannot check for python headers when --disable-python specified")
+
+        conf.msg("python headers", "Check disabled due to --disable-python")
+
 
     # we don't want PYTHONDIR in config.h, as otherwise changing
     # --prefix causes a complete rebuild
@@ -77,6 +86,14 @@ def _check_python_headers(conf, mandatory):
         conf.env['PYTHON_SO_ABI_FLAG'] = ''
 
 
+def PYTHON_BUILD_IS_ENABLED(self):
+    if self.CONFIG_SET('HAVE_PYTHON_H'):
+        return True
+    return False
+
+Build.BuildContext.PYTHON_BUILD_IS_ENABLED = PYTHON_BUILD_IS_ENABLED
+
+
 def SAMBA_PYTHON(bld, name,
                  source='',
                  deps='',
@@ -91,6 +108,9 @@ def SAMBA_PYTHON(bld, name,
                  enabled=True):
     '''build a python extension for Samba'''
 
+    if not bld.PYTHON_BUILD_IS_ENABLED():
+        enabled = False
+
     if bld.env['IS_EXTRA_PYTHON']:
         name = 'extra-' + name
 
@@ -138,7 +158,10 @@ Build.BuildContext.SAMBA_PYTHON = SAMBA_PYTHON
 
 
 def pyembed_libname(bld, name, extrapython=False):
-    return name + bld.env['PYTHON_SO_ABI_FLAG']
+    if bld.env['PYTHON_SO_ABI_FLAG']:
+        return name + bld.env['PYTHON_SO_ABI_FLAG']
+    else:
+        return name
 
 Build.BuildContext.pyembed_libname = pyembed_libname
 
diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
index 8802e5a..c5c0081 100644
--- a/buildtools/wafsamba/wscript
+++ b/buildtools/wafsamba/wscript
@@ -196,6 +196,10 @@ def set_options(opt):
                    help='tag release in git at the same time',
                    type='string', action='store', dest='TAG_RELEASE')
 
+    opt.add_option('--disable-python',
+                    help='do not generate python modules',
+                    action='store_true', dest='disable_python', default=False)
+
     opt.add_option('--extra-python', type=str,
                     help=("build selected libraries for the specified "
                           "additional version of Python "
@@ -279,6 +283,8 @@ def configure(conf):
     conf.env.AUTOCONF_HOST  = Options.options.AUTOCONF_HOST
     conf.env.AUTOCONF_PROGRAM_PREFIX = Options.options.AUTOCONF_PROGRAM_PREFIX
 
+    conf.env.disable_python = Options.options.disable_python
+
     conf.env.EXTRA_PYTHON = Options.options.EXTRA_PYTHON
 
     if (conf.env.AUTOCONF_HOST and
diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index 7f05db3..83b9ca2 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -46,7 +46,8 @@ def configure(conf):
     conf.find_program('xsltproc', var='XSLTPROC')
     conf.check_tool('python')
     conf.check_python_version((2,4,2))
-    conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=True)
+    if not conf.env.disable_python:
+        conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=True)
 
     # where does the default LIBDIR end up? in conf.env somewhere?
     #
@@ -55,10 +56,16 @@ def configure(conf):
     conf.env.standalone_ldb = conf.IN_LAUNCH_DIR()
 
     if not conf.env.standalone_ldb:
-        if conf.CHECK_BUNDLED_SYSTEM_PKG('pyldb-util', minversion=VERSION,
+        if conf.env.disable_python:
+            if conf.CHECK_BUNDLED_SYSTEM_PKG('ldb', minversion=VERSION,
+                                         onlyif='talloc tdb tevent',
+                                         implied_deps='replace talloc tdb tevent'):
+                conf.define('USING_SYSTEM_LDB', 1)
+        else:
+            if conf.CHECK_BUNDLED_SYSTEM_PKG('pyldb-util', minversion=VERSION,
                                      onlyif='talloc tdb tevent',
                                      implied_deps='replace talloc tdb tevent ldb'):
-            conf.define('USING_SYSTEM_PYLDB_UTIL', 1)
+                conf.define('USING_SYSTEM_PYLDB_UTIL', 1)
             if conf.CHECK_BUNDLED_SYSTEM_PKG('ldb', minversion=VERSION,
                                          onlyif='talloc tdb tevent pyldb-util',
                                          implied_deps='replace talloc tdb tevent'):
@@ -120,11 +127,10 @@ def build(bld):
         bld.env.PACKAGE_VERSION = VERSION
         bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
 
-    if not bld.env.disable_python:
-        if not bld.CONFIG_SET('USING_SYSTEM_PYLDB_UTIL'):
-            for env in bld.gen_python_environments(['PKGCONFIGDIR']):
-                name = bld.pyembed_libname('pyldb-util')
-                bld.SAMBA_LIBRARY(name,
+    if not bld.CONFIG_SET('USING_SYSTEM_PYLDB_UTIL'):
+        for env in bld.gen_python_environments(['PKGCONFIGDIR']):
+            name = bld.pyembed_libname('pyldb-util')
+            bld.SAMBA_LIBRARY(name,
                                   deps='ldb',
                                   source='pyldb_util.c',
                                   public_headers=('' if private_library else 'pyldb.h'),
@@ -133,15 +139,17 @@ def build(bld):
                                   private_library=private_library,
                                   pc_files='pyldb-util.pc',
                                   pyembed=True,
+                                  enabled=bld.PYTHON_BUILD_IS_ENABLED(),
                                   abi_directory='ABI',
                                   abi_match='pyldb_*')
 
-                if not bld.CONFIG_SET('USING_SYSTEM_LDB'):
+            if not bld.CONFIG_SET('USING_SYSTEM_LDB'):
                     bld.SAMBA_PYTHON('pyldb', 'pyldb.c',
                                      deps='ldb ' + name,
                                      realname='ldb.so',
                                      cflags='-DPACKAGE_VERSION=\"%s\"' % VERSION)
 
+        if bld.PYTHON_BUILD_IS_ENABLED():
             for env in bld.gen_python_environments(['PKGCONFIGDIR']):
                 bld.SAMBA_SCRIPT('_ldb_text.py',
                                  pattern='_ldb_text.py',
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index 41f3be7..69c708d 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -48,7 +48,8 @@ def configure(conf):
         if conf.CHECK_BUNDLED_SYSTEM_PKG('talloc', minversion=VERSION,
                                      implied_deps='replace'):
             conf.define('USING_SYSTEM_TALLOC', 1)
-        if conf.CHECK_BUNDLED_SYSTEM_PKG('pytalloc-util', minversion=VERSION,
+        if not conf.env.disable_python and \
+            conf.CHECK_BUNDLED_SYSTEM_PKG('pytalloc-util', minversion=VERSION,
                                      implied_deps='talloc replace'):
             conf.define('USING_SYSTEM_PYTALLOC_UTIL', 1)
 
@@ -122,7 +123,7 @@ def build(bld):
                           private_library=private_library,
                           manpages='man/talloc.3')
 
-    if not bld.CONFIG_SET('USING_SYSTEM_PYTALLOC_UTIL') and not bld.env.disable_python:
+    if not bld.CONFIG_SET('USING_SYSTEM_PYTALLOC_UTIL'):
         for env in bld.gen_python_environments(['PKGCONFIGDIR']):
             name = bld.pyembed_libname('pytalloc-util')
 
@@ -136,18 +137,19 @@ def build(bld):
                 abi_match='pytalloc_* _pytalloc_*',
                 private_library=private_library,
                 public_headers=('' if private_library else 'pytalloc.h'),
-                pc_files='pytalloc-util.pc'
+                pc_files='pytalloc-util.pc',
+                enabled=bld.PYTHON_BUILD_IS_ENABLED()
                 )
             bld.SAMBA_PYTHON('pytalloc',
                             'pytalloc.c',
                             deps='talloc ' + name,
-                            enabled=True,
+                            enabled=bld.PYTHON_BUILD_IS_ENABLED(),
                             realname='talloc.so')
 
             bld.SAMBA_PYTHON('test_pytalloc',
                             'test_pytalloc.c',
                             deps='pytalloc',
-                            enabled=True,
+                            enabled=bld.PYTHON_BUILD_IS_ENABLED(),
                             realname='_test_pytalloc.so',
                             install=False)
 
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index 34058e4..0d682eb 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -60,10 +60,6 @@ def set_options(opt):
                    help=("Disable the use of pthread robust mutexes"),
                    action="store_true", dest='disable_tdb_mutex_locking',
                    default=False)
-    if opt.IN_LAUNCH_DIR():
-        opt.add_option('--disable-python',
-                       help=("disable the pytdb module"),
-                       action="store_true", dest='disable_python', default=False)
 
 
 def configure(conf):
@@ -82,11 +78,10 @@ def configure(conf):
                                      implied_deps='replace'):
             conf.define('USING_SYSTEM_TDB', 1)
             conf.env.building_tdb = False
-            if conf.CHECK_BUNDLED_SYSTEM_PYTHON('pytdb', 'tdb', minversion=VERSION):
+            if not conf.env.disable_python and \
+                conf.CHECK_BUNDLED_SYSTEM_PYTHON('pytdb', 'tdb', minversion=VERSION):
                 conf.define('USING_SYSTEM_PYTDB', 1)
 
-    conf.env.disable_python = getattr(Options.options, 'disable_python', False)
-
     if (conf.CONFIG_SET('HAVE_ROBUST_MUTEXES') and
         conf.env.building_tdb and
         not conf.env.disable_tdb_mutex_locking):
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index 580ca4d..f160d6a 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -38,7 +38,8 @@ def configure(conf):
         if conf.CHECK_BUNDLED_SYSTEM_PKG('tevent', minversion=VERSION,
                                      onlyif='talloc', implied_deps='replace talloc'):
             conf.define('USING_SYSTEM_TEVENT', 1)
-            if conf.CHECK_BUNDLED_SYSTEM_PYTHON('pytevent', 'tevent', minversion=VERSION):
+            if not conf.env.disable_python and \
+                conf.CHECK_BUNDLED_SYSTEM_PYTHON('pytevent', 'tevent', minversion=VERSION):
                 conf.define('USING_SYSTEM_PYTEVENT', 1)
 
     if conf.CHECK_FUNCS('epoll_create', headers='sys/epoll.h'):
diff --git a/python/wscript_build b/python/wscript_build
index 5ab0d7d..85a983e 100644
--- a/python/wscript_build
+++ b/python/wscript_build
@@ -5,7 +5,8 @@ bld.SAMBA_LIBRARY('samba_python',
 	deps='LIBPYTHON pytalloc-util pyrpc_util',
 	grouping_library=True,
 	private_library=True,
-	pyembed=True)
+	pyembed=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED())
 
 bld.SAMBA_SUBSYSTEM('LIBPYTHON',
 	source='modules.c',
@@ -13,7 +14,7 @@ bld.SAMBA_SUBSYSTEM('LIBPYTHON',
 	init_function_sentinel='{NULL,NULL}',
 	deps='talloc',
 	pyext=True,
-	)
+	enabled=bld.PYTHON_BUILD_IS_ENABLED())
 
 
 bld.SAMBA_PYTHON('python_glue',
@@ -22,7 +23,8 @@ bld.SAMBA_PYTHON('python_glue',
 	realname='samba/_glue.so'
 	)
 
-for env in bld.gen_python_environments():
+if bld.PYTHON_BUILD_IS_ENABLED():
+    for env in bld.gen_python_environments():
 	# install out various python scripts for use by make test
 	bld.SAMBA_SCRIPT('samba_python_files',
 	                 pattern='samba/**/*.py',
diff --git a/source4/lib/policy/wscript_build b/source4/lib/policy/wscript_build
index b8ba638..f7c5909 100644
--- a/source4/lib/policy/wscript_build
+++ b/source4/lib/policy/wscript_build
@@ -6,7 +6,8 @@ bld.SAMBA_LIBRARY('samba-policy',
 	public_deps='ldb samba-net',
 	vnum='0.0.1',
 	pyembed=True,
-	public_headers='policy.h'
+	public_headers='policy.h',
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 bld.SAMBA_PYTHON('py_policy',
diff --git a/source4/libnet/wscript_build b/source4/libnet/wscript_build
index 1274a82..f29da29 100644
--- a/source4/libnet/wscript_build
+++ b/source4/libnet/wscript_build
@@ -4,7 +4,8 @@ bld.SAMBA_LIBRARY('samba-net',
 	source='libnet.c libnet_passwd.c libnet_time.c libnet_rpc.c libnet_join.c libnet_site.c libnet_become_dc.c libnet_unbecome_dc.c libnet_vampire.c libnet_samdump.c libnet_samsync_ldb.c libnet_user.c libnet_group.c libnet_share.c libnet_lookup.c libnet_domain.c userinfo.c groupinfo.c userman.c groupman.c prereq_domain.c libnet_samsync.c',
 	autoproto='libnet_proto.h',
 	public_deps='samba-credentials dcerpc dcerpc-samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI cli_composite LIBCLI_RESOLVE LIBCLI_FINDDCS cli_cldap LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH ndr smbpasswdparser PROVISION LIBCLI_SAMSYNC LIBTSOCKET',
-	private_library=True
+	private_library=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 
diff --git a/source4/librpc/wscript_build b/source4/librpc/wscript_build
index 60404f8..6bbf341 100644
--- a/source4/librpc/wscript_build
+++ b/source4/librpc/wscript_build
@@ -178,6 +178,7 @@ bld.SAMBA_SUBSYSTEM('pyrpc_util',
 	source='rpc/pyrpc_util.c',
 	public_deps='pytalloc-util pyparam_util dcerpc MESSAGING',
 	pyext=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED(),
 	)
 
 
@@ -393,9 +394,10 @@ bld.SAMBA_PYTHON('python_dcerpc_smb_acl',
 	realname='samba/dcerpc/smb_acl.so'
 	)
 
-bld.SAMBA_SCRIPT('python_dcerpc_init',
+if bld.PYTHON_BUILD_IS_ENABLED():
+    bld.SAMBA_SCRIPT('python_dcerpc_init',
                  pattern='rpc/dcerpc.py',
                  installdir='python/samba/dcerpc',
                  installname='__init__.py')
 
-bld.INSTALL_FILES('${PYTHONARCHDIR}/samba/dcerpc', 'rpc/dcerpc.py', destname='__init__.py')
+    bld.INSTALL_FILES('${PYTHONARCHDIR}/samba/dcerpc', 'rpc/dcerpc.py', destname='__init__.py')
diff --git a/source4/param/wscript_build b/source4/param/wscript_build
index 2ad753b..8de5fb5 100644
--- a/source4/param/wscript_build
+++ b/source4/param/wscript_build
@@ -4,6 +4,7 @@ bld.SAMBA_SUBSYSTEM('PROVISION',
 	source='provision.c pyparam.c',
 	deps='LIBPYTHON pyparam_util ldb pytalloc-util pyldb-util',
 	pyext=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED(),
 	)
 
 
@@ -51,6 +52,7 @@ bld.SAMBA_SUBSYSTEM('pyparam_util',
 	source='pyparam_util.c',
 	deps='LIBPYTHON samba-hostconfig pytalloc-util',
 	pyext=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED(),
 	)
 
 bld.SAMBA_LIBRARY('shares',
diff --git a/source4/torture/drs/wscript_build b/source4/torture/drs/wscript_build
index cfdd8a2..67bf034 100644
--- a/source4/torture/drs/wscript_build
+++ b/source4/torture/drs/wscript_build
@@ -6,6 +6,7 @@ bld.SAMBA_MODULE('TORTURE_DRS',
 	subsystem='smbtorture',
 	init_function='torture_drs_init',
 	deps='samba-util ldb POPT_SAMBA samba-errors torture ldbsamba talloc dcerpc ndr NDR_DRSUAPI gensec samba-hostconfig RPC_NDR_DRSUAPI DSDB_MODULE_HELPERS asn1util samdb NDR_DRSBLOBS samba-credentials samdb-common LIBCLI_RESOLVE LP_RESOLVE torturemain',
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
diff --git a/source4/torture/local/wscript_build b/source4/torture/local/wscript_build
index 3a12b6b..087b842 100644
--- a/source4/torture/local/wscript_build
+++ b/source4/torture/local/wscript_build
@@ -32,5 +32,6 @@ bld.SAMBA_MODULE('TORTURE_LOCAL',
 	subsystem='smbtorture',
 	init_function='torture_local_init',
 	deps=TORTURE_LOCAL_DEPS,
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
diff --git a/source4/torture/wscript_build b/source4/torture/wscript_build
index c065eaa..fe06629 100644
--- a/source4/torture/wscript_build
+++ b/source4/torture/wscript_build
@@ -14,7 +14,8 @@ bld.SAMBA_MODULE('TORTURE_BASIC',
 	deps='LIBCLI_SMB popt POPT_CREDENTIALS TORTURE_UTIL smbclient-raw TORTURE_RAW',
 	internal_module=True,
 	autoproto='basic/proto.h',
-	init_function='torture_base_init'
+	init_function='torture_base_init',
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 
@@ -24,7 +25,8 @@ bld.SAMBA_MODULE('TORTURE_RAW',
 	subsystem='smbtorture',
 	init_function='torture_raw_init',
 	deps='LIBCLI_SMB LIBCLI_LSA LIBCLI_SMB_COMPOSITE popt POPT_CREDENTIALS TORTURE_UTIL',
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 bld.RECURSE('smb2')
@@ -67,7 +69,8 @@ bld.SAMBA_SUBSYSTEM('TORTURE_NDR',
                   ndr/charset.c
 		  ''',
 	autoproto='ndr/proto.h',
-	deps='torture krb5samba'
+	deps='torture krb5samba',
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 torture_rpc_backupkey = ''
@@ -181,7 +184,8 @@ bld.SAMBA_MODULE('torture_rpc',
                       RPC_NDR_BACKUPKEY
                       RPC_NDR_WINSPOOL
                       ''' + ntvfs_specific['deps'],
-                 internal_module=True)
+                 internal_module=True,
+                 enabled=bld.PYTHON_BUILD_IS_ENABLED())
 
 bld.RECURSE('drs')
 bld.RECURSE('dns')
@@ -192,7 +196,8 @@ bld.SAMBA_MODULE('TORTURE_RAP',
 	subsystem='smbtorture',
 	init_function='torture_rap_init',
 	deps='TORTURE_UTIL LIBCLI_SMB NDR_RAP LIBCLI_RAP',
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 bld.SAMBA_MODULE('TORTURE_DFS',
@@ -252,7 +257,8 @@ bld.SAMBA_MODULE('TORTURE_NBT',
 	subsystem='smbtorture',
 	init_function='torture_nbt_init',
 	deps='LIBCLI_SMB cli-nbt LIBCLI_DGRAM LIBCLI_WREPL torture_rpc',
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 
@@ -262,7 +268,8 @@ bld.SAMBA_MODULE('TORTURE_NET',
 	subsystem='smbtorture',
 	init_function='torture_net_init',
 	deps='samba-net popt POPT_CREDENTIALS torture_rpc PROVISION',
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 
@@ -272,7 +279,8 @@ bld.SAMBA_MODULE('TORTURE_NTP',
 	subsystem='smbtorture',
 	init_function='torture_ntp_init',
 	deps='popt POPT_CREDENTIALS torture_rpc',
-	internal_module=True
+	internal_module=True,
+	enabled=bld.PYTHON_BUILD_IS_ENABLED()
 	)
 
 bld.SAMBA_MODULE('TORTURE_VFS',
@@ -290,6 +298,7 @@ bld.SAMBA_SUBSYSTEM('torturemain',
                     source='smbtorture.c torture.c shell.c',
                     subsystem_name='smbtorture',
                     deps='torture popt POPT_SAMBA POPT_CREDENTIALS dcerpc LIBCLI_SMB SMBREADLINE ' + TORTURE_MODULES,
+                    enabled=bld.PYTHON_BUILD_IS_ENABLED()
                     )
 
 bld.SAMBA_BINARY('smbtorture',
@@ -297,7 +306,8 @@ bld.SAMBA_BINARY('smbtorture',
                  manpages='man/smbtorture.1',
                  private_headers='smbtorture.h',
                  deps='torturemain torture popt POPT_SAMBA POPT_CREDENTIALS dcerpc LIBCLI_SMB SMBREADLINE ' + TORTURE_MODULES,
-                 pyembed=True
+                 pyembed=True,
+                 enabled=bld.PYTHON_BUILD_IS_ENABLED()
                  )
 
 bld.SAMBA_BINARY('gentest',
diff --git a/wscript b/wscript
index 9168db1..1fa61f7 100644
--- a/wscript
+++ b/wscript
@@ -105,8 +105,12 @@ def configure(conf):
     conf.SAMBA_CHECK_PERL(mandatory=True)
     conf.find_program('xsltproc', var='XSLTPROC')
 
+    if conf.env.disable_python:
+        if not conf.env.without_ad_dc:
+            raise Utils.WafError('ADDC requires python')
+
     conf.SAMBA_CHECK_PYTHON(mandatory=True, version=(2, 6, 0))
-    conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=True)
+    conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=(not conf.env.disable_python))
 
     if sys.platform == 'darwin' and not conf.env['HAVE_ENVIRON_DECL']:
         # Mac OSX needs to have this and it's also needed that the python is compiled with this


More information about the samba-technical mailing list