Skip to content

frontend: 后端装载名/目录平台感知(macOS 修复 connect 恒 NULL) - #18

Merged
miaobyte merged 3 commits into
mainfrom
fix/macos-backend-load
Sep 12, 2026
Merged

miaobyte merged 3 commits into
mainfrom
fix/macos-backend-load

Conversation

@miaobyte

Copy link
Copy Markdown
Contributor

问题

macOS 上 所有 DSN 的 kvspaceConnect 都返回 NULL

  1. backend_soname() 硬编码 libkvspace-c.so.1 / libkvspace_durable.so.1,而 macOS 上 CMake 产出的是 .dylib(版本号在中间:libkvspace-c.1.dylib
  2. backend_path() 默认目录硬编码 /usr/lib/kvspace,而 macOS 只能装 /usr/local/lib/kvspace/usr 受 SIP 保护)

两者叠加 → dlopen 必然失败 → 前端直接 return NULL

修法

__APPLE__ 分支取平台名与平台目录:

shm://            → libkvspace-c.dylib        (macOS)  / libkvspace-c.so.1        (Linux)
其余(redis/fs/s3) → libkvspace_durable.dylib  (macOS)  / libkvspace_durable.so.1  (Linux)
默认目录           → /usr/local/lib/kvspace    (macOS)  / /usr/lib/kvspace         (Linux)

KVSPACE_BACKEND_PATH 覆盖能力保留;Linux 行为不变(本地实测 shm://fs:// 两条 DSN 均 connect 成功)。

🤖 Generated with Claude Code

miaobyte and others added 3 commits September 12, 2026 19:58
macOS 上 kvspaceConnect 必然返回 NULL:
- backend_soname 硬编码 libkvspace-c.so.1 / libkvspace_durable.so.1,
  而 macOS 产物是 .dylib
- backend_path 默认目录硬编码 /usr/lib/kvspace,而 macOS 装
  /usr/local/lib/kvspace(/usr 受 SIP 保护)

改为按 __APPLE__ 分支取 .dylib 与 /usr/local/lib/kvspace;
KVSPACE_BACKEND_PATH 覆盖能力保留。Linux 行为不变(本地实测
shm:// 与 fs:// 两条 DSN 均 connect 成功)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
macOS CI 原来只构建本仓(无后端),测不出 frontend 的 dlopen 平台差异。
补:源码构建 blockmalloc / slotsboxmalloc / kvspace-c 装 /usr/local,
再实际 kvspaceConnect("shm://…") 断言非 NULL。

Co-Authored-By: Claude Code <noreply@anthropic.com>
libkvspace 装在 /usr/local/lib/kvspace,测试程序自身加载它失败
(@rpath/libkvspace.1.dylib)。fallback 路径补上该目录;后端依赖的
libblockmalloc 仍走 /usr/local/lib。

Co-Authored-By: Claude Code <noreply@anthropic.com>
@miaobyte
miaobyte merged commit a8fd9de into main Sep 12, 2026
4 checks passed
@miaobyte
miaobyte deleted the fix/macos-backend-load branch September 12, 2026 12:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant