mirror of https://github.com/xemu-project/xemu.git
tests/docker: make executable an optional argument to "update"
We're going to extend the abilities of the command shortly. Reviewed-by: Willian Rampazzo <willianr@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20210512102051.12134-4-alex.bennee@linaro.org>
This commit is contained in:
parent
3218d829e3
commit
8d628d075d
|
@ -248,7 +248,7 @@ docker-run: docker-qemu-src
|
||||||
$(if $(EXECUTABLE), \
|
$(if $(EXECUTABLE), \
|
||||||
$(call quiet-command, \
|
$(call quiet-command, \
|
||||||
$(DOCKER_SCRIPT) update \
|
$(DOCKER_SCRIPT) update \
|
||||||
$(IMAGE) $(EXECUTABLE), \
|
$(IMAGE) --executable $(EXECUTABLE), \
|
||||||
" COPYING $(EXECUTABLE) to $(IMAGE)"))
|
" COPYING $(EXECUTABLE) to $(IMAGE)"))
|
||||||
$(call quiet-command, \
|
$(call quiet-command, \
|
||||||
$(DOCKER_SCRIPT) run \
|
$(DOCKER_SCRIPT) run \
|
||||||
|
|
|
@ -523,7 +523,7 @@ class UpdateCommand(SubCommand):
|
||||||
def args(self, parser):
|
def args(self, parser):
|
||||||
parser.add_argument("tag",
|
parser.add_argument("tag",
|
||||||
help="Image Tag")
|
help="Image Tag")
|
||||||
parser.add_argument("executable",
|
parser.add_argument("--executable",
|
||||||
help="Executable to copy")
|
help="Executable to copy")
|
||||||
|
|
||||||
def run(self, args, argv):
|
def run(self, args, argv):
|
||||||
|
@ -532,35 +532,37 @@ class UpdateCommand(SubCommand):
|
||||||
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, using the current
|
|
||||||
# configured binfmt_misc path. If we don't get a path then we
|
|
||||||
# only need the support libraries copied
|
|
||||||
ff, enabled = _check_binfmt_misc(args.executable)
|
|
||||||
|
|
||||||
if not enabled:
|
|
||||||
print("binfmt_misc not enabled, update disabled")
|
|
||||||
return 1
|
|
||||||
|
|
||||||
if ff:
|
|
||||||
tmp_tar.add(args.executable, arcname=ff)
|
|
||||||
|
|
||||||
# Add any associated libraries
|
|
||||||
libs = _get_so_libs(args.executable)
|
|
||||||
if libs:
|
|
||||||
for l in libs:
|
|
||||||
so_path = os.path.dirname(l)
|
|
||||||
name = os.path.basename(l)
|
|
||||||
real_l = os.path.realpath(l)
|
|
||||||
try:
|
|
||||||
tmp_tar.add(real_l, arcname="%s/%s" % (so_path, name))
|
|
||||||
except FileNotFoundError:
|
|
||||||
print("Couldn't add %s/%s to archive" % (so_path, name))
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Create a Docker buildfile
|
# Create a Docker buildfile
|
||||||
df = StringIO()
|
df = StringIO()
|
||||||
df.write(u"FROM %s\n" % args.tag)
|
df.write(u"FROM %s\n" % args.tag)
|
||||||
df.write(u"ADD . /\n")
|
|
||||||
|
if args.executable:
|
||||||
|
# Add the executable to the tarball, using the current
|
||||||
|
# configured binfmt_misc path. If we don't get a path then we
|
||||||
|
# only need the support libraries copied
|
||||||
|
ff, enabled = _check_binfmt_misc(args.executable)
|
||||||
|
|
||||||
|
if not enabled:
|
||||||
|
print("binfmt_misc not enabled, update disabled")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
if ff:
|
||||||
|
tmp_tar.add(args.executable, arcname=ff)
|
||||||
|
|
||||||
|
# Add any associated libraries
|
||||||
|
libs = _get_so_libs(args.executable)
|
||||||
|
if libs:
|
||||||
|
for l in libs:
|
||||||
|
so_path = os.path.dirname(l)
|
||||||
|
name = os.path.basename(l)
|
||||||
|
real_l = os.path.realpath(l)
|
||||||
|
try:
|
||||||
|
tmp_tar.add(real_l, arcname="%s/%s" % (so_path, name))
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Couldn't add %s/%s to archive" % (so_path, name))
|
||||||
|
pass
|
||||||
|
|
||||||
|
df.write(u"ADD . /\n")
|
||||||
|
|
||||||
df_bytes = BytesIO(bytes(df.getvalue(), "UTF-8"))
|
df_bytes = BytesIO(bytes(df.getvalue(), "UTF-8"))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue