openSUSE:Build Service 产品定义处理
产品定义的处理
产品定义是一个 XML 文件(或一组文件),它指定了从一组软件包构建产品所需的所有信息。产品可以是一个文件系统树,用于安装系统或 iso 介质。该文件系统树在内部通常被称为 FTP 树,这是出于历史原因。
OBS 中产品定义的存储
产品定义需要提交到 "_product" 软件包。如果软件包不存在,可以像往常一样创建它。内部的文件可以像任何其他软件包文件一样签出或提交。因此,例如,可以通过以下方式签出 openSUSE:Factory 产品定义:
osc co openSUSE:Factory _product
与周围项目的关系目前在源级别上。只有具有项目权限的人才能添加和编辑描述。
自动产品创建
尚未实现! Build Service 服务器将在提交产品配置时自动从产品定义创建虚拟软件包。这意味着它会为
- 每个定义的架构集创建一个 kiwi 构建描述的 "_product_$NAME" 软件包源
- $product-release 软件包,例如提供 openSUSE-release 软件包,包括已安装系统的产品规范。
- 模式软件包。
这些源在每次 PD 提交更改时都会更新,并像往常一样由调度器安排。可以像往常一样签出这些源,但不允许提交。
手动产品创建
所有步骤都可以手动执行,用于开发和调试目的
1. 安装产品转换器
git clone git://gitorious.org/opensuse/build-service.git
2. 获取配置并运行转换器
cd backend osc co openSUSE:Factory _product ./bs_productconvert openSUSE:Factory/_product/openSUSE.product /tmp/outputDirectory # Add the "-l" option if you have local access to the trees. This will speed up # kiwi runs significantly.
"本地访问" 此处意味着相同的文件系统 ID,以便 kiwi 可以使用硬链接而不是副本。转换会创建所有 kiwi 配置和 spec 文件到输出目录。spec 文件可以像往常一样构建软件包。
从 kiwi 描述创建镜像
编辑 kiwi 文件,并将 "obs://" 路径替换为指向软件包目录的完整本地路径。(将随着 osc 集成而废弃)。
使用以下命令调用 kiwi 以构建镜像
kiwi --root /tmp/kiwiOutputDirectory --create-instsource $KIWI_SPEC_DIRECTORY
这将根据 kiwi spec 创建一个 FTP 树。可以通过调用以下命令来滚动镜像:
/usr/share/kiwi/image/isoboot/suse-isolinux /tmp/kiwiOutputDirectory /tmp/image.iso
(需要安装 kiwi-desc-isoboot 软件包才能使用此命令)。
缺失的实现
- 集成自动 bs_productconvert 调用
- 通过 kiwi 自动创建 instsource。
- kiwi 构建的 osc 集成。
- 从 PD 生成模式软件包
- 从 PD 生成 control.xml 文件
- skelcd 软件包创建?
: