38 lines
4.9 KiB
Markdown
38 lines
4.9 KiB
Markdown
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.
|