53 Star 147 Fork 138

openEuler / RISC-V

 / 详情

[meta] 解决RISC-V的构建失败问题

进行中
任务 成员
创建于  
2020-09-05 12:19

当前openEuler RISC—V 版本正在基于openEuler的源码利用OBS进行批量构建,当前存在一些构建失败的问题。
实时的OBS构建状态在如下网址可查看,包括构建成功、失败原因等:

https://build.openeuler.org/project/show/openEuler:Mainline:RISC-V

当前的构建状态为:
Failed:36 https://build.openeuler.org/project/monitor/openEuler:Mainline:RISC-V?arch_riscv64=1&defaults=0&failed=1&repo_standard_riscv64=1
Unresolvable:774 https://build.openeuler.org/project/monitor/openEuler:Mainline:RISC-V?arch_riscv64=1&defaults=0&repo_standard_riscv64=1&unresolvable=1
解决构建失败的问题的步骤如下:

  1. 参考文档获取一个RISC-V的环境用于调试和构建:openEuler RISC-V的获取和运行;
  2. 从构建状态为Failed 或者 unresolvable的软件包中选择一个pkg1来解决,在本仓提交一个issue;
  3. 若状态为Unresolvable,意味着构建、安装所依赖的二进制包缺失:
    1. 确定所缺少的依赖包是什么
    2. 若openEuler:RISC-V 工程中有此包,并且编译成功,则将openEuler:RISC-V相应的包的“use for build flag”打开
    3. 若暂时缺少此包,则找到其他平台的二进制包,补充到二进制依赖仓中,重新触发构建,待相应的openEuler的包构建成功之后,去除其他平台引入的二进制包,依赖openEuler 的软件包进行构建。
  4. 若状态为failed,意味着构建失败:
    1. 在OBS系统上将失败的包fork到个人的工程下
    2. 查看log,本地osc构建复现失败现象
    3. 按失败原因,解决方法包括:修改spec适配、合入RISC-V补丁、取gitee openEuler较新版本、升级gitee openEuler软件包、引入新包至gitee openEuler等。
    4. 在RISC-V的环境中使用OBS的命令行工具 osc 来复现问题和验证修改;
      5、本地验证通过之后,在相应的构建代码仓src-openeuler/pkg1 (涉及到源码的修改)提交pr,以及在本仓(涉及到RISC-V OBS工程的配置修改)提交issue和pr,声明所解决的问题和解决方法,并且将pr和issue进行关联。
      6、在本仓提交pr,修改RISC-V 软件包列表的配置文件 https://gitee.com/openeuler/RISC-V/blob/master/configuration/RISC-V_list.yaml 完成最终的修改。

解决问题的背景知识:

  1. openEuler 的OBS使用

评论 (8)

whoisxxx 创建了任务
whoisxxx 关联仓库设置为openEuler/RISC-V
展开全部操作日志

Hey @whoisxxx, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

whoisxxx 修改了描述
whoisxxx 优先级设置为严重
whoisxxx 置顶等级设置为
whoisxxx 修改了描述
whoisxxx 修改了描述

更新的处理的流程,增加了一个中间仓库作为未被openeuler 接收之前的中转。
https://gitee.com/riscv-spare/projects
当前的流程为:
输入图片说明

之前riscv的所有软件包的源码都是来自src-openeuler的master分支,但是由于我们在解决问题的过程中,向上游提交的PR请求的响应周期很长,且其它非riscv sig组对master分支的代码修改,会导致我们obs的重构和引发新的问题,导致我们的obs构建平台无法让软件包稳定的迭代(比如有的包这次成功,下次失败,在不修改源码和配置的情况下不能稳定构建成功)。
openeuler社区在我们的反馈和协商下,为riscv单独创建了一个源码仓openeuler-risc-v(后简称riscv源码仓),代替了上图中rv_spare的位置,用于riscv sig自我管理软件包,当openeuler riscv os构建稳定后,再整体从openeuler-risc-v向上游src-openeuler提交代码修改的PR完成合并。

2021年9月10日起,流程调整为如下:

  1. openeuler-risc-v新添加fork仓库操作流程:
    (1)修改https://gitee.com/openeuler/RISC-V/blob/master/configuration/riscv_fork_list.yaml 这个文件,添加需要的包,提交PR;
    (2)openeuler/RISC-V上游会处理PR,CI工具会自动化完成fork工作;我们只需要等待PR合并后查看openeuler-risc-v是否增加了新的代码仓;

  2. riscv sig组的所有成员fork软件包:只能从openeuler-risc-v fork到个人账号下,进行代码修改,obs构建测试后,再向openeuler-risc-v 提交PR合并请求。 (杜绝直接从src-openeuler 直接fork代码)

  3. openeuler-risc-v向上游的合并:
    如果有CI,则通过CI工具批量向src-openeuler提交PR请求;如果没有CI工具,则约定待riscv obs构建稳定后,在一个集中的时间段,手动对openeuler-risc-v中的源码仓提交PR;

openeuler-ci-bot 负责人设置为liqingqing_1229
phoebe 修改了标题
phoebe 修改了标题

openEuler 的OBS使用 链接失效,当前更新为:https://openeuler.org/zh/blog/fuchangjie/2020-03-26-how-to-OBS.html

或许这个issue更适合作为一个wiki?

liliang_euler 任务状态待办的 修改为进行中
liliang_euler 负责人liqingqing_1229 修改为yangxin

或许这个issue更适合作为一个wiki?

对超时问题的把握,吴老师语:x86的timeout x 10 ~= RISC-V QEMU上的timeout,修改需用ifarch之类的条件限制,所有修改不能修改/破坏其它架构。

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(7)
5329419 openeuler ci bot 1632792936 9256217 phoebe xi 1650014869
Shell
1
https://gitee.com/openeuler/RISC-V.git
git@gitee.com:openeuler/RISC-V.git
openeuler
RISC-V
RISC-V

搜索帮助