更新 开始贡献/openKylin源码自主选型构建流程.md 文档

+ 新增对control文件的版本号依赖修改规范
This commit is contained in:
luzhiping 2022-11-23 18:07:42 +08:00
parent 4e750cfffe
commit f756609ffb
1 changed files with 65 additions and 0 deletions

View File

@ -336,6 +336,71 @@ admin, cli-mono, comm, database, debug, devel, doc, editors, education, electron
对于**Build-Depends**和**Build-Depends-Indep**可以从项目地址中查找是否有相关编译依赖说明。
---
**注意:** 如果control文件参考了其他OS发行版的规则需要去除或替换其他OS版本中的版本号规则例如
```
Build-Depends:
pkg1 (>= 1.0.0-0ubuntu1),
pkg1 (< 1.2.0-1debian2),
pkg2 (> 1.0.0.build),
pkg3 (> 2.0ubuntu19)
```
首先需要明确对于quilt格式的版本号其一般带有"-",格式为`<upstream_version>-<revision>`而native格式的源码包一般不包含"-"
修改流程可以分两步进行
**第一步:**
对于quilt格式的版本pkg1中的版本号 1.0.0-0ubuntu1 和 1.2.0-1debian2 其包含特定OS发行版的版本号因此要修改。也就变成
```
pkg1 (>= 1.0.0),
pkg1 (< 1.2.0),
```
对于native格式的版本号首先需要确定其upstream版本对于pkg2和pkg3
1尝试找到pkg2的1.0.0版本如果能找到那么1.0.0就是upstream版本其编译依赖改为pkg2 (> 1.0.0)同理pkg3
2如果找不到pkg2的upstream版本此外当前版本号没有包含其他OS发行版名称那么可以保留因为使用source-package工具重打包源码其upstream版本号也就是当前的版本号但是对于pkg3如果pkg3是OS自研的其源码名称一般也包含OS名称例如ubuntu-keyring那么此时可以将此包重新改名由openkylin重新维护对应源码名称改为openkylin-keyring版本号也重新制定例如可以制定为1:1.0.0如果不是OS自研包最好我们也重新制定版本号按我们自己的版本号去维护可以内部讨论例如这里也指定为1:1.0.0。**注意这里,最好要使用:格式的版本号,其表明带有:的版本号总会比不带的版本号高。**
那么对于pkg2pkg3其修改为
```
pkg2 (> 1.0.0.build),
pkg3 (> 1:1.0.0)
```
**第二步native格式的不用处理**
第二步是在第一步的基础上改进。总体上我们要明确其他OS发行版中-横线后面的修订版本的内容。
对于<upstream_version>-<revision>一般来说每个revision是修复了某个bug、安全漏洞等。对于ubuntu每个revision都是由几个patch组成。
因此对于pkg1 (>= 1.0.0-0ubuntu1)其明确规定是0ubuntu1修订版本之后的才能使用也就意味着使用pkg1的1.0.0版本是存在风险的,最直接的现象就是编译不通过。
因此这就需要结合我们实际的pkg1的版本情况来
1如果仓库存在pkg1其版本为1.0.0-ok1。为了保证上述编译能通过需要集成ubuntu的1.0.0-0ubuntu1中的patch。如果已经集成相关patch那么编译依赖就变成
```
pkg1 (>= 1.0.0-ok1),
pkg1 (< 1.2.0),
```
集成了patch之后仓库中的pkg1版本变为1.0.0-ok2。那么在编译依赖的地方就变成
```
pkg1 (>= 1.0.0-ok2),
pkg1 (< 1.2.0),
```
2如果仓库不存在pkg1那么我们首次自主选型构建时选型的版本最好是在1.0.0~1.2.0 之间选择,保证能满足各个依赖包的编译依赖。
上面所说,都是基于编译依赖来处理。同理二进制包的安装依赖字段如果也指定了版本号,那么处理方式也是和上面的一样。
#### 3.1.2 二进制包部分
描述当前源码包可以被分为哪些二进制包程序。