Skip to content

Commit

Permalink
tests: make docker.py update use configured binfmt path
Browse files Browse the repository at this point in the history
When copying a QEMU binary into a linux-user docker image we should
check what the current configured binfmt_misc path is rather than
just assuming "/usr/bin/qemu-bin". Obviously if the user changes the
configuration afterwards they will break their images again.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
  • Loading branch information
stsquad committed Feb 8, 2019
1 parent d6db2a1 commit 7e81d19
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions tests/docker/docker.py
Expand Up @@ -123,17 +123,17 @@ def _check_binfmt_misc(executable):

if not os.path.exists(binfmt_entry):
print ("No binfmt_misc entry for %s" % (binary))
return False
return None

with open(binfmt_entry) as x: entry = x.read()

qpath = "/usr/bin/%s" % (binary)
if not re.search("interpreter %s\n" % (qpath), entry):
print ("binfmt_misc for %s does not point to %s" % (binary, qpath))
return False

return True
m = re.search("interpreter (\S+)\n", entry)
interp = m.group(1)
if interp and interp != executable:
print("binfmt_misc for %s does not point to %s, using %s" %
(binary, executable, interp))

return interp

def _read_qemu_dockerfile(img_name):
# special case for Debian linux-user images
Expand Down Expand Up @@ -394,9 +394,14 @@ def run(self, args, argv):
tmp = tempfile.NamedTemporaryFile(suffix="dckr.tar.gz")
tmp_tar = TarFile(fileobj=tmp, mode='w')

# Add the executable to the tarball
bn = os.path.basename(args.executable)
ff = "/usr/bin/%s" % bn
# Add the executable to the tarball, using the current
# configured binfmt_misc path.
ff = _check_binfmt_misc(args.executable)
if not ff:
bn = os.path.basename(args.executable)
ff = "/usr/bin/%s" % bn
print ("No binfmt_misc configured: copied to %s" % (ff))

tmp_tar.add(args.executable, arcname=ff)

# Add any associated libraries
Expand Down

0 comments on commit 7e81d19

Please sign in to comment.