openEuler 社区各位开发者,大家好:
目前我们在 openEuler OBS 构建优化过程中,发现一些优化项需要大家一起协作完成。
具体情况是这样的:
OBS 每次构建软件包会创建新的构建环境(build environment),在构建环境中 preinstall 一些必备软件包,然后 install 这些必备软件包及其依赖,以及 spec 中 BuildRequires 及其依赖。当前 preinstall 预安装一些多余软件包,部分软件包存在多余安装依赖,导致每次创建构建环境至少需要安装 300+ 个 rpm,占用空间 1.2GB,耗时 60+ 秒。需要对 Project Config 及软件包的依赖进行优化,减少构建过程安装的 rpm 数量,避免 IO 资源浪费,缩短构建时间。去除软件包多余依赖,不仅对构建过程有收益,对实际使用环境也有好处,在实际使用环境中避免安装时间、空间浪费,也可以减少安装多余 rpm 引入不必要的安全漏洞。
前期我们做了初步分析,对 openEuler 整个版本每个包起到较好的效果。优化方案在 2021.05.12 TC 例会上汇报过,TC 同意优化方案落地实施。议题及结论如下:
[cid:image001.png@01D74B12.BE6C92C0]
由于优化需要从构建环境去掉了一些依赖,有些软件包本来自身需要的构建依赖如果没在 spec 中明确指定,那么当前构建会缺少依赖导致构建失败,目前遇到的软件包有 317 个,已经提了 issue 跟踪,软件包列表见邮件附件。
当前需要大家共同完成的工作是:对这些构建失败的软件包,整改 spec 文件,补齐各自需要的构建依赖。
为了尽量缩小影响范围,我们从 openEuler:Mainline 复制了一个工程 openEuler-Mainline-copy,请大家基于 openEuler-Mainline-copy 开发验证,代码提交到 src-openeuler 各自的代码仓。软件包 spec 整改后我们再将优化的 Project Config 应用到 openEuler:Mainline 工程(由于复制的工程跟 Mainline 工程的代码未能及时同步,如果应用后个别软件包构建失败再进一步整改)。
为了减少大家的工作量,我们对构建失败的这些软件包的日志进行初步分析,其中大部分包列出失败的关键日志,以及可能缺失的依赖,大家可以参考,或者对比 openEuler:Mainline 工程中同一软件的构建日志,可以判断缺少的构建依赖,具体信息请查看相关issue。
请各位软件包责任人在 2021.05.31 前完成该项任务。
开发验证过程中如有疑问,请与我联系。
谢谢!
-- 陈燕潘 (@chenyanpanHW)