Add a container for cross-compiling xen to riscv64.
This just includes the cross-compiler and necessary packages for
building xen itself (packages for tools, stubdoms, etc., can be
added later).
Signed-off-by: Connor Davis <connojdavis@gmail.com>
---
automation/build/archlinux/riscv64.dockerfile | 33 +++++++++++++++++++
automation/scripts/containerize | 1 +
2 files changed, 34 insertions(+)
create mode 100644 automation/build/archlinux/riscv64.dockerfile
diff --git a/automation/build/archlinux/riscv64.dockerfile b/automation/build/archlinux/riscv64.dockerfile
new file mode 100644
index 0000000000..505b623c01
--- /dev/null
+++ b/automation/build/archlinux/riscv64.dockerfile
@@ -0,0 +1,33 @@
+FROM 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 \
+ gcc \
+ git
+
+# Packages needed for QEMU
+RUN pacman --noconfirm --needed -Syu \
+ pixman \
+ python \
+ sh
+
+# There is a regression in GDB that causes an assertion error
+# when setting breakpoints, use this commit until it is fixed!
+RUN git clone --recursive -j$(nproc) --progress https://github.com/riscv/riscv-gnu-toolchain && \
+ cd riscv-gnu-toolchain/riscv-gdb && \
+ git checkout 1dd588507782591478882a891f64945af9e2b86c && \
+ cd .. && \
+ ./configure --prefix=/opt/riscv && \
+ make linux -j$(nproc) && \
+ rm -R /riscv-gnu-toolchain
+
+# Add compiler path
+ENV PATH=/opt/riscv/bin/:${PATH}
+ENV CROSS_COMPILE=riscv64-unknown-linux-gnu-
+
+RUN useradd --create-home user
+USER user
+WORKDIR /build
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index b7c81559fb..59edf0ba40 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -26,6 +26,7 @@ BASE="registry.gitlab.com/xen-project/xen"
case "_${CONTAINER}" in
_alpine) CONTAINER="${BASE}/alpine:3.12" ;;
_archlinux|_arch) CONTAINER="${BASE}/archlinux:current" ;;
+ _riscv64) CONTAINER="${BASE}/archlinux:riscv64" ;;
_centos7) CONTAINER="${BASE}/centos:7" ;;
_centos72) CONTAINER="${BASE}/centos:7.2" ;;
_fedora) CONTAINER="${BASE}/fedora:29";;
--
2.31.1
On 5/14/21 11:53 AM, Connor Davis wrote: > + > +# There is a regression in GDB that causes an assertion error > +# when setting breakpoints, use this commit until it is fixed! > +RUN git clone --recursive -j$(nproc) --progress https://github.com/riscv/riscv-gnu-toolchain && \ > + cd riscv-gnu-toolchain/riscv-gdb && \ > + git checkout 1dd588507782591478882a891f64945af9e2b86c && \ > + cd .. && \ > + ./configure --prefix=/opt/riscv && \ > + make linux -j$(nproc) && \ > + rm -R /riscv-gnu-toolchai What do you think about using the RISCV tool chain from the Arch repos now? I've also discovered that the sym table error avoided by the commit pin can be worked around by removing already loaded symbols with `file` (no args) prior to calling `file path/to/file` to load new ones. So if people did still want to use the container for development, they could still use the gdb installed by pacman (with the symbols caveat). -- Bobby Eshleman SE at Vates SAS
On 5/14/21 3:01 PM, Bob Eshleman wrote: > On 5/14/21 11:53 AM, Connor Davis wrote: >> + >> +# There is a regression in GDB that causes an assertion error >> +# when setting breakpoints, use this commit until it is fixed! >> +RUN git clone --recursive -j$(nproc) --progress https://github.com/riscv/riscv-gnu-toolchain && \ >> + cd riscv-gnu-toolchain/riscv-gdb && \ >> + git checkout 1dd588507782591478882a891f64945af9e2b86c && \ >> + cd .. && \ >> + ./configure --prefix=/opt/riscv && \ >> + make linux -j$(nproc) && \ >> + rm -R /riscv-gnu-toolchai > What do you think about using the RISCV tool chain from the Arch > repos now? That sounds much better, will update > > I've also discovered that the sym table error avoided by the commit > pin can be worked around by removing already loaded symbols with > `file` (no args) prior to calling `file path/to/file` to load new > ones. So if people did still want to use the container for > development, they could still use the gdb installed by pacman > (with the symbols caveat). > Thanks, Connor
© 2016 - 2026 Red Hat, Inc.