From a02537ebe551a85e199322b7c098271f4dff4c3a Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Tue, 16 Apr 2019 21:06:02 +0100 Subject: [PATCH] Build coreos grub off of alpine:3.9 and separate build steps for caching Signed-off-by: Avi Deitcher --- src/cmd/linuxkit/moby/output.go | 6 ++-- tools/grub/Dockerfile | 32 +++++++++++-------- ...reat-R_X86_64_PLT32-as-R_X86_64_PC32.patch | 30 +++++++++++++++++ tools/mkimage-iso-efi/Dockerfile | 2 +- tools/mkimage-qcow2-efi/Dockerfile | 2 +- tools/mkimage-raw-efi/Dockerfile | 2 +- 6 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 tools/grub/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch diff --git a/src/cmd/linuxkit/moby/output.go b/src/cmd/linuxkit/moby/output.go index 1b3d65df1..45c65fadd 100644 --- a/src/cmd/linuxkit/moby/output.go +++ b/src/cmd/linuxkit/moby/output.go @@ -18,12 +18,12 @@ var ( outputImages = map[string]string{ "iso": "linuxkit/mkimage-iso:3d81e29b28ddf739becf10758eb6077b198d26d8", "iso-bios": "linuxkit/mkimage-iso-bios:131849cfc4f3ede87c2ca19b6e2a4ef86354d1ce", - "iso-efi": "linuxkit/mkimage-iso-efi:1fdcfa6ae73907eb41cbfe2db8eddcbfe11a6c66", + "iso-efi": "linuxkit/mkimage-iso-efi:667bd641fd37062eaf9d2173c768ebfcedad3876", "raw-bios": "linuxkit/mkimage-raw-bios:3d6a6d932e124a0430e36d232dd51af1deef53c3", - "raw-efi": "linuxkit/mkimage-raw-efi:623c9a4a3282d05eeb145c615638dfb1f9919e54", + "raw-efi": "linuxkit/mkimage-raw-efi:2d1a0e6e67c967bd4d5a859eb9044571f6844577", "squashfs": "linuxkit/mkimage-squashfs:c771872c292081a36333425c12e57393bd79f4e9", "gcp": "linuxkit/mkimage-gcp:e6cdcf859ab06134c0c37a64ed5f886ec8dae1a1", - "qcow2-efi": "linuxkit/mkimage-qcow2-efi:ec1f27cff4f84cef7ec4bf7e77c18c8a58b9a356", + "qcow2-efi": "linuxkit/mkimage-qcow2-efi:a69258f0ef3c484096617c2e5bc1b52113fb6b81", "vhd": "linuxkit/mkimage-vhd:3820219e5c350fe8ab2ec6a217272ae82f4b9242", "dynamic-vhd": "linuxkit/mkimage-dynamic-vhd:743ac9959fe6d3912ebd78b4fd490b117c53f1a6", "vmdk": "linuxkit/mkimage-vmdk:cee81a3ed9c44ae446ef7ebff8c42c1e77b3e1b5", diff --git a/tools/grub/Dockerfile b/tools/grub/Dockerfile index 2ca756870..59fd13f13 100644 --- a/tools/grub/Dockerfile +++ b/tools/grub/Dockerfile @@ -1,4 +1,4 @@ -FROM linuxkit/alpine:3683c9a66cd4da40bd7d6c7da599b2dcd738b559 AS grub-build +FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS grub-build RUN apk add \ automake \ make \ @@ -18,18 +18,24 @@ 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=d3fd939f18446b05d1d5456f23823498a1eb3fb4 - -RUN mkdir /grub-lib && \ - set -e && \ - git clone https://github.com/coreos/grub.git && \ - cd grub && \ - git checkout -b grub-build ${GRUB_COMMIT} && \ - ./autogen.sh && \ - ./configure --libdir=/grub-lib --with-platform=efi CFLAGS="-Os -Wno-unused-value" && \ - make -j "$(getconf _NPROCESSORS_ONLN)" && \ - make install && \ - case $(uname -m) in \ +ENV GRUB_COMMIT=2f868ac992be2ae3ab838951aa3e260c045f20f9 + +COPY patches/* /patches/ + +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 + +RUN ./autogen.sh +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} linuxefi; \ ;; \ diff --git a/tools/grub/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch b/tools/grub/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch new file mode 100644 index 000000000..669921312 --- /dev/null +++ b/tools/grub/patches/treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch @@ -0,0 +1,30 @@ +--- + 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/mkimage-iso-efi/Dockerfile b/tools/mkimage-iso-efi/Dockerfile index 05776de53..0a72af6bc 100644 --- a/tools/mkimage-iso-efi/Dockerfile +++ b/tools/mkimage-iso-efi/Dockerfile @@ -1,4 +1,4 @@ -FROM linuxkit/grub:a4ba33f2ef880947862eaaeceadb2a51bfebb688 AS grub +FROM linuxkit/grub:a0e2211d39c3c71613f902b3e29746badee3295e AS grub FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS mirror RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/ diff --git a/tools/mkimage-qcow2-efi/Dockerfile b/tools/mkimage-qcow2-efi/Dockerfile index 25369fc4b..15886248f 100644 --- a/tools/mkimage-qcow2-efi/Dockerfile +++ b/tools/mkimage-qcow2-efi/Dockerfile @@ -1,4 +1,4 @@ -FROM linuxkit/grub:a4ba33f2ef880947862eaaeceadb2a51bfebb688 AS grub +FROM linuxkit/grub:a0e2211d39c3c71613f902b3e29746badee3295e AS grub FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS mirror RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/ diff --git a/tools/mkimage-raw-efi/Dockerfile b/tools/mkimage-raw-efi/Dockerfile index a525fd58d..42e74a391 100644 --- a/tools/mkimage-raw-efi/Dockerfile +++ b/tools/mkimage-raw-efi/Dockerfile @@ -1,4 +1,4 @@ -FROM linuxkit/grub:a4ba33f2ef880947862eaaeceadb2a51bfebb688 AS grub +FROM linuxkit/grub:a0e2211d39c3c71613f902b3e29746badee3295e AS grub FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS mirror RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/