From b7929af35cdd925251070d888e044a749d972c43 Mon Sep 17 00:00:00 2001 From: David Guglielmi Date: Thu, 22 May 2025 21:34:57 +0200 Subject: [PATCH] sys-boot/grub-efi-image: add 0-r3 --- .../grub-efi-image/grub-efi-image-0-r3.ebuild | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 sys-boot/grub-efi-image/grub-efi-image-0-r3.ebuild diff --git a/sys-boot/grub-efi-image/grub-efi-image-0-r3.ebuild b/sys-boot/grub-efi-image/grub-efi-image-0-r3.ebuild new file mode 100644 index 0000000..7922449 --- /dev/null +++ b/sys-boot/grub-efi-image/grub-efi-image-0-r3.ebuild @@ -0,0 +1,91 @@ +# Copyright 2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit mount-boot + +DESCRIPTION="Make GRUB EFI boot image" +HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage" + +S="${WORKDIR}" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="-* ~amd64 ~x86" + +IUSE="+grub_platforms_efi-64 grub_platforms_efi-32 fontsize-24 fontsize-32" + +DEPEND=" + sys-boot/grub:2=[fonts] +" +RDEPEND="${DEPEND}" +BDEPEND=" + sys-apps/util-linux + media-fonts/dejavu +" + +EFI_VENDOR="gentoo" +GRUB_FONT_SIZE="16" + +src_prepare() { + # grub-probe --target=fs_uuid doesn't work here + BOOT_DEV="$(grub-probe --target=device /boot)" + BOOT_PART_UUID="$(lsblk -o UUID -n ${BOOT_DEV})" + GRUB_VERSION="$(best_version sys-boot/grub:2)" + + [[ -z $BOOT_PART_UUID ]] && die "Can't find /boot partition UUID" + sed -e 's#@GENTOO_GRUB_VERSION@#'${GRUB_VERSION/*\/grub-/}'#g' \ + "${FILESDIR}"/sbat.csv.in > sbat.csv || die + + mkdir -p "${WORKDIR}/memdisk/fonts" || die + sed -e 's#@BOOT_PART_UUID@#'${BOOT_PART_UUID}'#g' \ + "${FILESDIR}/grub-memdisk.cfg.in" > memdisk/grub.cfg || die + + cp "${FILESDIR}"/grub-bootstrap.cfg "${WORKDIR}"/ + + eapply_user +} + +src_compile() { + local plateform + local efi_name + + if use grub_platforms_efi-64; then + platform="x86_64-efi" + efi_name="x64" + elif use grub_platforms_efi-32; then + platform="i386-efi" + efi_name="x32" + else + die "Unsupported platform" + fi + + if use fontsize-24; then + GRUB_FONT_SIZE="24" + elif use fontsize-32; then + GRUB_FONT_SIZE="32" + fi + + grub-mkfont \ + -s "${GRUB_FONT_SIZE}" \ + -o "${WORKDIR}"/memdisk/fonts/unicode.pf2 \ + /usr/share/fonts/dejavu/DejaVuSansMono.ttf + + tar -cf "${WORKDIR}"/memdisk.tar -C "${WORKDIR}"/memdisk . + + grub-mkimage \ + -O "${platform}" \ + -o "${WORKDIR}"/grub${efi_name}.efi \ + -c "${WORKDIR}"/grub-bootstrap.cfg \ + -d "/usr/lib/grub/${platform}" \ + -m "${WORKDIR}"/memdisk.tar \ + -p "/EFI/gentoo" \ + --sbat "${WORKDIR}"/sbat.csv \ + $(cat "${FILESDIR}"/grub-efi-modules) +} + +src_install() { + insinto /usr/lib/"${PN}" + doins grub*.efi +}