-
task: 将该包从
v0.24.3
升级到最新的v0.26.0
-
OBS
网站上创建新的包时,最方便的话应该可以直接branch
一个已有的包再删除,这样个人空间中就有了一个project
,之后再创建包,修改service
文件即可,不需要自己配置目标架构等。 -
git clone
仓库到本地 -
通过
osc
下载文件到本地,注意用脚本去除文件名的前缀,直接写成 shell 脚本方便复用。#!/usr/bin/bash rm -f _service; for file in `ls`; do new_file=${file##*:}; mv $file $new_file; done
-
osc build
尝试构建旧版本,报错,说无法解析crates-io
的ustc
源。-
奇怪,明明
cargo_config
文件中将源修改为了本地的vendor
目录,不应该尝试去下载。 -
之后尝试
cargo build --offline
然而这样的话报错是直接找不到包,显然,cargo config
出现大问题。 -
spec
中将CARGO_HONE
设置为了自定义的路径,其中有对cargo
源设置为本地vendor
路径的配置。打印了$CARGO_HOME
,发现环境变量设置没问题,然而实际构建中cargo
参照的还是构建目录的home
下的默认的.cargo/config.toml
配置,其中默认配置了ustc
源,而osc
是不联网的,由此导致构建失败。 -
所以就是说,之前的指定配置文件路径的方法已经不生效了,因此去查阅了最新的方法。
-
原本的
cargo config
在构建时会被复制到cargo_home/config
,然后通过指定环境变量$CARGO_HOME
到此路径来添加配置,结果是cargo
无法识别到这个配置,而是去读取家目录的默认配置,导致试图联网去下载依赖crates
。在spec
中将拷贝的目录改为.cargo/config.toml
即可解决,且无需配置环境变量,因为cargo
会优先使用项目路径下的配置。
-
-
终于可以构建了,尝试将其中的
cbindgen
源代码替换为v0.26.0
的版本,重新构建。 -
出现了
vendor
中的一些包版本过低的问题,本想着自己手动一个个去下载新版的依赖包,想到cargo vendor
可以直接将所需要的包下载到指定目录,十分方便。 -
在本地顺利构建新版本的包。
-
将修改同步到本地仓库,
git add/commit/push
,之后提交 PR。
提交时发现好多不规范的行为,感谢各位老师的指正。
-
spec
文件中的change log
应当是在原有日志的基础上添加,而非替换,新的日志在上。 -
spec
中的改动记得同步修改上下文,例如我删去了一个目录的创建,那么之后有个对这个目录的操作命令,也应该删去,哪怕不会影响构建,但是报错信息会产生误导。 -
Cargo.lock
文件可以放入vendor
中,便于以后他人的维护。 -
gitee
提交之前记得去 openEuler 官网 签署cla
,邮箱和gitee
主邮箱一致。 -
门禁的检查通过之后,还会有接口变更检查,这里的报错可以忽略,除非被要求提供详细的差异说明。
-
可以在
oerv-team
的 对应issue
下时不时写一些修包记录,之后也可以方便地整理到像本文一样的正式的修包记录中,也方便给大家看看进度。 -
pull request
只要不关闭,之后的提交都会被继续同步,不需要手动关闭 PR 再重新提交。(git 使用还是不够熟练😭)