1.4 KiB
1.4 KiB
FAIL
scripts/build-libetpan.sh:11 — R3 的无 TLS 缓存问题仍可复现。缓存命中只检查 PIN 和 libetpan.a,直接跳过新增的 OpenSSL 与配置检查。实测在隔离目录用锁定源码构建 --without-openssl --with-json 的静态库,保留旧脚本会写入的 PIN 和 BUILD-config.h;随后使用正常 OpenSSL 连续执行两次当前构建脚本,均退出 0 并打印 ok libetpan,两次执行测试均退出 1,报 libetpan built without TLS。因此升级脚本后,R3 已产生的坏缓存仍会永久复用。修复方向:缓存命中前核对 BUILD-config.h 中 HAVE_OPENSSL、HAVE_JSON 均为 1;缺失或不符时使缓存失效并重新构建,加入旧坏缓存的恢复测试。
tests/engines/libetpan.sh:14 — 构建失败的具体诊断被重定向进临时 build.log,退出时第 8 行的 trap 随即删除该文件。实测在无缓存的隔离目录执行 OPENSSL_DIR=/nonexistent tests/engines/libetpan.sh,只收到 FAIL: build failed, see .../build.log,该路径在命令返回后已不存在;直接运行构建脚本才可看到 no OpenSSL headers under /nonexistent。新增前置检查失败以及 configure、编译失败时,指定的复核入口都会丢失错误原因,违反出错即暴露的规则。修复方向:失败时先将构建日志输出到 stderr,再清理临时目录;增加失败路径测试,断言原始诊断可见。