fix(test): 回归脚本输出目录候选补 *_mlir 变体,修单端 MLIR 下 exe 定位失败

单端 MLIR 后 OutputDir = {BuildDir}/output_mlir(Config.mlir_dir_suffix()),
但 SequentialRegressionTest.find_output_dirs 与 regression_test 只探
output/ 与 .tpv_build/output,导致编译成功却报"未找到可执行文件"
(MLIRLiteTest 实测)。两处补 *_mlir 变体并优先探测(旧 output/ 可能
残留同名旧 exe)。
This commit is contained in:
TermiNexus committed 2026-10-04 20:54:56 +08:00
1 parent 209e8ed72e
commit fb8b56f2f1
2 files changed
+25 -4

No files matched your search

+8 -1
View File
@@ -110,19 +110,26 @@ def find_output_dirs(proj_dir, proj_config):
- {output_dir}(默认 output,TPC/旧布局)
- {build_dir}/{output_dir}(build_dir 默认 .tpv_build)
- {build_dir}/output(TPV 布局:.tpv_build/output)
- 以上各项的 *_mlir 变体(单端 MLIR 布局:OutputDir = {BuildDir}/output_mlir,
见 TransPyV/App/lib/Projectrans/Config.vp 的 mlir_dir_suffix())
保序去重返回。
注意:ZlibDbg 等项目的 project.json 既无 output_dir 也无 build_dir,
此时必须仍把 .tpv_build/output 纳入候选,否则 TPV 编译成功的 exe
定位不到(报"无可执行二进制文件")。
单端 MLIR 后 exe 落在 {BuildDir}/output_mlir(非 output),且旧 LLVM 布局
的 output/ 可能残留同名旧 exe,故 *_mlir 变体**优先**探测。
"""
od = proj_config.get('output_dir') or 'output'
bd = proj_config.get('build_dir') or '.tpv_build'
dirs = [
# 单端 MLIR 目录后缀(与 Config.mlir_dir_suffix() 同口径,当前恒为 "_mlir")
mlir_suf = '_mlir'
base = [
os.path.abspath(os.path.join(proj_dir, od)),
os.path.abspath(os.path.join(proj_dir, bd, od)),
os.path.abspath(os.path.join(proj_dir, bd, 'output')),
]
dirs = [d + mlir_suf for d in base] + base
seen = set()
uniq = []
for d in dirs:
+17 -3
View File
@@ -230,9 +230,23 @@ def main():
proj_config = json.load(f)
except Exception:
continue
output_dir = os.path.join(proj_dir, proj_config.get('output_dir', './output'))
output_dir = os.path.abspath(output_dir)
for exe in find_executables(output_dir):
# 候选输出目录:兼容 TPC/旧 LLVM 布局(output)与单端 MLIR 布局
# (OutputDir = {BuildDir}/output_mlir,见 Config.mlir_dir_suffix())。
# 旧 output/ 可能残留同名旧 exe,故 *_mlir 变体优先探测。
od = proj_config.get('output_dir') or 'output'
bd = proj_config.get('build_dir') or '.tpv_build'
base_dirs = [
os.path.join(proj_dir, od),
os.path.join(proj_dir, bd, od),
os.path.join(proj_dir, bd, 'output'),
]
exes = []
for d in [os.path.abspath(x) + '_mlir' for x in base_dirs] \
+ [os.path.abspath(x) for x in base_dirs]:
exes = find_executables(d)
if exes:
break
for exe in exes:
run_tasks.append((name, exe))
print(f"找到 {len(run_tasks)} 个可执行文件\n")