打包 Rustlang
如何为 Rust 编译器打包用于 openSUSE 构建服务。
打包 Rust 编译器
Rust 1.54 及更高版本
流程
- 分支克隆 rust 和 rust1.XX(先前版本)
osc bco devel:languages:rust/rust1.79 osc bco devel:languages:rust/rust
- 在 devel:languages:rust 中创建下一个版本的软件包(例如 rust1.55)
osc mkpac home:USERNAME:branches:devel:languages:rust/rust1.80
- 从先前版本复制,rust1.54.spec、rust1.54-rpmlintrc、README.suse-maint、ignore-Wstring-conversion.patch、_constraints、_service、rust.keyring
cp rust1.79/{_constraints,ignore-Wstring-conversion.patch,_multibuild,\
README.suse-maint,rust1.79-rpmlintrc,rust1.79.spec,rust.keyring,_service} rust1.80
- 将文件重命名为新版本
mv rust1.79-rpmlintrc rust1.80-rpmlintrc mv rust1.79.spec rust1.80.spec
- 编辑 .spec 文件以更正标头中的版本
%global version_suffix 1.80
%global version_current 1.80.0
%global version_previous 1.79.0
...
%define obsolete_rust_versioned() \
Obsoletes: %{1}1.79%{?2:-%{2}} \
Obsoletes: %{1}1.78%{?2:-%{2}} \
- 检查并设置所需的 LLVM 版本要求
值得注意的是,这可能很烦人。您需要前往 https://github.com/rust-lang/rust/tree/master/src 然后跟踪 llvm-project。在该位置,转到 "llvm/utils/lit/lit/__init__.py" 并检查版本。是的,我不是在开玩笑。LLVM 没有将版本放在其他任何地方,这很愚蠢。
如果 llvm 版本已更改,请设置
%global llvm_version 18
- 创建 Changelog
从 https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md 复制注释,省略 HTML 标签。
osc vc
- 添加第一组文件
osc add _constraints ignore-Wstring-conversion.patch _multibuild README.suse-maint rust1.80.changes rust1.80-rpmlintrc rust1.80.spec rust.keyring _service
- 获取源代码
osc service ra
- 添加源代码压缩包
osc add *.tar.xz*
- 构建
确保您已设置 sccache
osc build
- 提交
osc ci
- 提交到 d:l:r
osc sr devel:languages:rust rust1.80
- 更新 rust 元包
确保您首先退出 rust1.XX 版本文件夹。
osc bco devel:languages:rust rust
像上面一样更新 .spec 文件
更新更改日志,复制前一行并更新版本
osc vc
提交
osc ci osc sr
- 一旦接受,转发到 factory
osc sr devel:languages:rust rust1.80 openSUSE:Factory osc sr devel:languages:rust rust openSUSE:Factory
- 一旦全部接受,删除您的分支 prj
为什么?因为这样,下次分支时,您将获得最新的 prj 配置和仓库,其中包含 sccache 等的定义。