summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Patou <mat@matws.net>2010-12-10 01:42:32 +0300
committerMatthieu Patou <mat@matws.net>2010-12-10 02:07:18 +0300
commit87337383572324e3d1d00ed710614ebe217aa2b2 (patch)
treed562cd37228a12f9065f3bc73e1e80979fd57b19
parent672c48b763ce3d53dc93cce1c73f3f1ced1147e8 (diff)
downloadsamba-87337383572324e3d1d00ed710614ebe217aa2b2.tar.gz
samba-87337383572324e3d1d00ed710614ebe217aa2b2.tar.bz2
samba-87337383572324e3d1d00ed710614ebe217aa2b2.zip
build: introduce SAMBA_CHECK_PYTHON_HEADERS
This function is a wrapper around waf's check_python_header. It avoids searching more than once for the headers bringing a small speed improvement and a better lisibility of the logs. But it's mainly to avoid a nasty bug when python libraries are in path pointed by python_LIBPL (ie. /usr/local/lib/python2.6/config/) instead of python_LIBDIR (ie. /usr/local/lib). On the first call waf will correctly find that in order to link with python libs it needs to add -L$python_LIBPL. But on the next calls of check_python_headers, waf will use both the current library path value (ie. -L/usr/local/lib/python2.6/config) and -L$python_LIBDIR (ie. /usr/local/lib/) which will make him beleive that python libraries are in $python_LIBDIR which at the end will make the final link test fails in check_python_headers as it will not use the good directory. So by avoiding calling check_python_headers more than once we avoid making waf fooling itself.
-rw-r--r--buildtools/wafsamba/samba_python.py9
-rw-r--r--lib/talloc/wscript2
-rw-r--r--lib/tdb/wscript2
-rw-r--r--lib/tevent/wscript2
-rw-r--r--source4/wscript2
5 files changed, 13 insertions, 4 deletions
diff --git a/buildtools/wafsamba/samba_python.py b/buildtools/wafsamba/samba_python.py
index ad09981462..a663b1910d 100644
--- a/buildtools/wafsamba/samba_python.py
+++ b/buildtools/wafsamba/samba_python.py
@@ -4,6 +4,15 @@ import Build
from samba_utils import *
from samba_autoconf import *
+from Configure import conf
+@conf
+def SAMBA_CHECK_PYTHON_HEADERS(conf, mandatory=True):
+ if conf.env["python_headers_checked"] == []:
+ conf.check_python_headers(mandatory)
+ conf.env["python_headers_checked"] = "yes"
+ else:
+ conf.msg("python headers", "using cache")
+
def SAMBA_PYTHON(bld, name,
source='',
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index 6316abafd8..49eac6e6e6 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -59,7 +59,7 @@ def configure(conf):
# also disable if we don't have the python libs installed
conf.check_tool('python')
conf.check_python_version((2,4,2))
- conf.check_python_headers(mandatory=False)
+ conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=False)
if not conf.env.HAVE_PYTHON_H:
Logs.warn('Disabling pytalloc-util as python devel libs not found')
conf.env.disable_python = True
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index fadd24f60f..f00d119c9b 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -47,7 +47,7 @@ def configure(conf):
# also disable if we don't have the python libs installed
conf.check_tool('python')
conf.check_python_version((2,4,2))
- conf.check_python_headers(mandatory=False)
+ conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=False)
if not conf.env.HAVE_PYTHON_H:
Logs.warn('Disabling pytdb as python devel libs not found')
conf.env.disable_python = True
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index 14c4c60319..58ef87e1ab 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -48,7 +48,7 @@ def configure(conf):
# also disable if we don't have the python libs installed
conf.check_tool('python')
conf.check_python_version((2,4,2))
- conf.check_python_headers(mandatory=False)
+ conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=False)
if not conf.env.HAVE_PYTHON_H:
Logs.warn('Disabling pytevent as python devel libs not found')
conf.env.disable_python = True
diff --git a/source4/wscript b/source4/wscript
index dabca7f69c..fb0491972b 100644
--- a/source4/wscript
+++ b/source4/wscript
@@ -74,7 +74,7 @@ def configure(conf):
# enable tool to build python extensions
conf.check_tool('python')
conf.check_python_version((2,4,2))
- conf.check_python_headers(mandatory=True)
+ conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=True)
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