mirror of https://gitee.com/openkylin/qemu.git
tests: make docker.py update use configured binfmt path
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>
This commit is contained in:
parent
d6db2a1cdf
commit
7e81d19840
|
@ -123,17 +123,17 @@ def _check_binfmt_misc(executable):
|
||||||
|
|
||||||
if not os.path.exists(binfmt_entry):
|
if not os.path.exists(binfmt_entry):
|
||||||
print ("No binfmt_misc entry for %s" % (binary))
|
print ("No binfmt_misc entry for %s" % (binary))
|
||||||
return False
|
return None
|
||||||
|
|
||||||
with open(binfmt_entry) as x: entry = x.read()
|
with open(binfmt_entry) as x: entry = x.read()
|
||||||
|
|
||||||
qpath = "/usr/bin/%s" % (binary)
|
m = re.search("interpreter (\S+)\n", entry)
|
||||||
if not re.search("interpreter %s\n" % (qpath), entry):
|
interp = m.group(1)
|
||||||
print ("binfmt_misc for %s does not point to %s" % (binary, qpath))
|
if interp and interp != executable:
|
||||||
return False
|
print("binfmt_misc for %s does not point to %s, using %s" %
|
||||||
|
(binary, executable, interp))
|
||||||
return True
|
|
||||||
|
|
||||||
|
return interp
|
||||||
|
|
||||||
def _read_qemu_dockerfile(img_name):
|
def _read_qemu_dockerfile(img_name):
|
||||||
# special case for Debian linux-user images
|
# special case for Debian linux-user images
|
||||||
|
@ -394,9 +394,14 @@ def run(self, args, argv):
|
||||||
tmp = tempfile.NamedTemporaryFile(suffix="dckr.tar.gz")
|
tmp = tempfile.NamedTemporaryFile(suffix="dckr.tar.gz")
|
||||||
tmp_tar = TarFile(fileobj=tmp, mode='w')
|
tmp_tar = TarFile(fileobj=tmp, mode='w')
|
||||||
|
|
||||||
# Add the executable to the tarball
|
# Add the executable to the tarball, using the current
|
||||||
bn = os.path.basename(args.executable)
|
# configured binfmt_misc path.
|
||||||
ff = "/usr/bin/%s" % bn
|
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)
|
tmp_tar.add(args.executable, arcname=ff)
|
||||||
|
|
||||||
# Add any associated libraries
|
# Add any associated libraries
|
||||||
|
|
Loading…
Reference in New Issue