文档工具与环境准备¶
使用本参考准备维护中的文档环境。已验证构建组合是 Linux x86_64 与 CPython 3.12。本地准备使用 CPython 3.12.14;CI 选择同一补丁版本。文档工具资格不授予固件、硬件或产品资格。
先准备固定源码与递归依赖。清单与工具锁必须来自同一选定源码版本。
准备新 prefix¶
从仓库根目录、在 CPython 3.12 可用的条件下执行:
python3.12 tools/documentation/install.py \
--prefix build/docs-tools --cache build/docs-tool-cache
准备流程可以通过 HTTPS 下载归档。它先验证整个归档闭包,再创建 prefix。wheel 包安装随后使用 --no-index、--find-links 和 --require-hashes;没有传递依赖留给新的在线解析。Native 包在本地解包,不使用 sudo 或系统包安装。
从此前准备的缓存进行独立安装:
python3.12 tools/documentation/install.py \
--prefix build/docs-tools-restored --cache build/docs-tool-cache --offline
预期结果是退出码零,以及新 prefix 中的 installation.json。它记录工具锁摘要、实测版本、内核、解析后的 ELF 闭包、归档摘要、已安装文件摘要与复制许可摘要。安装后的 bin/fc-match 必须从锁定字体包解析 Noto Sans CJK SC。归档缺失、字节变化、命令失败或字体不匹配都会使准备失败,不留下成功 prefix。
已有 prefix 会被拒绝。升级时选择新路径,不得静默改变已经被构建证据引用的安装。缓存归档损坏同样失败,不通过重新下载静默替换。
使用唯一文档 CLI¶
使用准备好的 Python 和显式工具 prefix 运行维护 CLI:
build/docs-tools/venv/bin/python tools/dev/dev.py docs doctor \
--tool-prefix build/docs-tools
build/docs-tools/venv/bin/python tools/dev/dev.py docs check \
--report build/docs-check.json
build/docs-tools/venv/bin/python tools/dev/dev.py docs build \
--tool-prefix build/docs-tools --language all --output build/documentation
build/docs-tools/venv/bin/python tools/dev/dev.py docs package \
--build build/documentation --output ../nexus-documentation-packages
install.environment(prefix) 返回已验证的子进程环境,将锁定执行文件放在 PATH 首位。install.diagnose(prefix) 在报告工具身份前拒绝变化的工具锁、已安装文件或许可。两者均不安装或下载工具。构建必须生成新的 XML 与 HTML;旧成功输出不能补救失败命令。
scripts/tools/docs.py、.sh、.ps1 和 .bat 入口只转发到此 CLI。旧 all、doxygen 和 sphinx 目标都选择同一完整严格构建。已移除的生成修饰选项会被拒绝;包装入口不能创建回退 Doxyfile 或 Sphinx 配置。Windows 与 macOS 包装入口保留 CLI 转发,正式构建仍要求维护中的 Linux 工具组合。
重放 API 移动端布局回归¶
此可选诊断除了已说明的 Sphinx 工具组合,还需要已有的 Chromium 和 Playwright。它不会安装工具。请使用单独准备的浏览器测试环境;正式文档构建和默认 stdlib 测试套件不导入 Playwright。
在仓库根目录执行,并提供已有的浏览器可执行文件:
python tools/documentation/check_browser_layout.py \
--chromium /path/to/chromium --report build/quality/api-layout.json
该工具使用生产主题构建临时的中英文 C API 夹具。在 390 CSS 像素视口下,它检查长签名、未改变的符号和锚点、通过内部滚动保留的完整代码及表格内容,以及未裁切的页面。缺少工具或检查失败时返回非零值。成功记录只验证该夹具和实际观察的浏览器;全站响应式验收和归档验证仍需分别执行。
搜索当前站点¶
中英文搜索页面分别使用本地 Sphinx 索引和当前语言的元数据。中文分词器不依赖外部分词词典,可处理汉字序列和拉丁字符标识符。组合查询时使用空格分隔关键词,例如 借用 排空 或 借用 HAL。
结果展示版本、内容类型、源语言和实际语言,以及正文摘要。搜索资源仅在搜索页面加载。归档链接和原始资格记录保留其冻结的源码与语言范围。
CI 权限边界¶
docs-build.yml 只有 contents: read。它显式准备工具、执行源码检查、构建两种语言、打包离线输出并记录实测任务身份。构建失败时没有成功文档上传。包生产器在源码 checkout 外写入。CI 随后将已验证结果复制到新的忽略上传暂存目录,比较归档摘要,并在已有任务身份门禁前验证复制后的清单与内容文件。该暂存复制不重建或替换原始包。
docs-publish.yml 只为已审查的 docs-delivery 分支运行。其只读任务在上传 Pages 产物前验证已准备的公开字节与发布回执。只有独立部署任务具有 Pages 和 OIDC 写权限,并使用 nexus-documentation 环境。它从不 checkout 或执行外部 pull 请求源码。部署分支规则与实际远程执行仍是必须独立观察的仓库状态。
许可与升级处理¶
每个 Native 归档携带 Debian copyright 文件。锁定 base-files 归档提供 licenses/common-licenses/ 中所有被引用完整文本;共享许可引用缺失时准备会拒绝。wheel 包许可从已验证 wheel 包复制;五个未包含许可文本的上游 wheel 包使用从各自精确已验证源发行包提取并检入的文本。工具锁记录源归档摘要、成员和提取文本摘要。Doxygen 归档携带完整许可。准备将文本复制到 prefix/licenses/;打包保留适用许可内容文件。
升级时审查上游变更与许可,解析一份新的精确闭包,同时更新工具锁与摘要约束,执行新在线准备及独立离线准备,再运行严格双语构建、图示新鲜度、包验证和恢复。保留原始失败与结果;仅更新版本字符串不足以建立验收证据。