Skip to content

fix(os-skills,tokenless): add Provides: anolisa-component() to RPM spec - #2576

Merged
kongche-jbw merged 1 commit into
mainfrom
fix/os-skills-tokenless-missing-provides
Aug 15, 2026
Merged

fix(os-skills,tokenless): add Provides: anolisa-component() to RPM spec#2576
kongche-jbw merged 1 commit into
mainfrom
fix/os-skills-tokenless-missing-provides

Conversation

@zhangtaibo

Copy link
Copy Markdown
Collaborator

问题

Fixes #2575 (partial — covers os-skills and tokenless)

anolisa upgrade --assume-yes returns status: blocked because os-skills and tokenless RPM spec files are missing Provides: anolisa-component(<name>). When the repo-side component index is unavailable (HTTP 404), the resolver falls through to RPM Provides — but finds no anolisa-component(...) capability for these 2 packages.

修复

+Provides:       anolisa-component(os-skills)        # src/os-skills/os-skills.spec.in
+Provides:       anolisa-component(tokenless)        # src/tokenless/tokenless.spec.in

验证

# On ECS (ALinux 4, anolisa 0.3.1, anolisa main a50e34de):
cd /root/anolisa && git apply patch && bash scripts/rpm-build.sh os-skills  # exit=0
bash scripts/rpm-build.sh tokenless  # exit=0
rpm -qp --provides scripts/rpmbuild/RPMS/noarch/os-skills-*.rpm | grep anolisa-component
# → anolisa-component(os-skills)
rpm -qp --provides scripts/rpmbuild/RPMS/x86_64/tokenless-*.rpm | grep anolisa-component
# → anolisa-component(tokenless)

两个 RPM 均构建成功,rpm -qp --provides 包含 anolisa-component(<name>)

Co-Authored-By: Claude noreply@anthropic.com

os-skills.spec.in and tokenless.spec.in were missing the
Provides: anolisa-component(<name>) declaration that other components
(agentsight, cosh-ng) already carry. Without this virtual provide,
anolisa upgrade/install cannot resolve these components via RPM
Provides lookup when the repo-side component index is unavailable.

Fixes #2575 (partial — covers os-skills and tokenless)

@qoderai qoderai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

本次审查范围内未发现需要修改的问题。


🤖 Generated by QoderView workflow run

@Forrest-ly Forrest-ly left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

总体评价

本次审查仅覆盖 tokenless 组件部分(src/tokenless/tokenless.spec.in,+1 行)。该改动在 spec 中补充 Provides: anolisa-component(tokenless) 虚拟能力声明,能力名与 resolver 的构造逻辑及组件清单声明完全一致,与既有组件(agentsight/cosh-ng/skillfs/copilot-shell)的惯例统一,改动最小、正确,且已经过实际 RPM 构建验证。

src/os-skills/os-skills.spec.in 非 tokenless 组件文件,不在本审查范围内,未审查。)

审查结论

approve

详细意见

🔴 必须修改(阻塞合并)

无。

🟡 建议修改(不阻塞但推荐)

  • [scripts/rpm-build.sh:440 build_tokenless()] 目前构建脚本仅对 cosh-ng 做了 Provides: anolisa-component(...) 与 component.toml 安装的构建期强校验(rpm-build.sh:825-834 的 grep -Fqx 检查),tokenless 没有同类防护。若后续有人误删/改错该行,构建不会失败,只会在 anolisa upgrade 的 Provides 回退路径上再次暴露为运行期问题。建议作为后续跟进项,为 tokenless 增加同样的构建期校验(本次 PR 不必扩大范围)。

🟢 值得肯定

  • 能力名精确对齐消费方:与 resolver 的构造逻辑 anolisa-component({component})src/anolisa/crates/anolisa-cli/src/resolution.rs:644 rpm_component_provide)及组件清单中 rpm backend 的 provides = "anolisa-component(tokenless)"src/anolisa/manifests/components-v2.toml:125)逐字匹配;与 agentsight.spec.in:20、cosh-ng.spec.in:21、skillfs.spec.in:26、copilot-shell.spec.in:18 的既有惯例一致,且全仓库无其他包提供同名能力,无歧义冲突。
  • 位置与格式得当:新行位于运行时依赖块(tokenless.spec.in:33,紧随 Requires: 之后),16 列对齐与其他 tag 一致,与 rpm-build.sh 中 cosh-ng 校验所用的精确行格式相同。
  • 补齐了回退链路的最后一环:tokenless 的组件契约(component.toml 安装与 %files 归属,tokenless.spec.in:150-152、248、278)此前已完备,本 PR 恰好补上 repo 侧组件索引不可用(HTTP 404)时 RPM Provides 回退所缺的声明;清单侧 legacy_adopt = true 也保证存量旧 RPM(无此 Provides)仍可被正确识别,前后向兼容均无问题。
  • 验证充分:PR 描述附带了 ECS 上的实际构建验证(bash scripts/rpm-build.sh tokenless exit=0)与 rpm -qp --provides 输出证据;纯新增 Provides 声明,不改变任何既有行为,风险极低。
  • 未在两个版本之间单独加 %changelog 条目,符合仓库惯例(同类独立 spec 修复如 6c115ae、917f151 均在下次版本 bump 时统一归入 changelog)。

@Forrest-ly Forrest-ly left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review 通过(APPROVE)。

审查范围: 52587cf — 2 files, +2/-0(src/os-skills/os-skills.spec.in、src/tokenless/tokenless.spec.in)

正确性

  • 两条 Provides: anolisa-component(<name>) 均位于 spec preamble(%description 之前),位置正确;两个 spec 均无 %package 子包,主包声明即可覆盖整个包。
  • 能力名与 resolver 期望完全一致:crates/anolisa-platform/src/rpm_query.rs 以字面量 anolisa-component(tokenless) 查询 what_provides;os-skills 与 src/os-skills/component.toml 中 name = "os-skills" / rpm package 名一致。
  • 格式与 agentsight / cosh-ng spec 中已有的同类声明一致(对齐、命名规范相同)。
  • PR 描述附带真实环境 RPM 构建 + rpm -qp --provides 验证输出,结论可信。

安全性 / 性能: 纯 spec 元数据变更,无影响。

注意(非阻塞): 与 #2568 在 src/tokenless/tokenless.spec.in 上存在重叠 —— #2568 也添加同一行 Provides: anolisa-component(tokenless),但插入位置不同(Summary 之后 vs 本 PR 的 Requires 块之后)。两 PR 先后合入时 git 预计可干净合并,但 spec 中会出现重复的 Provides 行。#2568 当前为 REQUEST_CHANGES 状态,建议先合入本 PR,待 #2568 更新时删除其 tokenless hunk(仅保留 ws-ckpt 部分)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:skill src/os-skills/ component:tokenless src/tokenless/

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Nightly][anolisa] bug: anolisa upgrade blocked — 5 spec.in files missing Provides: anolisa-component(<name>)

3 participants