108 lines
2.7 KiB
Bash
108 lines
2.7 KiB
Bash
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI=5
|
|
|
|
inherit eutils
|
|
|
|
DESCRIPTION="The rEFInd UEFI Boot Manager by Rod Smith"
|
|
HOMEPAGE="http://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} doc"
|
|
|
|
DEPEND=">=sys-boot/gnu-efi-3.0.2"
|
|
|
|
DOCS="NEWS.txt README.txt docs/refind docs/Styles"
|
|
|
|
pkg_setup() {
|
|
if use x86 ; then
|
|
export EFIARCH=ia32
|
|
export BUILDARCH=ia32
|
|
elif use amd64; then
|
|
export EFIARCH=x64
|
|
export BUILDARCH=x86_64
|
|
else
|
|
# Try to support anyway
|
|
export BUILDARCH=$( uname -m | sed s,i[3456789]86,ia32, )
|
|
if [[ ${BUILDARCH} == "x86_64" ]] ; then
|
|
export EFIARCH=x64
|
|
else
|
|
export EFIARCH=${ARCH}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
src_prepare() {
|
|
# Make refind-install "symlink-proof"
|
|
epatch "${FILESDIR}/${PV}-refind-install-symlink.patch"
|
|
}
|
|
|
|
src_compile() {
|
|
# Make main EFI
|
|
all_target=gnuefi
|
|
emake ARCH=${BUILDARCH} ${all_target}
|
|
|
|
# Make filesystem drivers
|
|
export gnuefi_target="_gnuefi"
|
|
for fs in ${FS_USE}; do
|
|
fs=${fs#+}
|
|
if use "${fs}"; then
|
|
einfo "Building ${fs} filesystem driver"
|
|
rm -f "${S}/filesystems/fsw_efi.o"
|
|
emake -C "${S}/filesystems" ARCH=${BUILDARCH} ${fs}${gnuefi_target}
|
|
fi
|
|
done
|
|
}
|
|
|
|
src_install() {
|
|
exeinto "/usr/share/${P}"
|
|
doexe refind-install
|
|
dosym "/usr/share/${P}/refind-install" "/usr/sbin/refind-install"
|
|
|
|
dodoc "${S}"/{COPYING.txt,LICENSE.txt,CREDITS.txt}
|
|
if use doc; then
|
|
doman "${S}/docs/man/"*
|
|
dodoc -r ${DOCS}
|
|
fi
|
|
|
|
insinto "/usr/share/${P}/refind"
|
|
doins "${S}/refind/refind_${EFIARCH}.efi"
|
|
doins -r "${S}/drivers_${EFIARCH}"
|
|
doins "${S}/refind.conf-sample"
|
|
doins -r images icons fonts banners
|
|
|
|
insinto "/usr/share/${P}/refind/tools_${EFIARCH}"
|
|
doins "${S}/gptsync/gptsync_${EFIARCH}.efi"
|
|
|
|
insinto "/etc/refind.d"
|
|
doins -r "${S}/keys"
|
|
|
|
dosbin "${S}/mkrlconf"
|
|
dosbin "${S}/mvrefind"
|
|
}
|
|
|
|
pkg_postinst() {
|
|
elog "rEFInd has been built and installed into /usr/share/${P}"
|
|
elog "You will need to use the command 'refind-install' to install"
|
|
elog "the binaries into your EFI System Partition"
|
|
if [[ -z "${REPLACING_VERSIONS}" ]]; then
|
|
elog ""
|
|
elog "refind-install requires additional packages to be fully functional:"
|
|
elog " app-crypt/sbsigntool for binary signing for use with SecureBoot"
|
|
elog " sys-boot/efibootmgr for writing to NVRAM"
|
|
elog " sys-block/parted for automatic ESP location and mount"
|
|
elog ""
|
|
elog "A sample configuration can be found at"
|
|
elog "/usr/share/${P}/refind/refind.conf-sample"
|
|
else
|
|
ewarn "Note that this will not update any EFI binaries on your EFI"
|
|
ewarn "System Partition - this needs to be done manually."
|
|
fi
|
|
}
|