[PATCH 11/12] CI: Swap to debian for riscv64 build and test

Andrew Cooper posted 12 patches 2 months, 1 week ago
[PATCH 11/12] CI: Swap to debian for riscv64 build and test
Posted by Andrew Cooper 2 months, 1 week ago
The containers are both much smaller, with stable toolchains over time, and
this at least means we're not doing all testing with a single compiler.

Rename the jobs to follow to sort coherently ($DISTRO-$VERSION-$ARCH-*) and
reposition the jobs to optimise starting the smoke test.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Juergen Gross <jgross@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: Shawn Anastasio <sanastasio@raptorengineering.com>
---
 .../archlinux/current-riscv64.dockerfile      | 22 -----
 automation/gitlab-ci/build.yaml               | 83 +++++++++++--------
 automation/gitlab-ci/test.yaml                |  4 +-
 automation/scripts/containerize               |  3 +-
 4 files changed, 52 insertions(+), 60 deletions(-)
 delete mode 100644 automation/build/archlinux/current-riscv64.dockerfile

diff --git a/automation/build/archlinux/current-riscv64.dockerfile b/automation/build/archlinux/current-riscv64.dockerfile
deleted file mode 100644
index f7770bf82a78..000000000000
--- a/automation/build/archlinux/current-riscv64.dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/amd64 archlinux
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-# Packages needed for the build
-RUN pacman --noconfirm --needed -Syu \
-    base-devel \
-    git \
-    inetutils \
-    riscv64-linux-gnu-binutils \
-    riscv64-linux-gnu-gcc \
-    riscv64-linux-gnu-glibc \
-    # For test phase
-    qemu-system-riscv
-
-# Add compiler path
-ENV CROSS_COMPILE=riscv64-linux-gnu-
-
-RUN useradd --create-home user
-USER user
-WORKDIR /build
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index e081664c4e95..4b9d80cc5632 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -357,6 +357,13 @@ debian-12-ppc64le-gcc-debug:
     KBUILD_DEFCONFIG: ppc64_defconfig
     HYPERVISOR_ONLY: y
 
+debian-12-riscv64-gcc-debug:
+  extends: .gcc-riscv64-cross-build-debug
+  variables:
+    CONTAINER: debian:12-riscv64
+    KBUILD_DEFCONFIG: tiny64_defconfig
+    HYPERVISOR_ONLY: y
+
 # Arm32 cross-build
 
 debian-bookworm-gcc-arm32:
@@ -458,41 +465,6 @@ alpine-3.18-gcc-debug-arm64-earlyprintk:
       CONFIG_EARLY_UART_CHOICE_PL011=y
       CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000
 
-# RISC-V 64 cross-build
-.riscv-fixed-randconfig:
-  variables: &riscv-fixed-randconfig
-    EXTRA_FIXED_RANDCONFIG: |
-      CONFIG_BOOT_TIME_CPUPOOLS=n
-      CONFIG_COVERAGE=n
-      CONFIG_EXPERT=y
-      CONFIG_GRANT_TABLE=n
-      CONFIG_MEM_ACCESS=n
-      CONFIG_PERF_COUNTERS=n
-      CONFIG_LIVEPATCH=n
-      CONFIG_XSM=n
-
-archlinux-current-gcc-riscv64:
-  extends: .gcc-riscv64-cross-build
-  variables:
-    CONTAINER: archlinux:current-riscv64
-    KBUILD_DEFCONFIG: tiny64_defconfig
-    HYPERVISOR_ONLY: y
-
-archlinux-current-gcc-riscv64-debug:
-  extends: .gcc-riscv64-cross-build-debug
-  variables:
-    CONTAINER: archlinux:current-riscv64
-    KBUILD_DEFCONFIG: tiny64_defconfig
-    HYPERVISOR_ONLY: y
-
-archlinux-current-gcc-riscv64-randconfig:
-  extends: .gcc-riscv64-cross-build
-  variables:
-    CONTAINER: archlinux:current-riscv64
-    KBUILD_DEFCONFIG: tiny64_defconfig
-    RANDCONFIG: y
-    <<: *riscv-fixed-randconfig
-
 # Yocto test jobs
 yocto-qemuarm64:
   extends: .yocto-test-arm64
@@ -739,3 +711,44 @@ debian-12-ppc64le-gcc:
     KBUILD_DEFCONFIG: ppc64_defconfig
     HYPERVISOR_ONLY: y
 
+# RISC-V 64 cross-build
+debian-11-riscv64-gcc:
+  extends: .gcc-riscv64-cross-build
+  variables:
+    CONTAINER: debian:11-riscv64
+    KBUILD_DEFCONFIG: tiny64_defconfig
+    HYPERVISOR_ONLY: y
+
+debian-11-riscv64-gcc-debug:
+  extends: .gcc-riscv64-cross-build-debug
+  variables:
+    CONTAINER: debian:11-riscv64
+    KBUILD_DEFCONFIG: tiny64_defconfig
+    HYPERVISOR_ONLY: y
+
+debian-12-riscv64-gcc:
+  extends: .gcc-riscv64-cross-build
+  variables:
+    CONTAINER: debian:12-riscv64
+    KBUILD_DEFCONFIG: tiny64_defconfig
+    HYPERVISOR_ONLY: y
+
+.riscv-fixed-randconfig:
+  variables: &riscv-fixed-randconfig
+    EXTRA_FIXED_RANDCONFIG: |
+      CONFIG_BOOT_TIME_CPUPOOLS=n
+      CONFIG_COVERAGE=n
+      CONFIG_EXPERT=y
+      CONFIG_GRANT_TABLE=n
+      CONFIG_MEM_ACCESS=n
+      CONFIG_PERF_COUNTERS=n
+      CONFIG_LIVEPATCH=n
+      CONFIG_XSM=n
+
+debian-12-riscv64-gcc-randconfig:
+  extends: .gcc-riscv64-cross-build
+  variables:
+    CONTAINER: debian:12-riscv64
+    KBUILD_DEFCONFIG: tiny64_defconfig
+    RANDCONFIG: y
+    <<: *riscv-fixed-randconfig
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 70c946f87799..f7e1753ead34 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -56,7 +56,7 @@
 .qemu-riscv64:
   extends: .test-jobs-common
   variables:
-    CONTAINER: archlinux:current-riscv64
+    CONTAINER: debian:12
     LOGFILE: qemu-smoke-riscv64.log
   artifacts:
     paths:
@@ -440,7 +440,7 @@ qemu-smoke-riscv64-gcc:
   script:
     - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee ${LOGFILE}
   needs:
-    - archlinux-current-gcc-riscv64-debug
+    - debian-12-riscv64-gcc-debug
 
 qemu-smoke-ppc64le-powernv9-gcc:
   extends: .qemu-ppc64le
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index 5c3f6782d9cd..6dbf55c8f89a 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -27,12 +27,13 @@ case "_${CONTAINER}" in
     _alpine) CONTAINER="${BASE}/alpine:3.18" ;;
     _alpine-arm64v8) CONTAINER="${BASE}/alpine:3.18-arm64v8" ;;
     _archlinux|_arch) CONTAINER="${BASE}/archlinux:current" ;;
-    _riscv64) CONTAINER="${BASE}/archlinux:current-riscv64" ;;
     _centos7) CONTAINER="${BASE}/centos:7" ;;
     _fedora) CONTAINER="${BASE}/fedora:29";;
     _focal) CONTAINER="${BASE}/ubuntu:focal" ;;
     _bullseye-ppc64le) CONTAINER="${BASE}/debian:11-ppc64le" ;;
     _bookworm-ppc64le) CONTAINER="${BASE}/debian:12-ppc64le" ;;
+    _bullseye-riscv64) CONTAINER="${BASE}/debian:11-riscv64" ;;
+    _bookworm-riscv64) CONTAINER="${BASE}/debian:12-riscv64" ;;
     _buster-gcc-ibt) CONTAINER="${BASE}/debian:buster-gcc-ibt" ;;
     _bookworm|_) CONTAINER="${BASE}/debian:bookworm" ;;
     _bookworm-i386) CONTAINER="${BASE}/debian:bookworm-i386" ;;
-- 
2.39.2


Re: [PATCH 11/12] CI: Swap to debian for riscv64 build and test
Posted by Oleksii 2 months ago
On Thu, 2024-07-11 at 12:15 +0100, Andrew Cooper wrote:
> The containers are both much smaller, with stable toolchains over
> time, and
> this at least means we're not doing all testing with a single
> compiler.
> 
> Rename the jobs to follow to sort coherently ($DISTRO-$VERSION-$ARCH-
> *) and
> reposition the jobs to optimise starting the smoke test.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
LGTM: Oleksii Kurochko <oleksii.kurochko@gmail.com>

~ Oleksii

> ---
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Juergen Gross <jgross@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> CC: Shawn Anastasio <sanastasio@raptorengineering.com>
> ---
>  .../archlinux/current-riscv64.dockerfile      | 22 -----
>  automation/gitlab-ci/build.yaml               | 83 +++++++++++------
> --
>  automation/gitlab-ci/test.yaml                |  4 +-
>  automation/scripts/containerize               |  3 +-
>  4 files changed, 52 insertions(+), 60 deletions(-)
>  delete mode 100644 automation/build/archlinux/current-
> riscv64.dockerfile
> 
> diff --git a/automation/build/archlinux/current-riscv64.dockerfile
> b/automation/build/archlinux/current-riscv64.dockerfile
> deleted file mode 100644
> index f7770bf82a78..000000000000
> --- a/automation/build/archlinux/current-riscv64.dockerfile
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -# syntax=docker/dockerfile:1
> -FROM --platform=linux/amd64 archlinux
> -LABEL maintainer.name="The Xen Project" \
> -      maintainer.email="xen-devel@lists.xenproject.org"
> -
> -# Packages needed for the build
> -RUN pacman --noconfirm --needed -Syu \
> -    base-devel \
> -    git \
> -    inetutils \
> -    riscv64-linux-gnu-binutils \
> -    riscv64-linux-gnu-gcc \
> -    riscv64-linux-gnu-glibc \
> -    # For test phase
> -    qemu-system-riscv
> -
> -# Add compiler path
> -ENV CROSS_COMPILE=riscv64-linux-gnu-
> -
> -RUN useradd --create-home user
> -USER user
> -WORKDIR /build
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-
> ci/build.yaml
> index e081664c4e95..4b9d80cc5632 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -357,6 +357,13 @@ debian-12-ppc64le-gcc-debug:
>      KBUILD_DEFCONFIG: ppc64_defconfig
>      HYPERVISOR_ONLY: y
>  
> +debian-12-riscv64-gcc-debug:
> +  extends: .gcc-riscv64-cross-build-debug
> +  variables:
> +    CONTAINER: debian:12-riscv64
> +    KBUILD_DEFCONFIG: tiny64_defconfig
> +    HYPERVISOR_ONLY: y
> +
>  # Arm32 cross-build
>  
>  debian-bookworm-gcc-arm32:
> @@ -458,41 +465,6 @@ alpine-3.18-gcc-debug-arm64-earlyprintk:
>        CONFIG_EARLY_UART_CHOICE_PL011=y
>        CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000
>  
> -# RISC-V 64 cross-build
> -.riscv-fixed-randconfig:
> -  variables: &riscv-fixed-randconfig
> -    EXTRA_FIXED_RANDCONFIG: |
> -      CONFIG_BOOT_TIME_CPUPOOLS=n
> -      CONFIG_COVERAGE=n
> -      CONFIG_EXPERT=y
> -      CONFIG_GRANT_TABLE=n
> -      CONFIG_MEM_ACCESS=n
> -      CONFIG_PERF_COUNTERS=n
> -      CONFIG_LIVEPATCH=n
> -      CONFIG_XSM=n
> -
> -archlinux-current-gcc-riscv64:
> -  extends: .gcc-riscv64-cross-build
> -  variables:
> -    CONTAINER: archlinux:current-riscv64
> -    KBUILD_DEFCONFIG: tiny64_defconfig
> -    HYPERVISOR_ONLY: y
> -
> -archlinux-current-gcc-riscv64-debug:
> -  extends: .gcc-riscv64-cross-build-debug
> -  variables:
> -    CONTAINER: archlinux:current-riscv64
> -    KBUILD_DEFCONFIG: tiny64_defconfig
> -    HYPERVISOR_ONLY: y
> -
> -archlinux-current-gcc-riscv64-randconfig:
> -  extends: .gcc-riscv64-cross-build
> -  variables:
> -    CONTAINER: archlinux:current-riscv64
> -    KBUILD_DEFCONFIG: tiny64_defconfig
> -    RANDCONFIG: y
> -    <<: *riscv-fixed-randconfig
> -
>  # Yocto test jobs
>  yocto-qemuarm64:
>    extends: .yocto-test-arm64
> @@ -739,3 +711,44 @@ debian-12-ppc64le-gcc:
>      KBUILD_DEFCONFIG: ppc64_defconfig
>      HYPERVISOR_ONLY: y
>  
> +# RISC-V 64 cross-build
> +debian-11-riscv64-gcc:
> +  extends: .gcc-riscv64-cross-build
> +  variables:
> +    CONTAINER: debian:11-riscv64
> +    KBUILD_DEFCONFIG: tiny64_defconfig
> +    HYPERVISOR_ONLY: y
> +
> +debian-11-riscv64-gcc-debug:
> +  extends: .gcc-riscv64-cross-build-debug
> +  variables:
> +    CONTAINER: debian:11-riscv64
> +    KBUILD_DEFCONFIG: tiny64_defconfig
> +    HYPERVISOR_ONLY: y
> +
> +debian-12-riscv64-gcc:
> +  extends: .gcc-riscv64-cross-build
> +  variables:
> +    CONTAINER: debian:12-riscv64
> +    KBUILD_DEFCONFIG: tiny64_defconfig
> +    HYPERVISOR_ONLY: y
> +
> +.riscv-fixed-randconfig:
> +  variables: &riscv-fixed-randconfig
> +    EXTRA_FIXED_RANDCONFIG: |
> +      CONFIG_BOOT_TIME_CPUPOOLS=n
> +      CONFIG_COVERAGE=n
> +      CONFIG_EXPERT=y
> +      CONFIG_GRANT_TABLE=n
> +      CONFIG_MEM_ACCESS=n
> +      CONFIG_PERF_COUNTERS=n
> +      CONFIG_LIVEPATCH=n
> +      CONFIG_XSM=n
> +
> +debian-12-riscv64-gcc-randconfig:
> +  extends: .gcc-riscv64-cross-build
> +  variables:
> +    CONTAINER: debian:12-riscv64
> +    KBUILD_DEFCONFIG: tiny64_defconfig
> +    RANDCONFIG: y
> +    <<: *riscv-fixed-randconfig
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-
> ci/test.yaml
> index 70c946f87799..f7e1753ead34 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -56,7 +56,7 @@
>  .qemu-riscv64:
>    extends: .test-jobs-common
>    variables:
> -    CONTAINER: archlinux:current-riscv64
> +    CONTAINER: debian:12
>      LOGFILE: qemu-smoke-riscv64.log
>    artifacts:
>      paths:
> @@ -440,7 +440,7 @@ qemu-smoke-riscv64-gcc:
>    script:
>      - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee
> ${LOGFILE}
>    needs:
> -    - archlinux-current-gcc-riscv64-debug
> +    - debian-12-riscv64-gcc-debug
>  
>  qemu-smoke-ppc64le-powernv9-gcc:
>    extends: .qemu-ppc64le
> diff --git a/automation/scripts/containerize
> b/automation/scripts/containerize
> index 5c3f6782d9cd..6dbf55c8f89a 100755
> --- a/automation/scripts/containerize
> +++ b/automation/scripts/containerize
> @@ -27,12 +27,13 @@ case "_${CONTAINER}" in
>      _alpine) CONTAINER="${BASE}/alpine:3.18" ;;
>      _alpine-arm64v8) CONTAINER="${BASE}/alpine:3.18-arm64v8" ;;
>      _archlinux|_arch) CONTAINER="${BASE}/archlinux:current" ;;
> -    _riscv64) CONTAINER="${BASE}/archlinux:current-riscv64" ;;
>      _centos7) CONTAINER="${BASE}/centos:7" ;;
>      _fedora) CONTAINER="${BASE}/fedora:29";;
>      _focal) CONTAINER="${BASE}/ubuntu:focal" ;;
>      _bullseye-ppc64le) CONTAINER="${BASE}/debian:11-ppc64le" ;;
>      _bookworm-ppc64le) CONTAINER="${BASE}/debian:12-ppc64le" ;;
> +    _bullseye-riscv64) CONTAINER="${BASE}/debian:11-riscv64" ;;
> +    _bookworm-riscv64) CONTAINER="${BASE}/debian:12-riscv64" ;;
>      _buster-gcc-ibt) CONTAINER="${BASE}/debian:buster-gcc-ibt" ;;
>      _bookworm|_) CONTAINER="${BASE}/debian:bookworm" ;;
>      _bookworm-i386) CONTAINER="${BASE}/debian:bookworm-i386" ;;
Re: [PATCH 11/12] CI: Swap to debian for riscv64 build and test
Posted by Anthony PERARD 2 months, 1 week ago
On Thu, Jul 11, 2024 at 12:15:16PM +0100, Andrew Cooper wrote:
> The containers are both much smaller, with stable toolchains over time, and
> this at least means we're not doing all testing with a single compiler.
> 
> Rename the jobs to follow to sort coherently ($DISTRO-$VERSION-$ARCH-*) and
> reposition the jobs to optimise starting the smoke test.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech