qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/2] tests/docker: promote debian-riscv64-cross to a full ima


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 1/2] tests/docker: promote debian-riscv64-cross to a full image
Date: Wed, 15 Sep 2021 09:35:55 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

On 9/14/21 8:58 PM, Richard Henderson wrote:
> From: Alex Bennée <alex.bennee@linaro.org>
> 
> To be able to cross build QEMU itself we need to include a few more
> libraries. These are only available in Debian's unstable ports repo
> for now so we need to base the riscv64 image on sid with the the
> minimal libs needed to build QEMU (glib/pixman).
> 
> The result works but is not as clean as using build-dep to bring in
> more dependencies. However sid is by definition a shifting pile of
> sand and by keeping the list of libs minimal we reduce the chance of
> having an image we can't build. It's good enough for a basic cross
> build testing of TCG.
> 
> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  .gitlab-ci.d/container-cross.yml              |  1 -
>  tests/docker/Makefile.include                 |  2 -
>  .../dockerfiles/debian-riscv64-cross.docker   | 46 +++++++++++++++++--
>  3 files changed, 41 insertions(+), 8 deletions(-)
> 
> diff --git a/.gitlab-ci.d/container-cross.yml 
> b/.gitlab-ci.d/container-cross.yml
> index 0fcebe363a..05996200e1 100644
> --- a/.gitlab-ci.d/container-cross.yml
> +++ b/.gitlab-ci.d/container-cross.yml
> @@ -134,7 +134,6 @@ ppc64el-debian-cross-container:
>  riscv64-debian-cross-container:
>    extends: .container_job_template
>    stage: containers-layer2
> -  needs: ['amd64-debian10-container']
>    variables:
>      NAME: debian-riscv64-cross
>  
> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
> index ff5d732889..3b03763186 100644
> --- a/tests/docker/Makefile.include
> +++ b/tests/docker/Makefile.include
> @@ -141,7 +141,6 @@ docker-image-debian-mips64-cross: docker-image-debian10
>  docker-image-debian-mips64el-cross: docker-image-debian10
>  docker-image-debian-mipsel-cross: docker-image-debian10
>  docker-image-debian-ppc64el-cross: docker-image-debian10
> -docker-image-debian-riscv64-cross: docker-image-debian10
>  docker-image-debian-s390x-cross: docker-image-debian10
>  docker-image-debian-sh4-cross: docker-image-debian10
>  docker-image-debian-sparc64-cross: docker-image-debian10
> @@ -180,7 +179,6 @@ DOCKER_PARTIAL_IMAGES += debian-arm64-test-cross
>  DOCKER_PARTIAL_IMAGES += debian-powerpc-test-cross
>  DOCKER_PARTIAL_IMAGES += debian-hppa-cross
>  DOCKER_PARTIAL_IMAGES += debian-m68k-cross debian-mips64-cross
> -DOCKER_PARTIAL_IMAGES += debian-riscv64-cross
>  DOCKER_PARTIAL_IMAGES += debian-sh4-cross debian-sparc64-cross
>  DOCKER_PARTIAL_IMAGES += debian-tricore-cross
>  DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
> diff --git a/tests/docker/dockerfiles/debian-riscv64-cross.docker 
> b/tests/docker/dockerfiles/debian-riscv64-cross.docker
> index 2bbff19772..594d97982c 100644
> --- a/tests/docker/dockerfiles/debian-riscv64-cross.docker
> +++ b/tests/docker/dockerfiles/debian-riscv64-cross.docker
> @@ -1,12 +1,48 @@
>  #
> -# Docker cross-compiler target
> +# Docker cross-compiler target for riscv64
>  #
> -# This docker target builds on the debian Buster base image.
> +# Currently the only distro that gets close to cross compiling riscv64
> +# images is Debian Sid (with unofficial ports). As this is a moving
> +# target we keep the library list minimal and are aiming to migrate
> +# from this hack as soon as we are able.
>  #
> -FROM qemu/debian10
> +FROM docker.io/library/debian:sid-slim
> +
> +# Add ports
> +RUN apt update && \
> +    DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
> +    DEBIAN_FRONTEND=noninteractive eatmydata apt update -yy && \
> +    DEBIAN_FRONTEND=noninteractive eatmydata apt upgrade -yy
> +
> +# Install common build utilities
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata apt install -yy \
> +    bc \
> +    build-essential \
> +    ca-certificates \
> +    debian-ports-archive-keyring \
> +    dpkg-dev \
> +    gettext \
> +    git \
> +    ninja-build \
> +    pkg-config \
> +    python3

Alex, why not using a debian-sid intermediate image?

> +# Add ports and riscv64 architecture
> +RUN echo "deb http://ftp.ports.debian.org/debian-ports/ sid main" >> 
> /etc/apt/sources.list
> +RUN dpkg --add-architecture riscv64
> +
> +# Duplicate deb line as deb-src
> +RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> 
> /etc/apt/sources.list
>  
>  RUN apt update && \
>      DEBIAN_FRONTEND=noninteractive eatmydata \
>      apt install -y --no-install-recommends \
> -        gcc-riscv64-linux-gnu \
> -        libc6-dev-riscv64-cross
> +         gcc-riscv64-linux-gnu \
> +         libc6-dev-riscv64-cross \
> +         libffi-dev:riscv64 \
> +         libglib2.0-dev:riscv64 \
> +         libpixman-1-dev:riscv64
> +
> +# Specify the cross prefix for this image (see tests/docker/common.rc)
> +ENV QEMU_CONFIGURE_OPTS --cross-prefix=riscv64-linux-gnu-
> +ENV DEF_TARGET_LIST riscv64-softmmu,riscv64-linux-user
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]