From 934dea83bd35bdf270b57eae6e6ef5c941a1a5ce Mon Sep 17 00:00:00 2001 From: Thomas Nagy Date: Sat, 31 Oct 2015 14:38:10 +0100 Subject: [PATCH 1/2] build:wafsamba: Update waf/wafadmin/Tools/config_c.py from upstream The upstream version features the flags processing fixes present in Waf 1.8. Signed-off-by: Thomas Nagy --- third_party/waf/wafadmin/Tools/config_c.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/third_party/waf/wafadmin/Tools/config_c.py b/third_party/waf/wafadmin/Tools/config_c.py index 9f1103c..3827192 100644 --- a/third_party/waf/wafadmin/Tools/config_c.py +++ b/third_party/waf/wafadmin/Tools/config_c.py @@ -82,6 +82,10 @@ def parse_flags(line, uselib, env): # RPATH later, and hence can potentially lead to linking # in too old versions of our internal libs. # + elif x == '-Wl,-rpath' or x == '-Wl,-R': + app('RPATH_' + uselib, lst.pop(0).lstrip('-Wl,')) + elif x.startswith('-Wl,-R,'): + app('RPATH_' + uselib, x[7:]) elif x.startswith('-Wl,-R'): app('RPATH_' + uselib, x[6:]) elif x.startswith('-Wl,-rpath,'): @@ -746,3 +750,4 @@ def cc_load_tools(conf): @conftest def cxx_load_tools(conf): conf.check_tool('cxx') + From 9d17157a98005febbd95192f891d4a988155fdca Mon Sep 17 00:00:00 2001 From: Thomas Nagy Date: Sat, 31 Oct 2015 14:39:35 +0100 Subject: [PATCH 2/2] build:wafsamba: Remove the now unneeded special treatment of rpath flags The flags parsing fixes were backported to waf 1.5 from waf 1.8. There is no reason to keep the flags parsing fixes in Samba. Signed-off-by: Thomas Nagy --- buildtools/wafsamba/samba_conftests.py | 56 +--------------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/buildtools/wafsamba/samba_conftests.py b/buildtools/wafsamba/samba_conftests.py index 5a9c9d5..b4e44c5 100644 --- a/buildtools/wafsamba/samba_conftests.py +++ b/buildtools/wafsamba/samba_conftests.py @@ -1,10 +1,9 @@ # a set of config tests that use the samba_autoconf functions # to test for commonly needed configuration options -import os, shutil, re, shlex +import os, shutil, re import Build, Configure, Utils, Options, Logs from Configure import conf -import config_c from samba_utils import TO_LIST, ADD_LD_LIBRARY_PATH @@ -247,9 +246,6 @@ def CHECK_SHLIB_W_PYTHON(conf, msg): '''check if we need -undefined dynamic_lookup''' dir = find_config_dir(conf) - - env = conf.env - snip = ''' #include #include @@ -524,53 +520,3 @@ def CHECK_STANDARD_LIBPATH(conf): conf.env.STANDARD_LIBPATH = dirlist - -waf_config_c_parse_flags = config_c.parse_flags; -def samba_config_c_parse_flags(line1, uselib, env): - # - # We do a special treatment of the rpath components - # in the linkflags line, because currently the upstream - # parse_flags function is incomplete with respect to - # treatment of the rpath. The remainder of the linkflags - # line is later passed to the original funcion. - # - lst1 = shlex.split(line1) - lst2 = [] - while lst1: - x = lst1.pop(0) - - # - # NOTE on special treatment of -Wl,-R and -Wl,-rpath: - # - # It is important to not put a library provided RPATH - # into the LINKFLAGS but in the RPATH instead, since - # the provided LINKFLAGS get prepended to our own internal - # RPATH later, and hence can potentially lead to linking - # in too old versions of our internal libs. - # - # We do this filtering here on our own because of some - # bugs in the real parse_flags() function. - # - if x == '-Wl,-rpath' or x == '-Wl,-R': - x = lst1.pop(0) - if x.startswith('-Wl,'): - rpath = x[4:] - else: - rpath = x - elif x.startswith('-Wl,-R,'): - rpath = x[7:] - elif x.startswith('-Wl,-R'): - rpath = x[6:] - elif x.startswith('-Wl,-rpath,'): - rpath = x[11:] - else: - lst2.append(x) - continue - - env.append_value('RPATH_' + uselib, rpath) - - line2 = ' '.join(lst2) - waf_config_c_parse_flags(line2, uselib, env) - - return -config_c.parse_flags = samba_config_c_parse_flags