mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-10-31 07:33:32 +08:00
build: fix test-runner-nosan link failure (missing lz4/zstd/nomic objects)
The test-runner-nosan target (used by `make test-leak` on macOS for `leaks --atExit`) failed to link with Undefined symbols: _LZ4_compressBound, _LZ4_compress_HC, _LZ4_decompress_safe, _suite_zstd, _cbm_artifact_import, _PRETRAINED_VECTOR_BLOB. Root cause: OBJS_VENDORED_NOSAN in Makefile.cbm omitted the LZ4/ZSTD/nomic objects that OBJS_VENDORED_TEST includes, and the test-runner-nosan target prerequisites/link line missed $(ZSTD_SRCS). Because the LZ4/ZSTD test objects are compiled with $(SANITIZE) (ASan) and ASan replaces malloc (incompatible with the `leaks` tool), add sanitizer-free NOSAN variants ($(NOSAN_DIR)/lz4.o, lz4hc.o, zstd.o) that mirror the existing NOSAN sqlite3/ts_runtime/lsp_all/ preprocessor objects, plus $(UNIXCODER_OBJ) and $(ZSTD_SRCS). Result: build/c/test-runner-nosan now links; `make test-leak` builds and runs. (A separate runtime hang at dump_verify_io_fork_crash_uncommitted_discarded under `leaks --atExit` — a fork+crash+waitpid/leaks interaction — remains and is tracked separately; it is unrelated to this link fix.) Signed-off-by: Andrew Hundt <ATHundt@gmail.com>
This commit is contained in:
+15
-3
@@ -588,7 +588,8 @@ $(NOSAN_DIR)/sqlite3.o: $(SQLITE3_SRC) | $(NOSAN_DIR)
|
||||
|
||||
OBJS_VENDORED_NOSAN = $(MIMALLOC_OBJ_TEST) $(NOSAN_DIR)/sqlite3.o $(TRE_OBJ_TEST) \
|
||||
$(GRAMMAR_OBJS_NOSAN) $(NOSAN_DIR)/ts_runtime.o \
|
||||
$(NOSAN_DIR)/lsp_all.o $(NOSAN_DIR)/preprocessor.o
|
||||
$(NOSAN_DIR)/lsp_all.o $(NOSAN_DIR)/preprocessor.o \
|
||||
$(NOSAN_LZ4_OBJ) $(NOSAN_ZSTD_OBJ) $(UNIXCODER_OBJ)
|
||||
|
||||
# Vendored LZ4 (test build)
|
||||
LZ4_OBJ_TEST = $(BUILD_DIR)/test_lz4.o $(BUILD_DIR)/test_lz4hc.o
|
||||
@@ -602,6 +603,17 @@ ZSTD_OBJ_TEST = $(BUILD_DIR)/test_zstd.o
|
||||
$(BUILD_DIR)/test_zstd.o: $(CBM_DIR)/vendored/zstd/zstd.c | $(BUILD_DIR)
|
||||
$(CC) -std=c11 -D_DEFAULT_SOURCE -g -O1 $(SANITIZE) -w -I$(CBM_DIR)/vendored/zstd -c -o $@ $<
|
||||
|
||||
# Vendored LZ4/zstd (NOSAN build — sanitizer-free so `leaks --atExit` can walk the
|
||||
# heap on macOS; ASan replaces malloc and is incompatible with the leaks tool).
|
||||
NOSAN_LZ4_OBJ = $(NOSAN_DIR)/lz4.o $(NOSAN_DIR)/lz4hc.o
|
||||
NOSAN_ZSTD_OBJ = $(NOSAN_DIR)/zstd.o
|
||||
$(NOSAN_DIR)/lz4.o: $(CBM_DIR)/vendored/lz4/lz4.c | $(NOSAN_DIR)
|
||||
$(CC) -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR) -c -o $@ $<
|
||||
$(NOSAN_DIR)/lz4hc.o: $(CBM_DIR)/vendored/lz4/lz4hc.c | $(NOSAN_DIR)
|
||||
$(CC) -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR)/vendored/lz4 -c -o $@ $<
|
||||
$(NOSAN_DIR)/zstd.o: $(CBM_DIR)/vendored/zstd/zstd.c | $(NOSAN_DIR)
|
||||
$(CC) -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR)/vendored/zstd -c -o $@ $<
|
||||
|
||||
# nomic-embed-code pretrained vector blob
|
||||
UNIXCODER_OBJ = $(BUILD_DIR)/unixcoder_blob.o
|
||||
$(UNIXCODER_OBJ): $(UNIXCODER_BLOB_SRC) vendored/nomic/code_vectors.bin | $(BUILD_DIR)
|
||||
@@ -616,10 +628,10 @@ $(BUILD_DIR)/test-runner: $(ALL_TEST_SRCS) $(PROD_SRCS) $(EXTRACTION_SRCS) $(AC_
|
||||
$(OBJS_VENDORED_TEST) \
|
||||
$(LDFLAGS_TEST)
|
||||
|
||||
$(BUILD_DIR)/test-runner-nosan: $(ALL_TEST_SRCS) $(PROD_SRCS) $(EXTRACTION_SRCS) $(AC_LZ4_SRCS) $(SQLITE_WRITER_SRC) $(OBJS_VENDORED_NOSAN) | $(BUILD_DIR) $(NOSAN_DIR)
|
||||
$(BUILD_DIR)/test-runner-nosan: $(ALL_TEST_SRCS) $(PROD_SRCS) $(EXTRACTION_SRCS) $(AC_LZ4_SRCS) $(ZSTD_SRCS) $(SQLITE_WRITER_SRC) $(OBJS_VENDORED_NOSAN) | $(BUILD_DIR) $(NOSAN_DIR)
|
||||
$(CC) $(CFLAGS_NOSAN) -o $@ \
|
||||
$(ALL_TEST_SRCS) $(PROD_SRCS) \
|
||||
$(EXTRACTION_SRCS) $(AC_LZ4_SRCS) $(SQLITE_WRITER_SRC) \
|
||||
$(EXTRACTION_SRCS) $(AC_LZ4_SRCS) $(ZSTD_SRCS) $(SQLITE_WRITER_SRC) \
|
||||
$(OBJS_VENDORED_NOSAN) \
|
||||
$(LDFLAGS_NOSAN)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user