Skip to content

Latest commit

 

History

History
104 lines (51 loc) · 4.8 KB

2024.5.13-EBS验证和pr问题-尹健徽.md

File metadata and controls

104 lines (51 loc) · 4.8 KB

Eulermaker使用教程

什么是Eulermaker:一个可以在远程机器上构建指定 gitee 仓库和分支的网站,主要用于验证包构建;你在提交 pr 时 ci-bot 就是在这上面跑的测试,然后回应给你。另外还有一些工程无法本地运行验证,只能在 ebs 验证。

如何使用Eulermaker:EulerMaker用户指南 (openeuler.org)

需要先登录 ,不然你可能看到很多功能是灰的

常用测试工程:

  • openEuler-24.03-LTS-everything:risc-v 用于验证riscv架构
  • openEuler-24.03-LTS:everything 用于验证 x86_64 和 aarch_64架构

继承你需要的工程,然后添加你 fork 的 gitee 仓库链接以及指定分支就可以愉快地开始测试了

对于同时构建多个架构的工程,可以在这里编辑选取你需要构建的架构

image-20240513220649989

一些 tips:

  1. 有时候虚拟机build的时候卡住或者退出

    • 检查一下是否build的目录由于项目太大而磁盘占满了

    • 比如我在build boost这个很大的包时就出现这种情况

  2. 点击构建历史里的 Job id 就可以看到构建的日志了,供你查错。注意在构建的时候有可能看不到日志,显示 404,可能是 bug 吧,等他构建完即可

  3. 有时候很长时间都没有构建完(遇到过2个小时的那种),重新构建即可,可能网络出问题了。

  4. 另外有一些 bug 不一定是你自己的问题,可能是远程构建环境没有准备好,初步排查无法解决后,建议及时在群里询问老师

简单修包任务

一些简单的修包任务只需要更改一下版本号,增加一些判断或者更换软件包

需要注意的是,每次不管是升级还是修包,release版本号都要+1。以前误认为只有升级才需要更改版本号

changelog 里面要简短且明确说明这次修改的内容以及修改原因,版本号要对应自己修改的,日期也要写对。

pr 合并阶段:可能出现的情况是你提 pr 的源仓库有好几个 pr,合并了一个之后其他的 pr 就会出现冲突,此时需要你手动 rebase 解决一下。有 pr 最好快点给老师讲合并了,不要像我一样,有个 pr 解决了三次冲突还没合并。

一个 pr 问题【已解决】

不知道为什么本地只有一个commit,但是提交上去之后多了几个commit,然后就needs squash,这种情况多发生在分支上写了:当前分支与 master 相比,领先 2 个 Commit,落后 2 个 Commit(事后发现这个信息其实不重要,也不是导致 pr commit 不止一个的原因)。但是这两个分支完全一模一样

问题出现原因:

因为源码仓 master 分支最后那两个 commit 是 sync 过来的,原始pr是直接提交到 2403 的,虽然 master 和 2403 分支最后那俩 commit 的内容是一样的,但是 commit id 是不一样的。所以说我误认为的一模一样只是在内容上一样,在 id 上他们还是不同的。需要理解什么是 /sync

由于我的 pr 分支是从源码仓 master 分支 checkout 出来的,如果 pr 到源码仓的 2403 分支上的话基线就会不一样

解决方法:

  • 去 gitee 上找到源仓库对应分支【我这里是2403分支】的最后一次 commit id,git reset --hard <id> 强制退回到正确的 id,而不是我 checkout 出来的 master 分支对应的 id
  • 把自己的修改弄上去再提交即可
  • 本方法比较粗暴,有其他方法也可,只要保证开发之前最新的提交 id 和 2403 分支上最新的提交 id 对应即可

一些关于 spec 文件的知识

spec 文件的执行顺序就是从上到下依次执行的

如何在未定义一个宏的情况下定义他?(本来以为很简单的事,其实还是需要一点技巧)

参考:

需要用到 conditional expansion:

%if 0%{?mymacro:1}
# ... %{mymacro} is defined
%else
# ... %{mymacro} is not defined
%endif

#或者
%if 1%{?mymacro:0}
# ... %{mymacro} is not defined
%else
# ... %{mymacro} is defined
%endif