From e9eaace619627b1ed369e21aeb9a3f939a6c560a Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Mon, 8 Sep 2025 13:09:34 +0800 Subject: [PATCH] describe semver macro usage --- ...30\346\233\264\350\256\260\345\275\225.md" | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git "a/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" "b/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" index 95876b0..67a1f4d 100644 --- "a/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" +++ "b/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" @@ -6,7 +6,7 @@ 状态: 活跃 编号: oEEP-0018 创建日期: 2024-09-16 -修订日期: 2025-08-07 +修订日期: 2025-09-08 --- ## 背景说明 @@ -204,3 +204,40 @@ openEuler 创建初始时 `rpm` 包即支持 zstd,不会影响用户自老版 **参考链接** - https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation + +## 生效版本 master + +### 新增处理语义化版本的宏 +**作用** [语义化版本(Semantic Versioning)](https://semver.org/)是绝大多数软件包采用的版本管理模式。在 spec 编写过程中,经常需要对版本号进行分段处理。为此,新增多个 rpm 宏,以节省打包人员的工作量。 + +- `%version_major` 取得版本号中的 major 部分(`X.Y.Z`中的`X`) +- `%version_minor` 取得版本号中的 minor 部分(`X.Y.Z`中的`Y`) +- `%version_patch` 取得版本号中的 patch 部分(`X.Y.Z`中的`Z`) +- `%version_major_minor` 取得版本号中的 major.minor 部分(`X.Y.Z`中的`X.Y`) +- `%version_pre_release` 取得版本号中的 pre-release 部分(`X.Y.Z-alpha`中的`alpha`) +- `%version_build` 取得版本号中的 build 部分(`X.Y.Z+001`中的`001`) + +打包工程师可以根据实际需要选择使用。 + +**参考链接** + +- https://gitee.com/src-openeuler/openEuler-rpm-config/pulls/289 + + +### 新增体现构建环境中上游包版本的宏 +**作用** 部分场景下,二进制包在运行时会对构建时安装的上游包版本产生强依赖。比如`libxslt`在运行时会检测当前`libxml2`的版本与编译时安装的`libxml2`版本是否为同一分支。为方便打包工程师处理此类情况,增加了名为`%installed_version_of`的宏。使用此宏的主要目的在于,将下游打包工程师从复杂的版本依赖关系书写中解放出来。 + +例: +``` +Requires: openssl-libs >= %{installed_version_of openssl-libs} +# 将在最终的二进制 RPM 中生成下列依赖关系 +# Requires: openssl-libs >= 1:3.0.12 +``` +同时,`%installed_version_of`宏还支持两个参数: + +- `%{installed_version_of -r openssl}`将输出所列包的`RELEASE`字段,从而更加精准地控制依赖关系中上游包的版本。 +- `%{installed_version_of -p bcfversion}`将查询构建环境中包的`Provides`字段。 + +**参考链接** + +- https://gitee.com/src-openeuler/openEuler-rpm-config/pulls/289 -- Gitee