All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yao Zi <me@ziyao.cc>
To: Heinrich Schuchardt <xypron.glpk@gmx.de>, Yao Zi <me@ziyao.cc>
Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Tom Rini <trini@konsulko.com>,
	u-boot@lists.u-boot-project.org
Subject: Re: [PATCH v2 2/2] CI: Dockerfile: Add LoongArch64 support
Date: Fri, 31 Jul 2026 14:36:51 +0000	[thread overview]
Message-ID: <amyy2Lyg2Xypz__p@pie> (raw)
In-Reply-To: <23f5f012-589c-4710-8b93-4c6bd509e4c4@gmx.de>

Adding the list to Cc so at least this discussion could be archived...

On Fri, Jul 31, 2026 at 04:16:38PM +0200, Heinrich Schuchardt wrote:
> On 7/31/26 13:47, Yao Zi wrote:
> > From: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > 
> > Install LoongArch64 toolchains, build LoongArch64 QEMU,
> > build LoongArch64 GRUB.
> > 
> > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > Signed-off-by: Yao Zi <me@ziyao.cc>
> > ---
> >   tools/docker/Dockerfile | 21 ++++++++++++++++++---
> >   1 file changed, 18 insertions(+), 3 deletions(-)
> > 
> > diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
> > index fb8e2c523aad..187320c26d59 100644
> > --- a/tools/docker/Dockerfile
> > +++ b/tools/docker/Dockerfile
> > @@ -17,7 +17,7 @@ ARG BUILDPLATFORM
> >   ENV DEBIAN_FRONTEND=noninteractive
> >   # Set architectures to build for (leaving out ARM which is an exception)
> > -ENV ARCHS="aarch64 arc i386 m68k mips microblaze nios2 powerpc riscv64 riscv32 sh2 x86_64"
> > +ENV ARCHS="aarch64 arc i386 loongarch64 m68k mips microblaze nios2 powerpc riscv64 riscv32 sh2 x86_64"
> >   # Mirror containing the toolchains
> >   ENV MIRROR=https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin
> > @@ -153,7 +153,8 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
> >   	xxd \
> >   	zip
> > -# Build GRUB UEFI targets for ARM & RISC-V, 32-bit and 64-bit
> > +# Build GRUB UEFI targets for ARM & RISC-V, 32-bit and 64-bit, and LoongArch
> > +# 64-bit
> >   RUN git clone https://https.git.savannah.gnu.org/git/grub.git /tmp/grub && \
> >   	cd /tmp/grub && \
> >   	git checkout grub-2.14 && \
> > @@ -189,6 +190,20 @@ RUN git clone https://https.git.savannah.gnu.org/git/grub.git /tmp/grub && \
> >   	search search_fs_file search_fs_uuid search_label serial sleep test \
> >   	true && \
> >   	make clean && \
> > +	./configure --target=loongarch64 --with-platform=efi \
> > +	CC=gcc \
> > +	TARGET_CC=/opt/gcc-${TCVER}-nolibc/loongarch64-linux/bin/loongarch64-linux-gcc \
> > +	TARGET_OBJCOPY=/opt/gcc-${TCVER}-nolibc/loongarch64-linux/bin/loongarch64-linux-objcopy \
> > +	TARGET_STRIP=/opt/gcc-${TCVER}-nolibc/loongarch64-linux/bin/loongarch64-linux-strip \
> > +	TARGET_NM=/opt/gcc-${TCVER}-nolibc/loongarch64-linux/bin/loongarch64-linux-nm \
> > +	TARGET_RANLIB=/opt/gcc-${TCVER}-nolibc/loongarch64-linux/bin/loongarch64-linux-ranlib && \
> > +	make -j$(nproc) && \
> > +	./grub-mkimage -O loongarch64-efi -o /opt/grub/grubloongarch64.efi --prefix= -d \
> > +	grub-core cat chain configfile echo efinet ext2 fat halt help linux \
> > +	lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot \
> > +	search search_fs_file search_fs_uuid search_label serial sleep test \
> > +	true && \
> > +	make clean && \
> 
> We repeat ourselves a lot in the Dockerfile for building grub.
> 
> How about:
> 
> for arch in aarch64, i386, loongarch64, riscv64, x86_64; do
> 	./configure --target=$arch --with-platform=efi \
> 	CC=gcc \
> 	TARGET_CC=/opt/gcc-${TCVER}-nolibc/$arch-linux/bin/loongarch64-linux-gcc \
> 	TARGET_OBJCOPY=/opt/gcc-${TCVER}-nolibc/$arch-linux/bin/loongarch64-linux-objcopy \
> 	TARGET_STRIP=/opt/gcc-${TCVER}-nolibc/$arch-linux/bin/loongarch64-linux-strip \
> 	TARGET_NM=/opt/gcc-${TCVER}-nolibc/$arch-linux/bin/loongarch64-linux-nm \
> 	TARGET_RANLIB=/opt/gcc-${TCVER}-nolibc/$arch-linux/bin/loongarch64-linux-ranlib && \
> 	make -j$(nproc) && \
> 	./grub-mkimage -O $arch -o /opt/grub/grubloongarch64.efi --prefix= -d \
> 	grub-core cat chain configfile echo efinet ext2 fat halt help linux \
> 	lsefi lsefimmap lsefisystab loadenv lvm minicmd normal part_msdos part_gpt
> reboot \
> 	search search_fs_file search_fs_uuid search_label serial sleep test tftp \
> 	true && \
> done
> 
> Adding a few more modules to each architecture does not harm.

This is a good idea, but some of grub file names don't match the arch name
in the triple,

- i386: grub_x86.efi
- x86_64: grub_x64.efi
- arm: grubarm.efi
- aarch64: grubaa64.efi
- riscv64: grubriscv64.efi
- loongarch64: grubloongarch64.efi

so we need a mapping between them, maybe a bash array. Or, these names
seem to be refered only in u-boot-test-hooks as
env__efi_loader_grub_file, so I think alternatively we could update the
repository to use file names consistent with the tripple.

I'd prefer the latter since it looks cleaner, though the change might be
a little complex to fit in this series (involving updating workflow and
u-boot-test-hooks in a correct order so no CI run gets broken).

Best regards,
Yao Zi

> Best regards
> 
> Heinrich
> 
> >   	grub_cv_cc_mcmodel=no ./configure --target=riscv64 --with-platform=efi \
> >   	CC=gcc \
> >   	TARGET_CC=/opt/gcc-${TCVER}-nolibc/riscv64-linux/bin/riscv64-linux-gcc \
> > @@ -232,7 +247,7 @@ RUN git clone https://gitlab.com/qemu-project/qemu.git /tmp/qemu && \
> >   	# config user.name and user.email to make 'git am' happy
> >   	git config user.name u-boot && \
> >   	git config user.email u-boot@denx.de && \
> > -	./configure --prefix=/opt/qemu --target-list="aarch64-softmmu,arm-softmmu,i386-softmmu,m68k-softmmu,mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu,ppc-softmmu,riscv32-softmmu,riscv64-softmmu,sh4-softmmu,x86_64-softmmu,xtensa-softmmu" && \
> > +	./configure --prefix=/opt/qemu --target-list="aarch64-softmmu,arm-softmmu,i386-softmmu,loongarch64-softmmu,m68k-softmmu,mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu,ppc-softmmu,riscv32-softmmu,riscv64-softmmu,sh4-softmmu,x86_64-softmmu,xtensa-softmmu" && \
> >   	make -j$(nproc) all install && \
> >   	rm -rf /tmp/qemu
> 

       reply	other threads:[~2026-07-31 14:37 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260731114720.2212170-1-me@ziyao.cc>
     [not found] ` <20260731114720.2212170-3-me@ziyao.cc>
     [not found]   ` <23f5f012-589c-4710-8b93-4c6bd509e4c4@gmx.de>
2026-07-31 14:36     ` Yao Zi [this message]
2026-07-31 14:53       ` [PATCH v2 2/2] CI: Dockerfile: Add LoongArch64 support Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=amyy2Lyg2Xypz__p@pie \
    --to=me@ziyao.cc \
    --cc=jiaxun.yang@flygoat.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.u-boot-project.org \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.