Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
openeuler_risc-v_obs [2022/02/24 14:24] – [基于 OBS 构建 RPM 包] misaka00251 | openeuler_risc-v_obs [2024/07/30 08:13] (current) – Change URL misaka00251 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== OBS 笔记 ====== | ====== OBS 笔记 ====== | ||
- | OBS 主页是: https:// | + | :!: openEuler 官方已经全面切换到 [[https:// |
- | 查看 Mainline | + | openEuler RISC-V |
+ | 本文章是[[https:// | ||
===== 重要概念 ===== | ===== 重要概念 ===== | ||
Line 16: | Line 17: | ||
* 架构(Arch): | * 架构(Arch): | ||
- | [[https:// | + | [[https:// |
上方有个 Meta,此处就是我的工程 Metadata 文件。里面有 description 以及我要编译哪些架构的说明。 | 上方有个 Meta,此处就是我的工程 Metadata 文件。里面有 description 以及我要编译哪些架构的说明。 | ||
< | < | ||
- | <project name=" | + | <project name=" |
< | < | ||
< | < | ||
Line 29: | Line 30: | ||
</ | </ | ||
< | < | ||
- | <path project=" | + | <path project=" |
< | < | ||
</ | </ | ||
Line 45: | Line 46: | ||
首先安装 osc 软件包: '' | 首先安装 osc 软件包: '' | ||
- | osc 的凭据位置为 '' | + | osc 的凭据位置为 '' |
<file oscrc .oscrc> | <file oscrc .oscrc> | ||
[general] | [general] | ||
- | apiurl = https:// | + | apiurl = https:// |
no_verify = 1 | no_verify = 1 | ||
- | [https:// | + | [https:// |
user=< | user=< | ||
pass=< | pass=< | ||
Line 87: | Line 88: | ||
<param name=" | <param name=" | ||
<param name=" | <param name=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 这里还有另一种更好的写法: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <service name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
</ | </ | ||
</ | </ | ||
Line 111: | Line 126: | ||
文件上传成功之后,OBS 会自动开始构建。 | 文件上传成功之后,OBS 会自动开始构建。 | ||
+ | |||
+ | |||
+ | ==== 使用 OSC 构建 RPM 包 ==== | ||
+ | |||
+ | 先打个预防针:本地的磁盘空间要够哦! | ||
+ | |||
+ | === 构建社区已有软件包 === | ||
+ | |||
+ | 假设我们要将 Mainline 的 nano 包 branch 到个人分支: | ||
+ | |||
+ | < | ||
+ | $ osc branch openEuler: | ||
+ | </ | ||
+ | |||
+ | 随后将软件包配置信息下载到本地(上一步会有提示哦): | ||
+ | |||
+ | < | ||
+ | $ osc co home: | ||
+ | </ | ||
+ | |||
+ | 接下来,修改 _service 文件为个人 Git Repo 地址(同在线构建方法一样修改即可)。随后上传你的更改: | ||
+ | |||
+ | < | ||
+ | $ osc ci -m " | ||
+ | </ | ||
+ | |||
+ | 修改提交成功后,OBS 会自动开始构建软件包。通过以下命令可以查看编译日志情况: | ||
+ | |||
+ | < | ||
+ | $ osc buildlog standard_riscv64 riscv64 | ||
+ | </ | ||
+ | |||
+ | 如果需要将远程软件包代码同步到本地,可以使用如下命令: | ||
+ | |||
+ | < | ||
+ | $ osc up -S | ||
+ | </ | ||
+ | |||
+ | 可以发现这样拉下来的文件开头都有 _service 一样的开头,在本地编译时会出问题,此时要删除掉: | ||
+ | |||
+ | < | ||
+ | $ rm -f _service; | ||
+ | </ | ||
+ | |||
+ | 修改源代码和 spec 文件之后,提交到 OBS 服务器进行构建: | ||
+ | |||
+ | < | ||
+ | $ osc up | ||
+ | $ osc addremove * | ||
+ | $ osc ci -m " | ||
+ | </ | ||
+ | |||
+ | 修改提交成功后,OBS 会自动开始构建软件包。 | ||
+ | |||
+ | 如果提示 Entity Too Large 的话,大于 1 MB 的都无法被上传成功,为平台的已知问题。我们也不推荐这么做,最好用 _service 文件! | ||
+ | |||
+ | === 新增软件包 === | ||
+ | |||
+ | 前提条件:你已经根据依赖关系确认了你要把新增的包加入到社区的哪个工程里面 | ||
+ | |||
+ | 首先,基于工程 openEuler: | ||
+ | |||
+ | < | ||
+ | $ osc branch openEuler: | ||
+ | </ | ||
+ | |||
+ | 随后将软件包配置信息下载到本地(上一步会有提示哦): | ||
+ | |||
+ | < | ||
+ | $ osc co home: | ||
+ | </ | ||
+ | |||
+ | 接下来,删除创建工程时的 branch 到个人分支的无用软件包: | ||
+ | |||
+ | < | ||
+ | $ cd home: | ||
+ | $ osc rm nano | ||
+ | $ osc commit -m " | ||
+ | </ | ||
+ | |||
+ | 然后就可以在个人工程下创建新增的软件包: | ||
+ | |||
+ | < | ||
+ | $ mkdir my-first-package | ||
+ | </ | ||
+ | |||
+ | 接下来,添加你准备好的源代码和 spec 文件到目录下,并上传至 OBS 服务器: | ||
+ | |||
+ | < | ||
+ | $ cd .. | ||
+ | $ osc add my-first-package | ||
+ | $ osc ci -m "Add my-first-package" | ||
+ | </ | ||
+ | |||
+ | 修改提交成功后,OBS 会自动开始构建软件包。通过以下命令可以查看编译日志情况: | ||
+ | |||
+ | < | ||
+ | $ osc buildlog standard_riscv64 riscv64 | ||
+ | </ | ||
+ | |||
+ | ==== 创建 subproject ==== | ||
+ | |||
+ | 假设我要在 home: | ||
+ | |||
+ | <file test> | ||
+ | <project name=" | ||
+ | < | ||
+ | < | ||
+ | <person userid=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | <path project=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 然后使用 '' |