summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-03-29 00:08:38 +1100
committerAndrew Tridgell <tridge@samba.org>2010-04-06 20:27:15 +1000
commita2b4d7e8ebf24bc65cceb38bf23d8d8dc3307d27 (patch)
treeb9163b6b00ae6ca067d3fa592c603a06a12b90d8
parent71322481643878151553dee80fa2ab3de3f9e34f (diff)
downloadsamba-a2b4d7e8ebf24bc65cceb38bf23d8d8dc3307d27.tar.gz
samba-a2b4d7e8ebf24bc65cceb38bf23d8d8dc3307d27.tar.bz2
samba-a2b4d7e8ebf24bc65cceb38bf23d8d8dc3307d27.zip
s4-waf: ensure we don't end up with mixed versions of talloc/tdb/tevent
-rw-r--r--buildtools/wafsamba/samba_bundled.py16
-rw-r--r--lib/tevent/wscript2
-rw-r--r--source4/lib/ldb/wscript3
3 files changed, 18 insertions, 3 deletions
diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index 47c6a836d6..b2d1b0ef14 100644
--- a/buildtools/wafsamba/samba_bundled.py
+++ b/buildtools/wafsamba/samba_bundled.py
@@ -46,7 +46,7 @@ Options.Handler.BUNDLED_EXTENSION_DEFAULT = BUNDLED_EXTENSION_DEFAULT
@runonce
@conf
def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
- checkfunctions=None, headers=None):
+ checkfunctions=None, headers=None, onlyif=None):
'''check if a library is available as a system library.
this first tries via pkg-config, then if that fails
tries by testing for a specified function in the specified lib
@@ -56,6 +56,20 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
found = 'FOUND_SYSTEMLIB_%s' % libname
if found in conf.env:
return conf.env[found]
+
+ # see if the library should only use a system version if another dependent
+ # system version is found. That prevents possible use of mixed library
+ # versions
+ if onlyif:
+ for syslib in TO_LIST(onlyif):
+ f = 'FOUND_SYSTEM_%s' % syslib
+ if not f in conf.env:
+ if 'NONE' in conf.env.BUNDLED_LIBS or '!'+libname in conf.env.BUNDLED_LIBS:
+ print('ERROR: Use of system library %s depends on missing system library %s' % (libname, syslib))
+ sys.exit(1)
+ conf.env[found] = False
+ return False
+
# try pkgconfig first
if conf.check_cfg(package=libname,
args='"%s >= %s" --cflags --libs' % (libname, minversion),
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index e6ef67a8d6..a84dad663c 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -22,7 +22,7 @@ def configure(conf):
conf.sub_config(LIBREPLACE_DIR)
conf.sub_config(LIBTALLOC_DIR)
- if conf.CHECK_BUNDLED_SYSTEM('tevent', minversion=VERSION):
+ if conf.CHECK_BUNDLED_SYSTEM('tevent', minversion=VERSION, onlyif='talloc'):
conf.define('USING_SYSTEM_TEVENT', 1)
if conf.CHECK_FUNCS('epoll_create', headers='sys/epoll.h'):
diff --git a/source4/lib/ldb/wscript b/source4/lib/ldb/wscript
index e0269d7607..ffbb68e4b8 100644
--- a/source4/lib/ldb/wscript
+++ b/source4/lib/ldb/wscript
@@ -31,7 +31,8 @@ def configure(conf):
if not s4_build:
- if conf.CHECK_BUNDLED_SYSTEM('ldb', minversion=VERSION):
+ if conf.CHECK_BUNDLED_SYSTEM('ldb', minversion=VERSION,
+ onlyif='talloc tdb tevent'):
conf.define('USING_SYSTEM_LDB', 1)
# we need this for the ldap backend
conf.CHECK_FUNCS_IN('ber_flush ldap_open', 'lber ldap', headers='lber.h ldap.h', mandatory=True)