From 9fa698b02358807c20444a6bc5a9ab8f311c4922 Mon Sep 17 00:00:00 2001 From: Joe Guo Date: Fri, 15 Feb 2019 11:46:22 +1300 Subject: [PATCH] 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 --- buildtools/wafsamba/symbols.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/buildtools/wafsamba/symbols.py b/buildtools/wafsamba/symbols.py index 505c0bac7ea..3eca3d46bd7 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: -- 2.34.1