account组件单元测试执行报错

问题背景

以account为例子,测试bingo的组件单元测试功能时错误
account版本为main分支最新提交:6ff89df3a997c8d2f75e85aba0fd139d40813af9(6月4日)

问题现象

在account组件下执行单元测试命令:

bingo test -ut -r openubmc_dev

报错:

初步分析

应该是依赖mdb_interface/1.70.101@hw.ibmc.release/rc,远端没二进制,需要源码构建,虽然拉得到代码,但是没有aa252c7f4bee3b977acaf63dc6d50d8073738db8这个提交

去组件仓搜索,确认没有此提交:


查看组件历史tag,发现mdb_interface没有1.70.101这个tag

查看service.json的test依赖,发现account并没有严格限制1.70.101这个版本

分析总结
1、account 的单元测试依赖mdb_interface/1.70.101@hw.ibmc.release/rc,但是仓库已经没有对应提交号来参与源码构建,导致单元测试执行失败
2、account并没有严格限制mdb_interface的1.70.101这个版本

诉求

1、如何修改才能让account的单元测试正常进行
2、怎么追溯非组件自身的conan依赖,比如在这个例子中,如何才能知道具体是哪个组件依赖mdb_interface/1.70.101@hw.ibmc.release/rc

  1. 执行rm -rf ~/.conan/data/mdb_interface/1.70.101删除本地缓存的mdb_interface/1.70.101版本。
  2. 按当前的配置来看,没有哪个组件依赖mdb_interface的固定版本,都是定义的mdb_interface范围版本。
  3. 从account组件的mds/service.json中可以看到到build(构建依赖)、test(测试依赖)中定义的组件依赖及版本。 如果本地环境中有满足定义的范围的最大版本,conan 会使用本地缓存的版本。
2 个赞

已经使用conan remove "*" -f 清理本地所有缓存,但还是会自动去找mdb_interface/1.70.101版本

  1. mdb_interface经过一次git仓库切换,git历史被清理了,mdb_interface/1.70.101@hw.ibmc.release/rc 里包含的commitid也不存在了。 如果是在本地conan仓库,可以删除这个版本的conan包
  2. 社区版本的user/channel是以 openUBMC.release/rc 结尾的。 请安装社区的bingo,执行测试时依赖到openUBMC.release/rc结尾的mdb_interface
git clone https://gitcode.com/openUBMC/bingo.git
cd  bingo
sh install_local.sh 

这太迷惑了,构建和UT测试用不同的环境(工具)。

且问题源头又追到了历史commit被清的事情上了。

是否可以通过改bingo来解决?我看与1.70.101最近的有openUBMC版本的是1.70.102:

方案一: 使用社区版本bingo用于组件开发,社区版本bingo可以用来构建和UT测试。

方案二、方案三有问题。
image

1.70.101就没有openUBMC.release/rc的这个版本

我按方案二、方案三去做,也还是去找mdb_interface/1.70.101@hw.ibmc.release/rc

方案二、三确认有误,已删除。

这个openUBMC_dev 是你们自己搭建的conan仓库么, 官方的conan仓库里有更新版本的。

该问题会反馈给开发团队进行解决。

目前执行UT、IT测试请暂时使用社区版bingo。

环境

bingo版本:0.5.317

现象

bingo build --user openUBMC.release可以在生成openUBMC.release包
image
bingo test -it --user openUBMC.release还是使用了hw.ibmc.release

目前执行UT或IT请安装社区的bingo,安装方法

git clone https://gitcode.com/openUBMC/bingo.git
cd  bingo
sh install_local.sh 

社区版本的bingo是不能执行签名吧。

不知道新版本有没有解决。

我找到一个好办法,并且可行!

思路

.317版本的bingo会去找user为hw.ibmc.release的最新mdb_interface 版本,目前最新的版本就是1.70.101,但是这个版本没法源码构建,导致种种操作失败。
那主动推一个有源码的并且离1.70.101最近的并且将user设置为hw.ibmc.release的mdb_interface 到远端就行了,这样bingo就会找更新版本的mdb_interface。

版本已经给大家找好了,就是1.70.102(当然,可以找更新的,以下以1.70.102为例)

实践

1.70.102 对应的提交号是:4115a0b213a439247d3bf00d99455b2078b54341
在mdb_interface仓库目录执行:

git switch -c 1.70.102 4115a0b213a439247d3bf00d99455b2078b54341

确保构建环境对conan远端仓有读写权限
然后一口气发:

bingo build -r <你的远端> -bt release --upload --stage rc --user=hw.ibmc.release
bingo build -r <你的远端> -bt release --upload --stage stable --user=hw.ibmc.release
bingo build -r <你的远端> -bt debug --upload --stage rc --user=hw.ibmc.release
bingo build -r <你的远端> -bt debug --upload --stage stable --user=hw.ibmc.release

记得清本地的1.70.101缓存

小结

这个方法可以解决伙伴.317 bingo 对 mdb_interface/1.70.101的依赖问题。

1 个赞