diff mbox series

automation: add arm32 cross-build tests for Xen

Message ID 20210213013813.30114-1-sstabellini@kernel.org (mailing list archive)
State Superseded
Headers show
Series automation: add arm32 cross-build tests for Xen | expand

Commit Message

Stefano Stabellini Feb. 13, 2021, 1:38 a.m. UTC
Add a debian build container with cross-gcc for arm32 installed.
Add build jobs to cross-compile Xen-only for arm32.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
---
 .../debian/unstable-arm32-gcc.dockerfile      | 24 +++++++++
 automation/gitlab-ci/build.yaml               | 50 +++++++++++++++++++
 automation/scripts/build                      |  9 ++++
 3 files changed, 83 insertions(+)
 create mode 100644 automation/build/debian/unstable-arm32-gcc.dockerfile

Comments

Wei Liu March 12, 2021, 4:07 p.m. UTC | #1
On Fri, Feb 12, 2021 at 05:38:13PM -0800, Stefano Stabellini wrote:
> Add a debian build container with cross-gcc for arm32 installed.
> Add build jobs to cross-compile Xen-only for arm32.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>

Acked-by: Wei Liu <wl@xen.org>

Cc Ian.

The risk is small: Gitlab CI doesn't gate pushes to Xen, but it is
rather beneficial to have arm32 builds for Xen.

> ---
>  .../debian/unstable-arm32-gcc.dockerfile      | 24 +++++++++
>  automation/gitlab-ci/build.yaml               | 50 +++++++++++++++++++
>  automation/scripts/build                      |  9 ++++
>  3 files changed, 83 insertions(+)
>  create mode 100644 automation/build/debian/unstable-arm32-gcc.dockerfile
> 
> diff --git a/automation/build/debian/unstable-arm32-gcc.dockerfile b/automation/build/debian/unstable-arm32-gcc.dockerfile
> new file mode 100644
> index 0000000000..b41a57f197
> --- /dev/null
> +++ b/automation/build/debian/unstable-arm32-gcc.dockerfile
> @@ -0,0 +1,24 @@
> +FROM debian:unstable
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> +
> +ENV DEBIAN_FRONTEND=noninteractive
> +ENV USER root
> +ENV CROSS_COMPILE /usr/bin/arm-linux-gnueabihf-
> +
> +RUN mkdir /build
> +WORKDIR /build
> +
> +# build depends
> +RUN apt-get update && \
> +    apt-get --quiet --yes install \
> +        build-essential \
> +        flex \
> +        bison \
> +        git \
> +        gcc-arm-linux-gnueabihf \
> +        && \
> +        apt-get autoremove -y && \
> +        apt-get clean && \
> +        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
> +
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index d00b8a5123..22114662f2 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -117,6 +117,33 @@
>    variables:
>      <<: *clang
>  
> +.arm32-cross-build-tmpl:
> +  <<: *build
> +  variables:
> +    XEN_TARGET_ARCH: arm32
> +  tags:
> +    - x86_64
> +
> +.arm32-cross-build:
> +  extends: .arm32-cross-build-tmpl
> +  variables:
> +    debug: n
> +
> +.arm32-cross-build-debug:
> +  extends: .arm32-cross-build-tmpl
> +  variables:
> +    debug: y
> +
> +.gcc-arm32-cross-build:
> +  extends: .arm32-cross-build
> +  variables:
> +    <<: *gcc
> +
> +.gcc-arm32-cross-build-debug:
> +  extends: .arm32-cross-build-debug
> +  variables:
> +    <<: *gcc
> +
>  .arm64-build-tmpl:
>    <<: *build
>    variables:
> @@ -454,6 +481,29 @@ alpine-3.12-clang-debug:
>      CONTAINER: alpine:3.12
>    allow_failure: true
>  
> +# Arm32 cross-build
> +
> +debian-unstable-gcc-arm32:
> +  extends: .gcc-arm32-cross-build
> +  variables:
> +    CONTAINER: debian:unstable-arm32-gcc
> +
> +debian-unstable-gcc-arm32-debug:
> +  extends: .gcc-arm32-cross-build-debug
> +  variables:
> +    CONTAINER: debian:unstable-arm32-gcc
> +
> +debian-unstable-gcc-arm32-randconfig:
> +  extends: .gcc-arm32-cross-build
> +  variables:
> +    CONTAINER: debian:unstable-arm32-gcc
> +    RANDCONFIG: y
> +
> +debian-unstable-gcc-arm32-debug-randconfig:
> +  extends: .gcc-arm32-cross-build-debug
> +  variables:
> +    CONTAINER: debian:unstable-arm32-gcc
> +    RANDCONFIG: y
>  
>  # Arm builds
>  
> diff --git a/automation/scripts/build b/automation/scripts/build
> index d8990c3bf4..e7d68f7a9d 100755
> --- a/automation/scripts/build
> +++ b/automation/scripts/build
> @@ -15,6 +15,15 @@ else
>      make -j$(nproc) -C xen defconfig
>  fi
>  
> +# arm32 only cross-compiles the hypervisor
> +if [[ "${XEN_TARGET_ARCH}" = "arm32" ]]; then
> +    make -j$(nproc) xen
> +    cp xen/.config xen-config
> +    mkdir binaries
> +    cp xen/xen binaries/xen
> +    exit 0
> +fi
> +
>  # build up our configure options
>  cfgargs=()
>  cfgargs+=("--enable-docs")
> -- 
> 2.17.1
>
Roger Pau Monne March 13, 2021, 8:44 a.m. UTC | #2
On Fri, Feb 12, 2021 at 05:38:13PM -0800, Stefano Stabellini wrote:
> diff --git a/automation/scripts/build b/automation/scripts/build
> index d8990c3bf4..e7d68f7a9d 100755
> --- a/automation/scripts/build
> +++ b/automation/scripts/build
> @@ -15,6 +15,15 @@ else
>      make -j$(nproc) -C xen defconfig
>  fi
>  
> +# arm32 only cross-compiles the hypervisor
> +if [[ "${XEN_TARGET_ARCH}" = "arm32" ]]; then
> +    make -j$(nproc) xen
> +    cp xen/.config xen-config
> +    mkdir binaries
> +    cp xen/xen binaries/xen
> +    exit 0
> +fi

You will have to rebase on top of 893103e286ac1c50 at which point you
have an option to do hypervisor only builds already (hypervisor_only).

Thanks, Roger.
diff mbox series

Patch

diff --git a/automation/build/debian/unstable-arm32-gcc.dockerfile b/automation/build/debian/unstable-arm32-gcc.dockerfile
new file mode 100644
index 0000000000..b41a57f197
--- /dev/null
+++ b/automation/build/debian/unstable-arm32-gcc.dockerfile
@@ -0,0 +1,24 @@ 
+FROM debian:unstable
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV USER root
+ENV CROSS_COMPILE /usr/bin/arm-linux-gnueabihf-
+
+RUN mkdir /build
+WORKDIR /build
+
+# build depends
+RUN apt-get update && \
+    apt-get --quiet --yes install \
+        build-essential \
+        flex \
+        bison \
+        git \
+        gcc-arm-linux-gnueabihf \
+        && \
+        apt-get autoremove -y && \
+        apt-get clean && \
+        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
+
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index d00b8a5123..22114662f2 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -117,6 +117,33 @@ 
   variables:
     <<: *clang
 
+.arm32-cross-build-tmpl:
+  <<: *build
+  variables:
+    XEN_TARGET_ARCH: arm32
+  tags:
+    - x86_64
+
+.arm32-cross-build:
+  extends: .arm32-cross-build-tmpl
+  variables:
+    debug: n
+
+.arm32-cross-build-debug:
+  extends: .arm32-cross-build-tmpl
+  variables:
+    debug: y
+
+.gcc-arm32-cross-build:
+  extends: .arm32-cross-build
+  variables:
+    <<: *gcc
+
+.gcc-arm32-cross-build-debug:
+  extends: .arm32-cross-build-debug
+  variables:
+    <<: *gcc
+
 .arm64-build-tmpl:
   <<: *build
   variables:
@@ -454,6 +481,29 @@  alpine-3.12-clang-debug:
     CONTAINER: alpine:3.12
   allow_failure: true
 
+# Arm32 cross-build
+
+debian-unstable-gcc-arm32:
+  extends: .gcc-arm32-cross-build
+  variables:
+    CONTAINER: debian:unstable-arm32-gcc
+
+debian-unstable-gcc-arm32-debug:
+  extends: .gcc-arm32-cross-build-debug
+  variables:
+    CONTAINER: debian:unstable-arm32-gcc
+
+debian-unstable-gcc-arm32-randconfig:
+  extends: .gcc-arm32-cross-build
+  variables:
+    CONTAINER: debian:unstable-arm32-gcc
+    RANDCONFIG: y
+
+debian-unstable-gcc-arm32-debug-randconfig:
+  extends: .gcc-arm32-cross-build-debug
+  variables:
+    CONTAINER: debian:unstable-arm32-gcc
+    RANDCONFIG: y
 
 # Arm builds
 
diff --git a/automation/scripts/build b/automation/scripts/build
index d8990c3bf4..e7d68f7a9d 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -15,6 +15,15 @@  else
     make -j$(nproc) -C xen defconfig
 fi
 
+# arm32 only cross-compiles the hypervisor
+if [[ "${XEN_TARGET_ARCH}" = "arm32" ]]; then
+    make -j$(nproc) xen
+    cp xen/.config xen-config
+    mkdir binaries
+    cp xen/xen binaries/xen
+    exit 0
+fi
+
 # build up our configure options
 cfgargs=()
 cfgargs+=("--enable-docs")