Files
LEANN/MANYLINUX_BUILD_STRATEGY.md
2025-07-25 10:03:57 -07:00

77 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Manylinux Build Strategy
## 问题概述
Colab和许多Linux环境需要`manylinux`兼容的wheels而不是特定于某个Linux发行版的wheels。我们之前的尝试过于复杂试图手动处理所有的依赖关系。
## 新策略
基于社区最佳实践和其他成功项目的经验,我们采用了以下简化方案:
### 1. 使用 cibuildwheel
`cibuildwheel`是PyPA推荐的构建多平台wheels的工具
- 自动处理manylinux环境设置
- 管理不同Python版本的构建
- 提供标准化的测试框架
### 2. 使用 manylinux_2_28
-`manylinux2014`升级到`manylinux_2_28`
- 提供更现代的基础库
- 使用`dnf`而不是`yum`
- 更好地支持现代Python版本
### 3. CMake配置
`pyproject.toml`中添加:
```toml
[tool.scikit-build.cmake.define]
Python_FIND_VIRTUALENV = "ONLY"
Python3_FIND_VIRTUALENV = "ONLY"
```
这帮助CMake在cibuildwheel的虚拟环境中正确找到Python。
### 4. 简化的依赖安装
只安装必要的系统依赖:
- `gcc-c++`
- `boost-devel`
- `zeromq-devel`
- `openblas-devel`
- `cmake`
## 测试策略
1. **手动触发**: 使用`workflow_dispatch`在GitHub Actions上测试
2. **自动测试**: 在`fix/manylinux-*`分支上推送时自动运行
3. **PR测试**: 当PR修改相关文件时自动测试
## 如何使用
### 在本地测试
```bash
# 安装cibuildwheel
pip install cibuildwheel
# 构建wheels
cibuildwheel --platform linux packages/leann-backend-hnsw
```
### 在GitHub Actions测试
1. 推送到`fix/manylinux-compatibility`分支
2. 或手动触发"Test Manylinux Build"工作流
## 下一步
1. **监控CI运行结果**
2. **根据错误调整依赖**
3. **测试生成的wheels在Colab的兼容性**
4. **如果成功将更改合并到main**
## 参考
- [cibuildwheel文档](https://cibuildwheel.readthedocs.io/)
- [manylinux规范](https://github.com/pypa/manylinux)
- [scikit-build-core文档](https://scikit-build-core.readthedocs.io/)