From 89ed0f50894488fb50c212467fb28937e30a140f Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Wed, 8 Jan 2025 19:39:48 +0200 Subject: [PATCH] remove grub-dev in favour of grub package Signed-off-by: Avi Deitcher --- tools/grub-dev/Dockerfile | 58 +++++-------------- tools/grub-dev/build.yml | 1 + ...reat-R_X86_64_PLT32-as-R_X86_64_PC32.patch | 30 ---------- tools/grub/Dockerfile | 7 ++- tools/grub/build.yml | 1 + 5 files changed, 21 insertions(+), 76 deletions(-) delete mode 100644 tools/grub-dev/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch diff --git a/tools/grub-dev/Dockerfile b/tools/grub-dev/Dockerfile index cf630283d..ee3f2e4c5 100644 --- a/tools/grub-dev/Dockerfile +++ b/tools/grub-dev/Dockerfile @@ -1,53 +1,25 @@ -# this is really hard to build. Do not change this version unless you must -FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS grub-build +FROM linuxkit/alpine:5ac048802293564a50414394e1b9896eac528e7d AS build +ENV GRUB_MODULES="part_gpt fat ext2 iso9660 gzio linux acpi normal cpio crypto disk boot crc64 \ +search_fs_uuid tftp xzio xfs video" RUN apk add \ - automake \ - make \ - bison \ - gettext \ - flex \ - gcc \ - git \ - libtool \ - libc-dev \ - linux-headers \ - python3 \ - autoconf - -# because python is not available -RUN ln -s python3 /usr/bin/python - -ENV GRUB_MODULES="part_gpt fat ext2 iso9660 gzio linux acpi normal cpio crypto disk boot crc64 gpt \ -search_disk_uuid tftp verify xzio xfs video" -ENV GRUB_COMMIT=2f868ac992be2ae3ab838951aa3e260c045f20f9 + grub \ + grub-efi -COPY patches/* /patches/ +FROM build as build-arm64 +RUN grub-mkimage -O arm64-efi -o /BOOTAA64.EFI -p /EFI/BOOT ${GRUB_MODULES} -WORKDIR /src -RUN git clone https://github.com/coreos/grub.git grub -WORKDIR /src/grub -RUN git checkout -b grub-build ${GRUB_COMMIT} -RUN for patch in /patches/*.patch; do \ - echo "Applying $patch"; \ - patch -p1 < "$patch"; \ - done +FROM build as build-amd64 +RUN grub-mkimage -O x86_64-efi -o /BOOTX64.EFI -p /EFI/BOOT ${GRUB_MODULES} -RUN ./autogen.sh +FROM build as build-riscv64 +RUN grub-mkimage -O riscv64-efi -o /BOOTRISCV64.EFI -p /EFI/BOOT ${GRUB_MODULES} -RUN ./configure --libdir=/grub-lib --with-platform=efi CFLAGS="-Os -Wno-unused-value" -RUN make -j "$(getconf _NPROCESSORS_ONLN)" -RUN make install -RUN case $(uname -m) in \ - x86_64) \ - ./grub-mkimage -O x86_64-efi -d /grub-lib/grub/x86_64-efi -o /grub-lib/BOOTX64.EFI -p /EFI/BOOT ${GRUB_MODULES}; \ - ;; \ - aarch64) \ - ./grub-mkimage -O arm64-efi -d /grub-lib/grub/arm64-efi -o /grub-lib/BOOTAA64.EFI -p /EFI/BOOT ${GRUB_MODULES}; \ - ;; \ - esac +FROM build-${TARGETARCH} AS collate +ARG TARGETARCH +COPY /*.EFI / FROM scratch ENTRYPOINT [] WORKDIR / -COPY --from=grub-build /grub-lib/*.EFI / +COPY --from=collate /*.EFI / diff --git a/tools/grub-dev/build.yml b/tools/grub-dev/build.yml index e3dbcb972..23d0e2f3a 100644 --- a/tools/grub-dev/build.yml +++ b/tools/grub-dev/build.yml @@ -3,3 +3,4 @@ network: true arches: - arm64 - amd64 + - riscv64 diff --git a/tools/grub-dev/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch b/tools/grub-dev/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch deleted file mode 100644 index 669921312..000000000 --- a/tools/grub-dev/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- - util/grub-module-verifier.c | 1 + - util/grub-mkimagexx.c | 1 + - 2 files changed, 2 insertion(+) - -diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c - ---- a/util/grub-mkimagexx.c -+++ b/util/grub-mkimagexx.c -@@ -832,6 +832,7 @@ - break; - - case R_X86_64_PC32: -+ case R_X86_64_PLT32: - { - grub_uint32_t *t32 = (grub_uint32_t *) target; - *t32 = grub_host_to_target64 (grub_target_to_host32 (*t32) - -diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c - ---- a/util/grub-module-verifier.c -+++ b/util/grub-module-verifier.c -@@ -19,6 +19,7 @@ - -1 - }, (int[]){ - R_X86_64_PC32, -+ R_X86_64_PLT32, - -1 - } - }, diff --git a/tools/grub/Dockerfile b/tools/grub/Dockerfile index 5b3728c20..8da192402 100644 --- a/tools/grub/Dockerfile +++ b/tools/grub/Dockerfile @@ -1,9 +1,10 @@ -# this is really hard to build. Do not change this version unless you must -FROM --platform=linux/amd64 linuxkit/grub-dev:854df7920df18567e23940a1f9cf573980dcfe9b AS grub-build-amd64 -FROM --platform=linux/arm64 linuxkit/grub-dev:854df7920df18567e23940a1f9cf573980dcfe9b AS grub-build-arm64 +FROM --platform=linux/amd64 linuxkit/grub-dev:a61d5ca6f0c0da0983e4e9c90dfa17c35e725817 AS grub-build-amd64 +FROM --platform=linux/arm64 linuxkit/grub-dev:a61d5ca6f0c0da0983e4e9c90dfa17c35e725817 AS grub-build-arm64 +FROM --platform=linux/riscv64 linuxkit/grub-dev:a61d5ca6f0c0da0983e4e9c90dfa17c35e725817 AS grub-build-riscv64 FROM scratch ENTRYPOINT [] WORKDIR / COPY --from=grub-build-amd64 /*.EFI / COPY --from=grub-build-arm64 /*.EFI / +COPY --from=grub-build-riscv64 /*.EFI / diff --git a/tools/grub/build.yml b/tools/grub/build.yml index 8e32e6a78..170742ffe 100644 --- a/tools/grub/build.yml +++ b/tools/grub/build.yml @@ -3,3 +3,4 @@ network: true arches: - arm64 - amd64 + - riscv64