1.9 KiB
1.9 KiB
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中添加:
[tool.scikit-build.cmake.define]
Python_FIND_VIRTUALENV = "ONLY"
Python3_FIND_VIRTUALENV = "ONLY"
这帮助CMake在cibuildwheel的虚拟环境中正确找到Python。
4. 简化的依赖安装
只安装必要的系统依赖:
gcc-c++boost-develzeromq-developenblas-develcmake
测试策略
- 手动触发: 使用
workflow_dispatch在GitHub Actions上测试 - 自动测试: 在
fix/manylinux-*分支上推送时自动运行 - PR测试: 当PR修改相关文件时自动测试
如何使用
在本地测试
# 安装cibuildwheel
pip install cibuildwheel
# 构建wheels
cibuildwheel --platform linux packages/leann-backend-hnsw
在GitHub Actions测试
- 推送到
fix/manylinux-compatibility分支 - 或手动触发"Test Manylinux Build"工作流
下一步
- 监控CI运行结果
- 根据错误调整依赖
- 测试生成的wheels在Colab的兼容性
- 如果成功,将更改合并到main