diff options
author | Joe Guo <joeg@catalyst.net.nz> | 2019-02-15 11:46:22 +1300 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2019-02-18 09:25:21 +0100 |
commit | 9fa698b02358807c20444a6bc5a9ab8f311c4922 (patch) | |
tree | a7a301ac1431b4619d3fcac6f85565ce3820b632 /buildtools | |
parent | 4843a27bbc2f2017314ad9508d61ac4c44330e77 (diff) | |
download | samba-9fa698b02358807c20444a6bc5a9ab8f311c4922.tar.gz |
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 <joeg@catalyst.net.nz>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'buildtools')
-rw-r--r-- | buildtools/wafsamba/symbols.py | 5 |
1 files 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: |