On Fri, Jul 31, 2026 at 02:36:51PM +0000, Yao Zi wrote: > 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 <[email protected]> > > > > > > Install LoongArch64 toolchains, build LoongArch64 QEMU, > > > build LoongArch64 GRUB. > > > > > > Signed-off-by: Jiaxun Yang <[email protected]> > > > Signed-off-by: Yao Zi <[email protected]> > > > --- > > > 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).
This sounds like a good cleanup to do, but yes, we should work it afterwards to keep this small and reviewable. -- Tom
signature.asc
Description: PGP signature
