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 软件包创建?