[PATCH 1/3] Dockerfile: Install riscv32 toolchain from kernel.org

This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com ---
Dockerfile | 1 + 1 file changed, 1 insertion(+)
diff --git a/Dockerfile b/Dockerfile index 32d43f7..dc9d6c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,7 @@ RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_ RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/7.3.0/x... | tar -C /opt -xJ RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/7.3.0/x... | tar -C /opt -xJ RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/7.3.0/x... | tar -C /opt -xJ +RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/7.3.0/x... | tar -C /opt -xJ RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/7.3.0/x... | tar -C /opt -xJ RUN wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/7.3.0/x... | tar -C /opt -xJ

Build GRUB UEFI target grubriscv32.efi.
Signed-off-by: Bin Meng bmeng.cn@gmail.com ---
Dockerfile | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile index dc9d6c9..a19067e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -96,7 +96,7 @@ RUN wget http://mirrors.kernel.org/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd # Manually install a new enough version of efitools (must be v1.5.2 or later) RUN wget http://mirrors.kernel.org/ubuntu/pool/universe/e/efitools/efitools_1.8.1-0ub... && sudo dpkg -i efitools_1.8.1-0ubuntu2_amd64.deb && rm efitools_1.8.1-0ubuntu2_amd64.deb
-# Build GRUB UEFI targets grubarm.efi and grubaa64.efi +# Build GRUB UEFI targets for ARM & RISC-V, 32-bit and 64-bit RUN git clone git://git.savannah.gnu.org/grub.git /tmp/grub && \ cd /tmp/grub && \ git checkout grub-2.04 && \ @@ -143,6 +143,20 @@ RUN git clone git://git.savannah.gnu.org/grub.git /tmp/grub && \ 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 && \ + ./configure --target=riscv32 --with-platform=efi \ + CC=gcc \ + TARGET_CC=/opt/gcc-7.3.0-nolibc/riscv32-linux/bin/riscv32-linux-gcc \ + TARGET_OBJCOPY=/opt/gcc-7.3.0-nolibc/riscv32-linux/bin/riscv32-linux-objcopy \ + TARGET_STRIP=/opt/gcc-7.3.0-nolibc/riscv32-linux/bin/riscv32-linux-strip \ + TARGET_NM=/opt/gcc-7.3.0-nolibc/riscv32-linux/bin/riscv32-linux-nm \ + TARGET_RANLIB=/opt/gcc-7.3.0-nolibc/riscv32-linux/bin/riscv32-linux-ranlib && \ + make && \ + ./grub-mkimage -O riscv32-efi -o /opt/grub/grubriscv32.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 && \ rm -rf /tmp/grub
RUN git clone git://git.qemu.org/qemu.git /tmp/qemu && \

On Thu, Mar 26, 2020 at 09:04:53AM -0700, Bin Meng wrote:
Build GRUB UEFI target grubriscv32.efi.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Applied to gitlab-ci-runner/master, thanks!

Build qemu-system-riscv32 executable for U-Boot testing.
Signed-off-by: Bin Meng bmeng.cn@gmail.com ---
Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile index a19067e..3a94eb4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -163,7 +163,7 @@ RUN git clone git://git.qemu.org/qemu.git /tmp/qemu && \ cd /tmp/qemu && \ git submodule update --init dtc && \ git checkout v4.2.0 && \ - ./configure --prefix=/opt/qemu --target-list="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu,ppc-softmmu,riscv64-softmmu,x86_64-softmmu,xtensa-softmmu" && \ + ./configure --prefix=/opt/qemu --target-list="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu,ppc-softmmu,riscv32-softmmu,riscv64-softmmu,x86_64-softmmu,xtensa-softmmu" && \ make -j$(nproc) all install && \ rm -rf /tmp/qemu

On Thu, Mar 26, 2020 at 09:04:54AM -0700, Bin Meng wrote:
Build qemu-system-riscv32 executable for U-Boot testing.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Applied to gitlab-ci-runner/master, thanks!

On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!

Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote:
On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Regards, Bin

On Fri, Mar 27, 2020 at 09:57:47AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote:
On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Is that something that upstream has fixed or will fix / can be fixed and we can bump the tag we're using for?

Hi Tom,
On Fri, Mar 27, 2020 at 10:00 AM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 09:57:47AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote:
On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Is that something that upstream has fixed or will fix / can be fixed and we can bump the tag we're using for?
I tried the latest upstream GRUB, and it still cannot be built using riscv64 toolchain from kernel.org.
Regards, Bin

On Fri, Mar 27, 2020 at 02:05:55PM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 10:00 AM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 09:57:47AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote:
On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Is that something that upstream has fixed or will fix / can be fixed and we can bump the tag we're using for?
I tried the latest upstream GRUB, and it still cannot be built using riscv64 toolchain from kernel.org.
Can that be fixed? Would that be accepted? Thanks!

Hi Tom,
On Fri, Mar 27, 2020 at 11:25 PM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 02:05:55PM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 10:00 AM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 09:57:47AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote:
On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Is that something that upstream has fixed or will fix / can be fixed and we can bump the tag we're using for?
I tried the latest upstream GRUB, and it still cannot be built using riscv64 toolchain from kernel.org.
Can that be fixed? Would that be accepted? Thanks!
I reported this issue to the grub mailing list. For now I believe we should stick to current 2.04 until upstream has a solution for it.
Regards, Bin

On Sat, Mar 28, 2020 at 07:55:37AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 11:25 PM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 02:05:55PM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 10:00 AM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 09:57:47AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote:
On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
> This is required to build GRUB UEFI target for RISC-V 32-bit. > > Signed-off-by: Bin Meng bmeng.cn@gmail.com
Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Is that something that upstream has fixed or will fix / can be fixed and we can bump the tag we're using for?
I tried the latest upstream GRUB, and it still cannot be built using riscv64 toolchain from kernel.org.
Can that be fixed? Would that be accepted? Thanks!
I reported this issue to the grub mailing list. For now I believe we should stick to current 2.04 until upstream has a solution for it.
Has upstream said anything here? Thanks!

On Tue, Mar 31, 2020 at 11:15 PM Tom Rini trini@konsulko.com wrote:
On Sat, Mar 28, 2020 at 07:55:37AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 11:25 PM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 02:05:55PM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 10:00 AM Tom Rini trini@konsulko.com wrote:
On Fri, Mar 27, 2020 at 09:57:47AM +0800, Bin Meng wrote:
Hi Tom,
On Fri, Mar 27, 2020 at 12:14 AM Tom Rini trini@konsulko.com wrote: > > On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote: > > > This is required to build GRUB UEFI target for RISC-V 32-bit. > > > > Signed-off-by: Bin Meng bmeng.cn@gmail.com > > Since we can use the 64bit toolchain for 32bit U-Boot, can we not pass > GRUB the right flags to use the same toolchain? Thanks!
The 32-bit GRUB won't build with the 64-bit toolchain as of the grub-2.04 branch we are using.
Is that something that upstream has fixed or will fix / can be fixed and we can bump the tag we're using for?
I tried the latest upstream GRUB, and it still cannot be built using riscv64 toolchain from kernel.org.
Can that be fixed? Would that be accepted? Thanks!
I reported this issue to the grub mailing list. For now I believe we should stick to current 2.04 until upstream has a solution for it.
Has upstream said anything here? Thanks!
There are some comments but no help. So far I think we should go with current solution and wait grub upstream for the solution.
Regards, Bin

On Thu, Mar 26, 2020 at 09:04:52AM -0700, Bin Meng wrote:
This is required to build GRUB UEFI target for RISC-V 32-bit.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Applied to gitlab-ci-runner/master, thanks!
participants (2)
-
Bin Meng
-
Tom Rini