打包 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 等的定义。