From: Joe Guo Date: Thu, 14 Feb 2019 22:46:22 +0000 (+1300) Subject: wafsamba/symbols: change regex to match both rpath and runpath for different readelf... X-Git-Url: http://git.samba.org/?p=metze%2Fsamba%2Fwip.git;a=commitdiff_plain;h=9fa698b02358807c20444a6bc5a9ab8f311c4922 wafsamba/symbols: change regex to match both rpath and runpath for different readelf output In `wafsamba.dumplicate_symbols` test, it will use Popen to call: readelf --dynamic bin/default/source3/lib/netapi/examples/netlogon/netlogon_control2 then try to find rpath lib lines from output with regex: re_rpath = re.compile(b'Library rpath: \[(.*)\]') In ubuntu 14.04 docker image, which current CI is using, the actual output from `readelf` is `runpath` instead of 'rpath': ... Library runpath: [/home/gitlab-runner/samba/bin/shared:/home/gitlab-runner/samba/bin/shared/private]\n' ... So the regex never matched, and hide a bug. In Ubuntu 1604 docker image, the output changes to `rpath` and matched the regex, which expose the error in previous commit. Improve the regex to match both `rpath` and `runpath`. Signed-off-by: Joe Guo Reviewed-by: Alexander Bokovoy Reviewed-by: Andrew Bartlett --- diff --git a/buildtools/wafsamba/symbols.py b/buildtools/wafsamba/symbols.py index 505c0bac7eac..3eca3d46bd71 100644 --- a/buildtools/wafsamba/symbols.py +++ b/buildtools/wafsamba/symbols.py @@ -120,7 +120,8 @@ def find_ldd_path(bld, libname, binary): # some regular expressions for parsing readelf output re_sharedlib = re.compile(b'Shared library: \[(.*)\]') -re_rpath = re.compile(b'Library rpath: \[(.*)\]') +# output from readelf could be `Library rpath` or `Libray runpath` +re_rpath = re.compile(b'Library (rpath|runpath): \[(.*)\]') def get_libs(bld, binname): '''find the list of linked libraries for any binary or library @@ -147,7 +148,7 @@ def get_libs(bld, binname): m = re_rpath.search(line) if m: # output from Popen is always bytestr even in py3 - rpath.extend(m.group(1).split(b":")) + rpath.extend(m.group(2).split(b":")) ret = set() for lib in libs: