[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH 8/8] tests/docker: Selective line reading by python scrip
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [RFC PATCH 8/8] tests/docker: Selective line reading by python script |
Date: |
Wed, 27 Jul 2022 23:20:56 +0200 |
+Erik/Daniel
On Wed, Jul 27, 2022 at 6:37 PM Lucas Mateus Castro(alqotel)
<lucas.araujo@eldorado.org.br> wrote:
>
> Building some images failed on ppc64le because the dockerfile tried to
> install some packages that are only available in x86 and arm64, to solve
> this while still having those packages be available in those architectures
> a comment was put before the installation command to instruct the python
> script into ignoring those lines for some architectures (in this case
> ppc64le)
>
> Overall I'm not a big fan of the way I solved this problem, so I'd like
> to know if anyone has a better way to make these dockerfilse work in
> PPC64LE.
>
> For context the base images used here are available in PPC64LE but some
> of the packages installed are not (in alpine's case it's XEN, which is
> only available to x86 and ARM), so this patch create a ignore_list which
> is set on a per-architecture basis, and any packages in a dockerfile in
> this ignore_list will not be copied to the temporary dockerfile used in
> the docker command.
Shouldn't this be done on lcitool side?
(https://gitlab.com/libvirt/libvirt-ci/-/tree/master/lcitool)
> Signed-off-by: Lucas Mateus Castro(alqotel) <lucas.araujo@eldorado.org.br>
> ---
> tests/docker/docker.py | 15 ++++++++++++---
> tests/docker/dockerfiles/alpine.docker | 2 ++
> 2 files changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/tests/docker/docker.py b/tests/docker/docker.py
> index d0af2861b8..9b962d1c78 100755
> --- a/tests/docker/docker.py
> +++ b/tests/docker/docker.py
> @@ -14,6 +14,7 @@
> import os
> import sys
> import subprocess
> +import platform
> import json
> import hashlib
> import atexit
> @@ -207,8 +208,15 @@ def _read_qemu_dockerfile(img_name):
>
> def _dockerfile_preprocess(df):
> out = ""
> + ignore_list = []
> for l in df.splitlines():
> - if len(l.strip()) == 0 or l.startswith("#"):
> + if len(l.strip()) == 0:
> + continue
> + if l.startswith("#"):
> + if len(l.split()) >= 3:
> + if l.split()[1] == "ignore":
> + if platform.processor() in l.split()[2].split(','):
> + ignore_list += l.split()[3].split(',')
> continue
> from_pref = "FROM qemu/"
> if l.startswith(from_pref):
> @@ -219,7 +227,8 @@ def _dockerfile_preprocess(df):
> inlining = _read_qemu_dockerfile(l[len(from_pref):])
> out += _dockerfile_preprocess(inlining)
> continue
> - out += l + "\n"
> + if not any(x in l.split() for x in ignore_list):
> + out += l + "\n"
> return out
>
>
> @@ -330,7 +339,7 @@ def build_image(self, tag, docker_dir, dockerfile,
> tmp_df = tempfile.NamedTemporaryFile(mode="w+t",
> encoding='utf-8',
> dir=docker_dir,
> suffix=".docker")
> - tmp_df.write(dockerfile)
> + tmp_df.write(_dockerfile_preprocess(dockerfile))
>
> if user:
> uid = os.getuid()
> diff --git a/tests/docker/dockerfiles/alpine.docker
> b/tests/docker/dockerfiles/alpine.docker
> index 2943a99730..5cec46d8f2 100644
> --- a/tests/docker/dockerfiles/alpine.docker
> +++ b/tests/docker/dockerfiles/alpine.docker
> @@ -6,6 +6,8 @@
>
> FROM docker.io/library/alpine:edge
>
> +# Lines to by ignored when this file is read by the python script
> +# ignore ppc64le,ppc64 xen-dev
> RUN apk update && \
> apk upgrade && \
> apk add \
> --
> 2.25.1
>
- Re: [PATCH 1/8] tests/docker: Fix alpine dockerfile, (continued)
- [PATCH 2/8] scripts/ci/setup: ninja missing from build-environment, Lucas Mateus Castro(alqotel), 2022/07/27
- [PATCH 5/8] scripts/ci/setup: Add ppc64le to vars.yml template, Lucas Mateus Castro(alqotel), 2022/07/27
- [PATCH 6/8] scripts/ci/setup: Add Fedora to build-environment.yml, Lucas Mateus Castro(alqotel), 2022/07/27
- [PATCH 4/8] scripts/ci/setup: spice-server only on x86 aarch64, Lucas Mateus Castro(alqotel), 2022/07/27
- [PATCH 7/8] scripts/ci/setup: Added debian to build-environment.yml, Lucas Mateus Castro(alqotel), 2022/07/27
- [RFC PATCH 8/8] tests/docker: Selective line reading by python script, Lucas Mateus Castro(alqotel), 2022/07/27
- Re: [RFC PATCH 8/8] tests/docker: Selective line reading by python script,
Philippe Mathieu-Daudé <=