EulerMaker:构建 openEuler 全场景生态

引言

2022 年末,openEuler Summit 2022 上,中国 Linux 内核圈最有影响力的开发者之一——吴峰光博士做了名为《面向全场景操作系统的构建服务发布》的主题演讲,正式向开发者披露了 openEuler 统一构建服务EulerMaker

Linux 中国开源社区就此采访了吴峰光博士,为读者挖掘到一些在峰会上亮相的 EulerMaker 背后的有趣细节。

? 吴峰光博士是著名的 Linux 内核贡献者、华为计算操作系统首席专家、openEuler 社区技术委员会委员。他在 Linux 内核领域上拥有卓越贡献,在 I/O 和内存管理、内核测试服务方面做出了重要的贡献。有关他的故事,可以参阅《新程序员》杂志的专访《吴峰光杀进 Linux 内核》。

openEuler 的全场景

2021 年 9 月,openEuler 宣布将支持全场景,在服务器、云计算之外,还支持编译计算和嵌入式场景,这就引来了很多人的关注,但也有一些怀疑的眼光。因为,服务器和嵌入式分处两端,中间有着巨大的鸿沟。

“30 年前,服务器 OS、嵌入式 OS,界限非常清晰,像是两个村,中间全是农田。但后来 IT 越来越深入千行百业,云、边缘、IoT 兴起,各种场景涌现,发生了交叠。所以我们认为这是一个新的历史机会,来做一个全场景 OS。”吴峰光说。

? 关于多场景的支持和融合,请参考我们之前对欧拉技术委员熊伟的采访:《操作系统专家解读 openEuler 22.09 最新技术特性》。

“要做全场景 OS,就引入了一个需求:原来的构建系统,如何转化为全场景统一构建系统?”

什么是 OS 构建系统?

OS 构建系统以 OS 源代码作为输入,以用户可安装使用的软件仓或OS镜像作为输出。

? 服务器领域的 OBS、嵌入式领域的 Bitbake,是各自领域的代表性构建系统,历史悠久。

为什么需要新的构建系统?

“openEuler 社区一开始是用 OBS 来构建的,”吴峰光介绍说,“OBS 最初由 SUSE 贡献开源,功能强大。但随着使用的深入,我们发现一些复杂的新需求很难在它上面改进,这就对 openEuler 的演进造成了困难。”

就一般的 OS 来说,OBS 构建可能够用;但是当一个操作系统要支持全场景,复杂度就大大增加,对构建系统提出了更严苛的要求。

吴峰光博士对 OBS、Bitbake 做了深入调研。他解释了这些老牌构建系统,为什么满足不了openEuler的需求:

“服务器领域的 OBS 主打能力是什么?几大主流的 Linux 发行版它都支持,比如可以给 Redhat 打包,也可以给 Debian 打包。兼容并包是它的核心设计目标,适应了 Linux 多样化的现状。但我们认为,多样化在早期对 Linux 发展有利,但长期而言,Linux 生态的碎片化是一个需要被解决的问题。”

“嵌入式领域的 Bitbake 采用了面向任务和过程的 DSL 描述语言,这使得它非常灵活强大,但自由度和复杂性过高,以学习曲线陡峭知名。现在流行的理念是如 YAML、JSON 等通用、声明式的配置语言,和函数式编程,以实现低门槛、易理解、可控可重复的构建过程。”

在吴峰光看来,在 30 年后的今天,构建系统有着新的时代目标

2022 年 3 月,openEuler 团队开始设计新的构建系统 EulerMaker。

EulerMaker 构建系统

OS 构建系统的核心流程是,用户给定一组软件包后,按照包依赖关系,对它们发起并行构建任务。“那么搭一个 Kubernetes 集群,上面叠加一个包构建调度模块,是