All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: fam@euphon.net, berrange@redhat.com, stefanb@linux.vnet.ibm.com,
	"Alex Bennée" <alex.bennee@linaro.org>,
	richard.henderson@linaro.org, f4bug@amsat.org,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	cota@braap.org, stefanha@redhat.com, marcandre.lureau@redhat.com,
	pbonzini@redhat.com, aurelien@aurel32.net
Subject: [PATCH  v3 02/17] tests/docker: better handle symlinked libs
Date: Mon,  3 Feb 2020 09:09:17 +0000	[thread overview]
Message-ID: <20200203090932.19147-3-alex.bennee@linaro.org> (raw)
In-Reply-To: <20200203090932.19147-1-alex.bennee@linaro.org>

When we are copying we want to ensure we grab the first
resolution (the found in path section). However even that binary might
be a symlink so lets make sure we chase the symlinks to copy the right
binary to where it can be found.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

---
v3
  - fix comment
  - fix grouping extraction
  - try/except on IndexError
---
 tests/docker/docker.py | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 31d8adf836e..d8268c11117 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -106,18 +106,19 @@ def _get_so_libs(executable):
     """Return a list of libraries associated with an executable.
 
     The paths may be symbolic links which would need to be resolved to
-    ensure theright data is copied."""
+    ensure the right data is copied."""
 
     libs = []
-    ldd_re = re.compile(r"(/.*/)(\S*)")
+    ldd_re = re.compile(r"(?:\S+ => )?(\S*) \(:?0x[0-9a-f]+\)")
     try:
         ldd_output = subprocess.check_output(["ldd", executable]).decode('utf-8')
         for line in ldd_output.split("\n"):
             search = ldd_re.search(line)
-            if search and len(search.groups()) == 2:
-                so_path = search.groups()[0]
-                so_lib = search.groups()[1]
-                libs.append("%s/%s" % (so_path, so_lib))
+            if search:
+                try:
+                    libs.append(s.group(1))
+                except IndexError:
+                    pass
     except subprocess.CalledProcessError:
         print("%s had no associated libraries (static build?)" % (executable))
 
@@ -145,7 +146,8 @@ def _copy_binary_with_libs(src, bin_dest, dest_dir):
     if libs:
         for l in libs:
             so_path = os.path.dirname(l)
-            _copy_with_mkdir(l, dest_dir, so_path)
+            real_l = os.path.realpath(l)
+            _copy_with_mkdir(real_l, dest_dir, so_path)
 
 
 def _check_binfmt_misc(executable):
-- 
2.20.1



  parent reply	other threads:[~2020-02-03  9:10 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-03  9:09 [PATCH v3 00/17] testing/next (with build fixes, finally GREEN!) Alex Bennée
2020-02-03  9:09 ` [PATCH v3 01/17] tests/docker: move most cross compilers to buster base Alex Bennée
2020-02-03  9:09 ` Alex Bennée [this message]
2020-02-03  9:09 ` [PATCH v3 03/17] gitlab-ci: Refresh the list of iotests Alex Bennée
2020-02-03  9:09 ` [PATCH v3 04/17] travis.yml: Install genisoimage package Alex Bennée
2020-02-03  9:09 ` [PATCH v3 05/17] .shippable: --disable-docs for cross-compile tests Alex Bennée
2020-02-03  9:09 ` [PATCH v3 06/17] hw/hppa/Kconfig: LASI chipset requires PARALLEL port Alex Bennée
2020-02-03  9:09 ` [PATCH v3 07/17] .travis.yml: Drop superfluous use of --python=python3 parameter Alex Bennée
2020-02-03  9:09 ` [PATCH v3 08/17] .travis.yml: Add description to each job Alex Bennée
2020-02-03  9:09 ` [PATCH v3 09/17] .travis.yml: build documents under bionic Alex Bennée
2020-02-03  9:09 ` [PATCH v3 10/17] .travis.yml: move cache flushing to early common phase Alex Bennée
2020-02-03  9:09 ` [PATCH v3 11/17] .travis.yml: probe for number of available processors Alex Bennée
2020-02-03  9:09 ` [PATCH v3 12/17] tests/tcg: add a configure compiler check for ARMv8.1 and SVE Alex Bennée
2020-02-03  9:09 ` [PATCH v3 13/17] tests/tcg: gate pauth-% tests on having compiler support Alex Bennée
2020-02-03  9:09 ` [PATCH v3 14/17] .travis.yml: introduce TEST_BUILD_CMD and use it for check-tcg Alex Bennée
2020-02-03 15:00   ` Philippe Mathieu-Daudé
2020-02-03  9:09 ` [PATCH v3 15/17] .travis.yml: drop the travis_retry from tests Alex Bennée
2020-02-03 14:58   ` Philippe Mathieu-Daudé
2020-02-03  9:09 ` [PATCH v3 16/17] .travis.yml: drop cris-linux-user from the plugins test Alex Bennée
2020-02-03  9:09 ` [PATCH v3 17/17] .travis.yml: single thread build-tcg Alex Bennée
2020-02-03 10:01   ` Thomas Huth
2020-02-03 11:35     ` Philippe Mathieu-Daudé
2020-02-03 14:37       ` Alex Bennée
     [not found] <BYAPR13MB2455076A60A04F532838EED580000@BYAPR13MB2455.namprd13.prod.outlook.com>
2020-02-03 19:02 ` [PATCH v3 02/17] tests/docker: better handle symlinked libs Robert Foley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200203090932.19147-3-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=aurelien@aurel32.net \
    --cc=berrange@redhat.com \
    --cc=cota@braap.org \
    --cc=f4bug@amsat.org \
    --cc=fam@euphon.net \
    --cc=marcandre.lureau@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=stefanb@linux.vnet.ibm.com \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.