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:
Alex Bennée 2021-05-12 11:20:23 +01:00
parent 3218d829e3
commit 8d628d075d
2 changed files with 30 additions and 28 deletions

View File

@ -248,7 +248,7 @@ docker-run: docker-qemu-src
$(if $(EXECUTABLE), \
$(call quiet-command, \
$(DOCKER_SCRIPT) update \
$(IMAGE) $(EXECUTABLE), \
$(IMAGE) --executable $(EXECUTABLE), \
" COPYING $(EXECUTABLE) to $(IMAGE)"))
$(call quiet-command, \
$(DOCKER_SCRIPT) run \

View File

@ -523,7 +523,7 @@ class UpdateCommand(SubCommand):
def args(self, parser):
parser.add_argument("tag",
help="Image Tag")
parser.add_argument("executable",
parser.add_argument("--executable",
help="Executable to copy")
def run(self, args, argv):
@ -532,35 +532,37 @@ class UpdateCommand(SubCommand):
tmp = tempfile.NamedTemporaryFile(suffix="dckr.tar.gz")
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
df = StringIO()
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"))