使用 eapply 打补丁
在 ebuild 中应用补丁的规范方法是使用包管理器命令 eapply,可以通过显式调用它,也可以通过分配默认 src_prepare 实现支持的 PATCHES 变量。
重要说明:强烈建议将补丁应用于来自上游 tarball 的源代码,而不是分发您自己的修改后的 tarball。
命令 eapply 接受一个或多个正则文件或目录路径作为其参数。 这些参数可以选择在前面加上 GNU patch 选项。
注意:分隔符 
-- 表示选项的结束。 如果文件名以连字符开头,这将很有用。- 如果参数是正则文件,则它将在工作目录中应用,方法是调用 GNU patch,补丁级别为-p1。 指定显式-pN选项将覆盖默认补丁级别。
- 对于目录,eapply应用目录中所有以.diff或.patch结尾的文件,按照其名称的 POSIX 排序顺序。 该目录中的任何其他文件都将被忽略。 同样,-pN可用于覆盖默认-p1补丁级别。 请注意,eapply不会递归进入子目录。
eapply 是在 EAPI 6 中添加的。 它与之前可用的 epatch 有几个不同之处
- 
    eapply不会为您解压缩补丁。
- 补丁级别不再自动检测。 必须手动指定除 -p1之外的其他补丁级别。
- 在指定目录时,必须至少存在一个以 .diff或.patch结尾的文件,否则命令将失败。
基本 eapply
在最简单的形式中,eapply 接受一个文件名并应用该补丁。 如果应用失败,它将自动 die。 以下内容摘自 sys-libs/gpm
	eapply "${FILESDIR}"/${P}-musl.patch
在以下摘自 www-client/firefox 的简化示例中,补丁集被添加到 SRC_URI 中以便获取和解压缩它。 然后,eapply 被调用,并带有一个目录参数。 它将应用在该目录中找到的所有补丁
SRC_URI+="https://dev.gentoo.org/~larry/patchsets/${P}-patches-01.tar.xz"
src_prepare() {
	eapply "${WORKDIR}/firefox-patches"
	eapply_user
}
补丁 一章提供了一些关于补丁应该托管在哪里以及它们的格式的指南。
默认的 src_prepare 函数将查找全局 PATCHES 数组,以为您应用补丁列表。
PATCHES=(
	# Fix install location
	"${FILESDIR}/${P}-destdir.patch"
	# Respect MAKEOPTS #876543
	"${FILESDIR}/${P}-parallel_build.patch"
)