Skip to content

新增环境信息参数、info 访问层与仓库 URL 集中化 (Add --info flag, info access layer and centralized repository URLs) - #295

Open
dongly wants to merge 1 commit into
RT-Thread:masterfrom
dongly:show-version-squashed
Open

新增环境信息参数、info 访问层与仓库 URL 集中化 (Add --info flag, info access layer and centralized repository URLs)#295
dongly wants to merge 1 commit into
RT-Thread:masterfrom
dongly:show-version-squashed

Conversation

@dongly

@dongly dongly commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

概述

本 PR 拆分自 #271

本 PR 为 env 工具新增 --info 参数显示环境信息横幅,激活脚本增加欢迎信息,
并将打包元数据整合至 pyproject.toml(分发名 rt-env),版本号与描述统一由
env.json 单源提供。同时将 version.py 更名为 info.py 并扩展为 env.json 的
唯一访问层:仓库 URL、镜像与分支信息全部集中到 env.json,代码中的硬编码 URL
改由访问器读取。

变更明细

领域 变更内容
命令行 新增 --info 参数:输出环境信息横幅(ENV_ROOT / PKGS_ROOT / RTT_ROOT / BSP_ROOT / RT-Thread 版本);argparse 程序名固定为 rt-env,usage 不再显示 venv 启动器全路径
激活脚本 env.sh / env.ps1 激活成功后显示欢迎信息(rt-env --info,命令存在才显示);env.sh 使用 POSIX 兼容重定向
访问层 version.py 更名为 info.py,扩展为 env.json 唯一访问层:get_name/get_version/get_descriptionget_source() 返回原子对 Source(url, branch)(选镜像整组切换,杜绝主源 URL 配镜像分支)、子模块镜像模板与服务端点访问器;DEFAULTS 兜底只保底主源,镜像仅来自 env.json,未配置时回退主源;未知仓库名/缺 url 响亮报错
env.json 新增 repositories(env/sdk/packages,各自 url+branch+可选 mirror{url, branch},镜像分支可与主源不同)、submodule_mirrors({name} 占位模板)、apis;删除无消费方的 repository 死键
URL 集中化 upgrade/update/utils/statistics 中的硬编码 URL 全部经由访问器读取;packages/env 升级不再查询镜像服务器,env.json 唯一裁决;Kconfig→IP→时区镜像决策链与软件包级查询保持不变
打包 分发元数据全部迁入 pyproject.toml:分发名 rt-env、6 个控制台入口(含 webui)、完整包映射(含 env.plugins.*);author/license/urls 保留;requires-python >= 3.7(setuptools>=61 构建后端要求);setup.py 精简为动态 version/description 提供者;依赖新增 pyyaml
杂项 行尾策略切换 LF(*.bat/*.cmd/*.ps1 保持 CRLF);.gitignore 忽略本地 OMO 状态目录

输出

# 非 RT-Thread 目录

===================================================================
    Welcome to RT-Thread Env Tool v2.0.2
===================================================================
Environment Information:
  - ENV_ROOT : D:\rt-env-test
  - PKGS_ROOT: D:\rt-env-test\packages
===================================================================

# 有 RT-Thread 目录
===================================================================
    Welcome to RT-Thread Env Tool v2.0.2
===================================================================
Environment Information:
  - ENV_ROOT : D:\rt-env-test
  - PKGS_ROOT: D:\rt-env-test\packages
  - RTT_ROOT : D:\Develop\bcs12_src\rt-thread
  - BSP_ROOT : D:\Develop\bcs12_src
  - RT-Thread Version: 5.2.2
===================================================================

Linux 实际输出:

# 非 RT-Thread 目录
$ source ~/.env/env.sh
===================================================================
    Welcome to RT-Thread Env Tool v2.0.2
===================================================================
Environment Information:
  - ENV_ROOT : /home/dongly/.env
  - PKGS_ROOT: /home/dongly/.env/packages
===================================================================

# 有 RT-Thread 目录
$ source ~/.env/env.sh
===================================================================
    Welcome to RT-Thread Env Tool v2.0.2
===================================================================
Environment Information:
  - ENV_ROOT : /home/dongly/.env
  - PKGS_ROOT: /home/dongly/.env/packages
  - RTT_ROOT : /home/dongly/bcs12_src/rt-thread
  - BSP_ROOT : /home/dongly/bcs12_src
  - RT-Thread Version: 5.2.2
===================================================================

访问层实际返回:

>>> info.get_source('packages')
Source(url='https://github.com/RT-Thread/packages.git', branch='master')
>>> info.get_source('sdk', use_mirror=True)
Source(url='https://gitee.com/RT-Thread-Mirror/sdk.git', branch='master')
>>> get_mirror_giturl('lwip')
'https://gitee.com/RT-Thread-Mirror/submod_lwip.git'
>>> get_esp_mirror_giturl('unity')
'https://gitee.com/esp-submodules/Unity.git'

行为对比

命令 master 本 PR
rt-env -v 单行版本号 完全不变 ✅
rt-env --info —(新增) 环境信息横幅 + 旧版本警告
激活(env.sh / env.ps1) 静默 欢迎横幅
逻辑仓库升级 URL 硬编码 + 镜像服务器 API env.json 唯一裁决
pip install Python 下限 3.6 3.7(构建后端要求)
pip install 分发名 env rt-env(import 包名 env.* 不变)

兼容性

  • -v/--version 输出与 master 逐字节一致;子命令集不变
  • wheel 内容与 master 基线产物完全一致(109 个文件,含 webui 静态资源与插件包)
  • Python import 包名 env.* 不变,仅分发名变更
  • 镜像决策链、软件包级镜像查询、引导脚本(touch_env.* / install_*)均保持不动
  • env.json 缺失或损坏时回退内置主源默认值(访问器仍可用)

验证

  • 命令行矩阵:-v--info--info <子命令> 短路、-h、无效子命令、无参数帮助
  • 激活脚本:激活后显示横幅;venv 缺失时正确跳过;bash -nbash --posix -n 语法检查通过
  • info.py 兜底矩阵:env.json 缺失 / 损坏 / 单字段缺失
  • info 访问层 14 个单元测试(含 DEFAULTS 与出厂 env.json 漂移钉扎、镜像分支继承、未知配置响亮报错)
  • 全量测试 149 个,仅 1 个与本 PR 无关的既有失败(test_env_venv urlopen mock 漂移)
  • 打包端到端:构建 wheel 并装入一次性 venv——importlib.metadatart-env
    解析 2.0.2、6 个控制台入口全部生成、包与数据文件完整
  • 已在真实 Windows 环境部署验证(rt-env --info 横幅实际生效)
  • 已在真实 Linux 环境部署验证(source ~/.env/env.sh 横幅实际生效,见上方输出)

@BernardXiong

Copy link
Copy Markdown
Member

可否给一个实际输出情况?

@dongly

dongly commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

已更新实际输出

@dongly
dongly force-pushed the show-version-squashed branch from 8f369ba to 15aecb7 Compare September 12, 2026 03:28
@dongly dongly changed the title 新增环境信息参数并整合打包元数据 (Add env info flag and consolidate packaging metadata) 新增环境信息参数、info 访问层与仓库 URL 集中化 (Add --info flag, info access layer and centralized repository URLs) Sep 12, 2026
@dongly

dongly commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

已更新为最终实现:在原有 --info / 打包整合基础上合入 version.py→info.py 重命名、env.json 仓库 URL 集中化(repositories / submodule_mirrors / apis)与行尾 LF 策略,squash 重新提交,PR 描述同步更新。

@dongly
dongly force-pushed the show-version-squashed branch from 15aecb7 to e7b09e5 Compare September 12, 2026 03:35
@dongly

dongly commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

补充修正:License 元数据更正为 GPL-2.0-or-later(旧 setup.py 误写 Apache License 2.0,仓库 LICENSE 实为 GNU GPL v2)

@dongly
dongly force-pushed the show-version-squashed branch from e7b09e5 to 01305c8 Compare September 12, 2026 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants