任务二:在 openEuler RISC-V 系统上通过 obs 命令行工具 osc,从源代码构建 RISC-V 版本的 rpm 包,比如 coreutils
。
本地host是arch linux系统的manjaro(其他系统的安装命令请自行更换一下,因为是rpm包,所以非常非常非常推荐大家使用rpm系列的系统,会避免非常多的坑,不要像我傻不拉几的,头铁)
首先,我们需要知道什么是obs(open build service)和osc。
obs:简而言之,主要用于编译rpm包,能够针对不同的操作系统及不同的CPU版本的编译安装,可以在线编译也可以在我们的本地host编译。
osc:是OBS的命令工具,即在OBS服务器上安装了osc后,可使用osc完成对包的配置及编译安装等。
我们需要先去这个网站上注册一下账号网址
(因时间关系,请读者根据链接选择当前最新镜像)
回到任务二,我们注册账号之后,要做的就是在本地配置一下
~/.config/osc/oscrc
[general]
apiurl = https://build.tarsier-infra.isrc.ac.cn/
no_verify = 1
[https://https://build.tarsier-infra.isrc.ac.cn/]
user=<你的用户名>
pass=<你的密码>
配置好了之后,我们安装osc和obs-build
yay -S osc-git obs-build-git
arch系列的aur里面有现成的,其他发行版可以手动构建一下
安装osc
git clone https://github.com/openSUSE/osc.git
cd osc
chmod +x setup.py
./setup.py build
sudo ./setup.py install
安装obs-build
git clone https://github.com/openSUSE/obs-build.git
cd obs-build
sudo make install
安装之后,我们就可以尝试开始构建了
首先通过命令,将obs平台的分支的包拉下来
osc co openEuler:23.09:RISC-V coreutils
这只是拉下来了一个文件_service,我们还需要一行命令来将远程包的其他相关文件一起拉下来
(注意,我们co下来后,会出现对应的文件夹,请进入之后执行下面命令)
osc up -S
我们拉下来的文件都是_service开头的,这是不可用的,所以我们还需要去掉这些头
rm -f _service;for file in `ls`;do new_file=${file##*:};mv $file $new_file;done
最后,我们可以尝试进行构建rpm包了,输入命令
osc build standard_riscv64 riscv64
最后就是漫长的等待时间(8G的系统盘,花费了4000s大概,其他小伙伴据了解长的有大约一万多秒,看个人机器性能)
最后结束会给出一些路径,和相关构建成功的包。
这里放个图
撒花完结,任务二!!!
最后留下几个我当时遇见的坑,希望能帮到大家
如遇报错,subproject exists but has no meson.build
可能是qemu的版本问题,checkout一下,选择一个稳定版本,我用的8.1.0和8.1.1的
如遇报错,could not map git branch ‘’ to a project
是没有进入到对应的目录进行相应的操作,请仔细观看上面的描述。