summaryrefslogtreecommitdiff
path: root/buildtools
diff options
context:
space:
mode:
authorJoe Guo <joeg@catalyst.net.nz>2019-02-15 11:46:22 +1300
committerAndrew Bartlett <abartlet@samba.org>2019-02-18 09:25:21 +0100
commit9fa698b02358807c20444a6bc5a9ab8f311c4922 (patch)
treea7a301ac1431b4619d3fcac6f85565ce3820b632 /buildtools
parent4843a27bbc2f2017314ad9508d61ac4c44330e77 (diff)
downloadsamba-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.py5
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: