makepkg-optimize

来自 ArchWiki

makepkg-optimizeAUR 是一系列补充 tidybuildenvexecutable 脚本的集合,用于 pacman,它为 build()package() 阶段的几种优化提供了宏。

注意:Arch 用户仓库 中的任何软件包一样,makepkg-optimizeAUR 没有官方支持。您应该阅读其 AUR 页面,并且可以在其页面上发布评论

安装

安装 makepkg-optimizeAUR,并安装后端以使其可用于需要优化的功能:openmpupxoptipngsvgopolly

配置

makepkg-optimizeAUR 从您当前的 makepkg.conf(5) 配置生成一个冗余的配置文件 /etc/makepkg-optimize.conf

此文件列出了补充 编译标志构建环境 选项、全局软件包选项软件包输出 选项和 压缩默认值,所有这些默认情况下都是禁用的。

构建优化包

警告: 某些软件包可能无法通过某些优化构建,过度优化可能会导致某些程序出现问题——例如性能下降和段错误。

选择您偏好的优化之后,在构建时传递配置文件

$ makepkg -c --config /etc/makepkg-optimize.conf
提示:-cmakepkg 一起使用,以防止软件包重用过时的优化标志。请参阅 Makepkg#用法
注意: Profile-guided optimization 需要软件包构建和安装两次。第一阶段在 $PROFDEST/pkgbase.gen 中启动配置文件生成;第二阶段将它们移动到 $PROFDEST/pkgbase.used 并应用它们。

在干净的 chroot 环境中构建优化包

或者,makepkg-optimize 可以用于在 chroot 中构建优化的软件包。

Chroot 设置

设置 chroot 后,还需要一些额外的步骤。

安装 makepkg-optimize 和后端

首先,为优化宏安装一些后端到基本 chroot 中

$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly

然后下载构建 makepkg-optimizeAURsvgo

要将它们安装到基本 chroot 中,请将其软件包文件复制到其中并安装它们,例如

# cp svgo-1.2.2-2-any.pkg.tar.xz "$CHROOT"/root/root/
$ arch-nspawn "$CHROOT"/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz
警告: 这将使您的“干净” chroot 的保修失效!

使用 chroot

构建软件包

首先,编辑 $CHROOT/root/etc/makepkg-optimize.conf选择您偏好的优化

构建时,将配置文件传递给 makepkg

$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
使用 PGO 构建

BUILDENVpgo 选项启用配置文件的生成应用,具体取决于这是启用此标志的软件包的第一次构建还是第二次构建。干净的 chroot 构建使情况变得复杂,因为软件在 chroot 之外运行以生成配置文件,但稍后重新编译时需要从 chroot 内部应用配置文件。解决方案是用绑定挂载的文件夹桥接三个文件系统。

创建 PGO 缓存

创建并绑定一个文件夹来存储 配置文件

# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
提示: 使用 fstab 在启动时绑定这些文件夹。
#PGODEST
/full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0
/mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0 

注意: 完整输入 chroot pgo 目录的完整路径,不要使用任何 $VARIABLES

编辑 $CHROOT/root/etc/makepkg-optimize.conf 并设置 PROFDEST=/mnt/pgo

分析程序

构建,然后安装软件包并测试运行其可执行文件。

注意: 配置文件在程序 exit() 时生成。持久守护进程,例如 systemd,可能需要重启才能生成配置文件。

在充分利用该软件后,关闭它,然后重新构建并重新安装其软件包。