openSUSE:维护/技术文档

跳转到:导航搜索

一般提交处理

通常,遵循openSUSE:维护策略,但尽可能帮助和支持社区用户。

来自开发项目的直接提交

所有直接来自开发包的单个包提交必须检查其构建时依赖项是否可能已更改

 osc build --alternative-project openSUSE:Leap:42.3:Update standard

多个包的提交

需要一起进行的多个提交应请求从仅包含这些包的复合维护项目中完成。如果维护人员遇到困难,您可以复制之前提交的源并自行提交。

不完整的提交

如果我们维护多个稳定版本,而维护人员未进行完整提交,请要求其完成。不要拒绝,但要求完整提交。如果源相同,您可以自行提交或复制更新,而不是进行完整的重新周转。

已知损坏的提交

已知经常损坏的Leap 42.3提交

  • Python 3 单独规范转换
  • 多重构建(通常损坏,或至少有风险)

SLE继承更新的直接提交

  • 通常,请求将问题报告给SLE并提交给SLE维护
  • 作为例外,如果维护人员同意,则分支该包

更新处理

架构

  • 对于不为i586架构构建的包,请禁用其构建。除非包包含baselibs.conf

端口维护

  • 端口维护仅在尽力而为的基础上进行。
  • 对于端口中的任何构建失败,仅针对此架构、仅针对端口仓库禁用此包的构建。
  • 如果所有端口构建都失败,则从项目元数据中删除端口目标。
  • 仅修复端口问题的SLE导入更新可能会暂停,直到下一次更新


SLE导入的更新

openSUSE Leap继承了SLE的一些包,因此受益于SLE发布工程和维护质量保证。这种关系仅限于源代码级别,没有二进制导入或保证的二进制兼容性。

跟踪SLE继承的包

SLE继承的包跟踪如下

对于每个稳定的Leap版本,维护团队维护一个元文件。它在维护开始时从初始发布仓库复制。位置

 openSUSE:Leap:42.3:Update/00Meta lookup.yml

对于每个包,它将指定(当前)该包是否从SLE继承。如果从SLE继承,则位置将如下所示

 pkg1: SUSE:SLE-12:GA
 pkg2: SUSE:SLE-12:Update
 pkg3: SUSE:SLE-12-SP3:GA

脚本忽略GAUpdate之间的区别,仅表示原始位置。

调整跟踪数据

如果需要,Leap包可以切换以继承SLE维护更新。反之亦然,如果Leap想要不同的包。该决定由openSUSE维护团队根据用户需求做出。

从更新项目中签出00Meta包并直接编辑。说明更改原因,例如更新、错误参考。

OBS中的SLE源

几乎整个SUSE:SLE-12*树都作为源导出到OBS中。所有导入到Leap维护中的更新都必须从那里进行。

从SLE导入更新

一个脚本在SUSE MaintSec基础设施内运行。它循环遍历元数据并对所有SLE继承的包执行以下操作

  • 检查Leap包和SLE包之间是否存在源差异
  • 如果存在,查看是否有匹配SLE包的待处理Leap维护更新
  • 如果没有
    • openSUSE:维护中开启新事件
    • 将Leap更新包branch -M到事件中
    • 将最新的SLE源copypac到事件中
    • 将SLE补丁信息复制到事件中
    • 用停止标志标记SLE补丁信息:审查SLE补丁信息文本

SLE到Leap导入脚本所有者:Marcus, Andreas。

openSUSE维护团队对SLE导入更新的标准处理

  1. 审查所有源包差异,以确保差异是合理的,而不是回滚。
  2. 审查SLE补丁信息文本。如果需要,删除SLE特定说明并更改,使其适用于Leap
  3. 最后,删除停止标志并像往常一样处理更新
  4. SLE导入的更新可以在所有其他审查通过后立即发布

特殊更新

在处理SLE导入的更新时,openSUSE维护团队可能会添加缺失的包并删除不需要的包(例如Leap有更新的包)。它可能会解决构建或二进制问题并拆分/合并事件。

更新可能通过SLE维护检查器、OpenQA和手动QA,但在Leap OpenQA中失败或根本无法在Leap上工作。openSUSE维护团队必须延迟发布更新并调查解决方案。在维护人员批准下对openSUSE Leap进行的特定代码更改应反馈给SLE维护,以便成为下一个SLE维护更新的一部分。同时,修改后的Leap维护事件可能会进展,从而暂时偏离SLE源,以便以后再次同步。

调整事件

  • 通常情况下,从Update进行branch/mbranch并提交以获得openSUSE包维护人员的批准。使用停止标志来记录正在进行的工作,并在请求上使用setincident来表示请求的目标事件。
  • 对于从SLE复制新包,以下过程被接受作为提交的替代方案:osc branch -M openSUSE:Leap:42.3:Update/newpackage openSUSE:Maintenance:$INCIDENT && osc copypac -e -K SUSE:SLE-12:Update/newpackage openSUSE:Maintenance:$INCIDENT/newpackage.openSUSE_Leap_42.3_Update

错误条件

  • 导入脚本在遇到第一个差异时将导入完整的SLE事件,包括事件中但可能不是SLE继承包的其他包。决定要采用哪个源,如有疑问,如果SLE维护更新,则切换到SLE维护。
  • 导入脚本在SLE事件中,如果添加了之前在Leap中不存在的新包,则会失败。
  • 导入脚本在补丁信息中记录的用户ID在IBS和OBS之间存在差异时会报错。它有一个硬编码的替换列表。