执行摘要
- 一句话:修复 ROCm Dockerfile 中 AITER git checkout 失败
- 推荐动作:建议快速合并。这是一个清晰的 Docker 构建修复,根因定位准确,改动量极小。
功能与动机
任何从源码构建 docker/rocm.Dockerfile 的流程(如 --build-from-dockerfile、nightly 镜像重建、手动 docker build)在 2026-05-27 后都会因 ROCm/aiter#3370 引入的 .gitattributes 导致 git checkout 失败,报错本地修改会被覆盖。已有预构建镜像不受影响。
实现拆解
- 在 docker/rocm.Dockerfile 中,将 AITER 克隆后的 git checkout 命令添加 -f 标志,变为 git checkout -f ${AITER_COMMIT},强制覆盖由 .gitattributes 行尾规范化导致的脏工作树。
- 添加详细注释说明根因:AITER 的 .gitattributes 将 CSV 文件规范化到 LF,导致 git status 显示修改,checkout 到旧 commit 时 git 拒绝覆盖。
关键文件:
docker/rocm.Dockerfile(模块 部署脚本;类别 infra;类型 infrastructure): 包含 AITER checkout 命令,唯一修改文件。添加 -f 标志以忽略 .gitattributes 导致的脏工作树。
关键符号:未识别
关键源码片段
docker/rocm.Dockerfile
包含 AITER checkout 命令,唯一修改文件。添加 -f 标志以忽略 .gitattributes 导致的脏工作树。
# Use `checkout -f` so the smudge-filter-induced "dirty" working tree from
# AITER's .gitattributes (*.csv text eol=lf, added in ROCm/aiter#3370) does not
# block switching to commits that predate that rule (e.g. the current default
# AITER_COMMIT_DEFAULT). The working tree was just produced by a fresh
# `git clone` above, so there are no real user changes to preserve.
RUN git clone ${AITER_REPO} \
&& cd aiter \
&& git checkout -f ${AITER_COMMIT} \
&& git cherry-pick --no-commit b639cb63bcac4672dce33a731fad042a65cb3649 \
&& git submodule update --init --recursive \
&& pip install -r requirements.txt
评论区精华
无 review 讨论。PR 由 yctseng0211 批准提交。
风险与影响
- 风险:风险极低。改动仅在 git checkout 时增加 -f 标志,且紧跟在 git clone 之后,工作树无用户修改。不会影响已有镜像。
- 影响:仅影响 ROCm Docker 构建流程。修复后所有需要从源码编译 AITER 的构建都能正常通过。
- 风险标记:暂无
关联脉络
- PR #26535 [AMD] force AITER checkout to bypass CSV CRLF/LF smudge dirty state: 相同问题的不同修复变体,该 PR 在非 Docker 的 CI 脚本中处理了同样根因。
参与讨论