Files
ElyOffice/tasks/reviews/C00.4-r3.md
T

4.9 KiB
Raw Blame History

FAIL

Round-2 defects:

  • lok.sh detach: fixed. Cleanup retries hdiutil detach for up to ten seconds and fails the script if the detach never succeeds. It skips rm -rf while the image is still mounted. Two runs in a row both exited 0 in about 10 s. hdiutil info showed no leftover LibreOffice image afterwards.
  • Skia-off build and build status: fixed. engines/lo-src is at 8221e31, with ENABLE_SKIA=TRUE and SKIA_GPU=METAL in config_host.mk. The build is running (about 38 clang processes). Fact 7 and the status paragraph now say this.
  • md5.c and CFLAGS: fixed. The CFLAGS override is gone. A fresh build has CFLAGS = -g -O2 -W -Wall. The md5.c sentence is now limited to 6dc099a.
  • libetpan fallbacks: partly fixed. The script passes --with-json, the test asserts HAVE_OPENSSL and HAVE_JSON, and json-c is listed. The OpenSSL fallback is still open; see the first entry.
  • mupdf.sh pkcs7 stub: fixed. The script passes HAVE_LIBCRYPTO=yes, and the test runs nm -u and looks for PKCS7_. A fresh build in a scratch tree passed: library sizes 53 940 840 and 9 905 040 bytes, and 17 PKCS7/EVP imports.
  • The doc's "逐条断言" claim: fixed. lok.sh now asserts the dmg size, the three exports and the plugin list. Facts 5 to 8 are given as citations. The cited lines match the source: init.cxx:4277/4348, salvd.hxx:46-50, configure.ac:5950-5952, gdiimpl.cxx:1390-1393, salgdiutils.cxx:112 and SkiaHelper.cxx:256-261.
  • Hunk citations: fixed. The patch is described by the code it changes. It is byte-identical to the diff in engines/lo-src.

What I ran:

  • tests/engines/lok.sh twice: exit 0 both times.
  • tests/engines/mupdf.sh: exit 0, both cached and from a fresh build.
  • tests/engines/libetpan.sh: exit 0, both cached and from a fresh build (86 s).
  • tests/scripts/*.sh and agents_md.py: exit 0.

scripts/build-libetpan.sh:16, :11, :29 — The OpenSSL fallback is still silent, and a TLS-less build gets cached as good.

  • brew --prefix openssl@3 exits 0 and prints /opt/homebrew/opt/openssl@3 even when that formula is not installed. I checked this with brew --prefix libressl, which returned a path that does not exist. So the || { ... exit 1; } branch only runs when Homebrew itself is missing.
  • When OPENSSL_DIR or the brew prefix points at a directory with no OpenSSL, libetpan's configure.ac:227-237 sets with_openssl=no. The build then succeeds, writes PIN, and prints "built libetpan".
  • Line 11 keys the cache on the pin alone, so every later run reuses that build. Scenario: I ran OPENSSL_DIR=/nonexistent tests/engines/libetpan.sh in a scratch tree. The build succeeded, and the test printed "FAIL: libetpan built without TLS". I reran the test with the working Homebrew OpenSSL. The build script printed "ok" from the cache, and the test failed with the same message again. It keeps failing until someone deletes engines/libetpan by hand. The doc's claim at docs/engineering-risks.md:47 that the script fails outright ("缺了脚本直接失败") is false for this case. Fix: before building, require $ssl/include/openssl/ssl.h. After configure, fail if config.h lacks HAVE_OPENSSL or HAVE_JSON, and do so before PIN is written.

docs/engineering-risks.md:27-29 — PRD §23 requires recording the source commit, compile options and patches when a version is chosen ("选择版本时记录源码提交、编译选项和补丁"). R-01 picks a self-built LibreOffice, and the build is already running. Its configure options are recorded nowhere in the repo:

  • They exist only in engines/lo-src/autogen.lastrun, and engines/ is not tracked.
  • There are 32 options, among them --enable-mergelibs, --disable-python, --without-java, --with-lang= and --with-fonts.
  • There is no scripts/build-libreoffice.sh, and the doc does not list the options.
  • How engines/lo-src was created (the clone, the tag, then git apply of the patch) is also unrecorded. Scenario: C07.1 runs on another machine, or engines/ is cleared. Nobody can rebuild the binary that ELY_LOK_EXPECT_TILE=written is meant to verify. lok.sh's plugin-list assertion depends on --enable-mergelibs in a way nobody can trace. Fix: add a scripts/build-libreoffice.sh that clones the pin, applies the patch and runs autogen with the explicit option list. Alternatively, record the exact option list in R-01. Either way, engines/lo-src must be reproducible from the repo.

docs/engineering-risks.md:24 — The doc says the six compile errors come from "该块(:794-810)". In a release build the assert is compiled out. The block at 794-810 accounts for three of the errors: two SkiaHelper uses at :802 and CAMetalLayer at :807. The other three come from a second unguarded block in windowWillExitFullScreen, at :841 (two SkiaHelper uses) and :846 (CAMetalLayer). Scenario: a reader who patches or guards only lines 794-810 still gets three errors. Fix: cite both blocks (:794-810 and :833-849), or cite the error lines themselves.