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

1.9 KiB
Raw Blame History

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-devel
  • zeromq-devel
  • openblas-devel
  • cmake

测试策略

  1. 手动触发: 使用workflow_dispatch在GitHub Actions上测试
  2. 自动测试: 在fix/manylinux-*分支上推送时自动运行
  3. PR测试: 当PR修改相关文件时自动测试

如何使用

在本地测试

# 安装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

参考