summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Szuba <marecki@gentoo.org>2020-07-30 22:54:20 +0200
committerMarek Szuba <marecki@gentoo.org>2020-07-30 23:11:48 +0200
commita940ef1ee145a02b22243b17eb02f79f6eaa484c (patch)
treedfe5cda656c0aaffebd2693759bc0e3ff59483fb /sys-boot
parentapp-dicts/sword-Wycliffe: bump to 2.3 (diff)
downloadgentoo-a940ef1ee145a02b22243b17eb02f79f6eaa484c.tar.gz
gentoo-a940ef1ee145a02b22243b17eb02f79f6eaa484c.tar.bz2
gentoo-a940ef1ee145a02b22243b17eb02f79f6eaa484c.zip
sys-boot/refind: remove dependency on sys-boot/udk
UDK is py2-only and will likely be removed from Gentoo soon. In fact, it already got temporarily last-rited earlier on this week - and rEFInd along with it. Given we have been forcing USE=gnuefi for sys-boot/refind for years anyway, just make the gnu-efi dependency mandatory. Note that the use.force entry for USE=gnuefi is still there due to the fact most rEFInd versions in the tree still honour that flag, plus I want to make this change as minimally intrusive as possible. With apologies to the current maintainer should they get upset about this change having been made without them having okayed it, it's about making sure sys-boot/refind does not get last-rited again. Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'sys-boot')
-rw-r--r--sys-boot/refind/refind-0.12.0-r1.ebuild142
1 files changed, 142 insertions, 0 deletions
diff --git a/sys-boot/refind/refind-0.12.0-r1.ebuild b/sys-boot/refind/refind-0.12.0-r1.ebuild
new file mode 100644
index 000000000000..b595a111e7e0
--- /dev/null
+++ b/sys-boot/refind/refind-0.12.0-r1.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit multiprocessing toolchain-funcs
+
+DESCRIPTION="The UEFI Boot Manager by Rod Smith"
+HOMEPAGE="https://www.rodsbooks.com/refind/"
+SRC_URI="mirror://sourceforge/project/${PN}/${PV}/${PN}-src-${PV}.tar.gz"
+
+LICENSE="BSD GPL-2 GPL-3 FDL-1.3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+FS_USE="btrfs +ext2 +ext4 hfs +iso9660 ntfs reiserfs"
+IUSE="${FS_USE} custom-cflags doc"
+
+DEPEND=">=sys-boot/gnu-efi-3.0.2"
+
+DOCS=(README.txt)
+PATCHES=("${FILESDIR}/makefile.patch")
+
+pkg_pretend() {
+ if use custom-cflags; then
+ ewarn
+ ewarn "You have enabled building with USE=custom-cflags. Be aware that"
+ ewarn "using this can result in EFI binaries that fail to run and may"
+ ewarn "fail to build at all. This is strongly advised against by upstream."
+ ewarn
+ ewarn "See https://bugs.gentoo.org/598587#c3 for more information"
+ ewarn
+ fi
+}
+
+pkg_setup() {
+ if use x86; then
+ export EFIARCH=ia32
+ export BUILDARCH=ia32
+ elif use amd64; then
+ export EFIARCH=x64
+ export BUILDARCH=x86_64
+ fi
+}
+
+src_prepare() {
+ default
+
+ # bug 598647 - PIE not supported
+ sed -e '/^CFLAGS/s:$: -fno-PIE:' -i Make.common || die
+}
+
+src_compile() {
+ # Update fs targets depending on uses
+ local fs fs_names=()
+ for fs in ${FS_USE}; do
+ fs=${fs#+}
+ if use "${fs}"; then
+ fs_names+=(${fs})
+ fi
+ done
+ fs_names=("${fs_names[@]/%/_gnuefi}")
+
+ # Prepare flags
+ local make_flags=(
+ ARCH="${BUILDARCH}"
+ CC="$(tc-getCC)"
+ AS="$(tc-getAS)"
+ LD="$(tc-getLD)"
+ AR="$(tc-getAR)"
+ RANLIB="$(tc-getRANLIB)"
+ OBJCOPY="$(tc-getOBJCOPY)"
+ GNUEFILIB="/usr/$(get_libdir)"
+ EFILIB="/usr/$(get_libdir)"
+ EFICRT0="/usr/$(get_libdir)"
+ EDK2BASE="${UDK_WORKSPACE}"
+ EDK2_DRIVER_BASENAMES="${fs_names[@]}"
+ FILESYSTEMS="${fs_names[@]}"
+ FILESYSTEMS_GNUEFI="${fs_names[@]}"
+ )
+ if use custom-cflags; then
+ make_flags=(CFLAGS="${CFLAGS}" "${make_flags[@]}")
+ fi
+
+ emake "${make_flags[@]}" all_gnuefi
+}
+
+src_install() {
+ exeinto "/usr/lib/${PN}"
+ doexe refind-install
+ dosym "../lib/${PN}/refind-install" "/usr/sbin/refind-install"
+
+ if use doc; then
+ doman "docs/man/"*
+ DOCS+=(NEWS.txt docs/refind docs/Styles)
+ fi
+ einstalldocs
+
+ insinto "/usr/lib/${PN}/refind"
+ doins "refind/refind_${EFIARCH}.efi"
+ doins "refind.conf-sample"
+ doins -r images icons fonts banners
+
+ if [[ -d "drivers_${EFIARCH}" ]]; then
+ doins -r "drivers_${EFIARCH}"
+ fi
+
+ insinto "/usr/lib/${PN}/refind/tools_${EFIARCH}"
+ doins "gptsync/gptsync_${EFIARCH}.efi"
+
+ insinto "/etc/refind.d"
+ doins -r "keys"
+
+ dosbin "mkrlconf"
+ dosbin "mvrefind"
+ dosbin "refind-mkdefault"
+}
+
+pkg_postinst() {
+ elog "rEFInd has been built and installed into ${EROOT}/usr/lib/${PN}"
+ elog "You will need to use the command 'refind-install' to install"
+ elog "the binaries into your EFI System Partition"
+ elog ""
+ elog "refind-install requires additional packages to be fully functional:"
+ elog " app-crypt/sbsigntools for binary signing for use with SecureBoot"
+ elog " sys-boot/efibootmgr for writing to NVRAM"
+ elog " sys-apps/gptfdisk for ESP management"
+ elog ""
+ elog "refind-mkdefault requires >=dev-lang/python-3"
+ elog ""
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ elog "A sample configuration can be found at"
+ elog "${EROOT}/usr/lib/${PN}/refind/refind.conf-sample"
+ else
+ if ver_test "${REPLACING_VERSIONS}" -lt "0.12.0"; then
+ ewarn "This new version uses sys-apps/gptfdisk instead of sys-block/parted"
+ ewarn "to manage ESP"
+ ewarn ""
+ fi
+ ewarn "Note that this installation will not update any EFI binaries"
+ ewarn "on your EFI System Partition - this needs to be done manually"
+ fi
+}