From d170a51dc62995c3f81910eafd7d8ae636948391 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 30 Jun 2017 06:21:32 +0200 Subject: [PATCH 1/2] wafsamba: add maxversion and version_blacklist to CHECK_BUNDLED_SYSTEM[_PKG]() BUG: https://bugzilla.samba.org/show_bug.cgi?id=12859 Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett (cherry picked from commit 4ca48ee4d060f773dcdf9f78a5e4c1b1263b61f4) --- buildtools/wafsamba/samba_bundled.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py index ea88807..aa6199e 100644 --- a/buildtools/wafsamba/samba_bundled.py +++ b/buildtools/wafsamba/samba_bundled.py @@ -110,6 +110,7 @@ def LIB_MUST_BE_PRIVATE(conf, libname): @conf def CHECK_BUNDLED_SYSTEM_PKG(conf, libname, minversion='0.0.0', + maxversion=None, version_blacklist=[], onlyif=None, implied_deps=None, pkg=None): '''check if a library is available as a system library. @@ -117,12 +118,15 @@ def CHECK_BUNDLED_SYSTEM_PKG(conf, libname, minversion='0.0.0', ''' return conf.CHECK_BUNDLED_SYSTEM(libname, minversion=minversion, + maxversion=maxversion, + version_blacklist=version_blacklist, onlyif=onlyif, implied_deps=implied_deps, pkg=pkg) @conf def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0', + maxversion=None, version_blacklist=[], checkfunctions=None, headers=None, checkcode=None, onlyif=None, implied_deps=None, require_headers=True, pkg=None, set_target=True): @@ -181,16 +185,29 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0', minversion = minimum_library_version(conf, libname, minversion) msg = 'Checking for system %s' % libname + msg_ver = [] if minversion != '0.0.0': - msg += ' >= %s' % minversion + msg_ver.append('>=%s' % minversion) + if maxversion is not None: + msg_ver.append('<=%s' % maxversion) + for v in version_blacklist: + msg_ver.append('!=%s' % v) + if msg_ver != []: + msg += " (%s)" % (" ".join(msg_ver)) uselib_store=libname.upper() if pkg is None: pkg = libname + version_checks = '%s >= %s' % (pkg, minversion) + if maxversion is not None: + version_checks += ' %s <= %s' % (pkg, maxversion) + for v in version_blacklist: + version_checks += ' %s != %s' % (pkg, v) + # try pkgconfig first if (conf.CHECK_CFG(package=pkg, - args='"%s >= %s" --cflags --libs' % (pkg, minversion), + args='"%s" --cflags --libs' % (version_checks), msg=msg, uselib_store=uselib_store) and check_functions_headers_code()): if set_target: -- 1.9.1 From c7fa6e07aa6fdae77fc383c70cb0fcb29420323f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 30 Jun 2017 06:24:01 +0200 Subject: [PATCH 2/2] ldb: protect Samba < 4.7 against incompatible ldb versions and require ldb < 1.2.0 BUG: https://bugzilla.samba.org/show_bug.cgi?id=12859 Signed-off-by: Stefan Metzmacher --- lib/ldb/wscript | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/ldb/wscript b/lib/ldb/wscript index 7f05db3..dd68d66 100755 --- a/lib/ldb/wscript +++ b/lib/ldb/wscript @@ -55,11 +55,26 @@ 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, + # + # ldb >= 1.2.0 (as well as 1.1.30 and 1.1.31) are + # incompatible with Samba < 4.7 + # + # See https://bugzilla.samba.org/show_bug.cgi?id=12859 + # + maxversion = "1.1.99" + version_blacklist = ["1.1.30", "1.1.31"] + + if conf.CHECK_BUNDLED_SYSTEM_PKG('pyldb-util', + minversion=VERSION, + maxversion=maxversion, + version_blacklist=version_blacklist, onlyif='talloc tdb tevent', implied_deps='replace talloc tdb tevent ldb'): conf.define('USING_SYSTEM_PYLDB_UTIL', 1) - if conf.CHECK_BUNDLED_SYSTEM_PKG('ldb', minversion=VERSION, + if conf.CHECK_BUNDLED_SYSTEM_PKG('ldb', + minversion=VERSION, + maxversion=maxversion, + version_blacklist=version_blacklist, onlyif='talloc tdb tevent pyldb-util', implied_deps='replace talloc tdb tevent'): conf.define('USING_SYSTEM_LDB', 1) -- 1.9.1