fix: prevent pyzmq compilation during tests
- Cap pyzmq version to <27 for manylinux2014 compatibility - Pre-install pyzmq binary wheel before tests using CIBW_BEFORE_TEST - Force pip to use only binary wheels with --only-binary :all:
This commit is contained in:
12
.github/workflows/build-cibuildwheel.yml
vendored
12
.github/workflows/build-cibuildwheel.yml
vendored
@@ -68,6 +68,10 @@ jobs:
|
|||||||
CIBW_BEFORE_ALL_MACOS: |
|
CIBW_BEFORE_ALL_MACOS: |
|
||||||
brew install boost zeromq openblas cmake libomp
|
brew install boost zeromq openblas cmake libomp
|
||||||
|
|
||||||
|
# Pre-install test dependencies to avoid compilation
|
||||||
|
CIBW_BEFORE_TEST: |
|
||||||
|
pip install --only-binary :all: "pyzmq>=23.0.0,<27"
|
||||||
|
|
||||||
# Test command to verify the wheel works
|
# Test command to verify the wheel works
|
||||||
CIBW_TEST_COMMAND: |
|
CIBW_TEST_COMMAND: |
|
||||||
python -c "import leann_backend_hnsw; print('HNSW backend imported successfully')"
|
python -c "import leann_backend_hnsw; print('HNSW backend imported successfully')"
|
||||||
@@ -125,6 +129,10 @@ jobs:
|
|||||||
CIBW_BEFORE_ALL_MACOS: |
|
CIBW_BEFORE_ALL_MACOS: |
|
||||||
brew install boost zeromq openblas cmake libomp
|
brew install boost zeromq openblas cmake libomp
|
||||||
|
|
||||||
|
# Pre-install test dependencies to avoid compilation
|
||||||
|
CIBW_BEFORE_TEST: |
|
||||||
|
pip install --only-binary :all: "pyzmq>=23.0.0,<27"
|
||||||
|
|
||||||
# Test command to verify the wheel works
|
# Test command to verify the wheel works
|
||||||
CIBW_TEST_COMMAND: |
|
CIBW_TEST_COMMAND: |
|
||||||
python -c "import leann_backend_diskann; print('DiskANN backend imported successfully')"
|
python -c "import leann_backend_diskann; print('DiskANN backend imported successfully')"
|
||||||
@@ -132,8 +140,8 @@ jobs:
|
|||||||
# Skip problematic configurations
|
# Skip problematic configurations
|
||||||
CIBW_TEST_SKIP: "*-macosx_arm64" # Skip ARM64 tests on GitHub Actions
|
CIBW_TEST_SKIP: "*-macosx_arm64" # Skip ARM64 tests on GitHub Actions
|
||||||
|
|
||||||
# Test dependencies - install pre-built pyzmq to avoid compilation issues
|
# Test dependencies - avoid pyzmq due to manylinux2014 compatibility issues
|
||||||
CIBW_TEST_REQUIRES: "pytest numpy pyzmq"
|
CIBW_TEST_REQUIRES: "pytest numpy"
|
||||||
|
|
||||||
CIBW_ENVIRONMENT: |
|
CIBW_ENVIRONMENT: |
|
||||||
CMAKE_BUILD_PARALLEL_LEVEL=8
|
CMAKE_BUILD_PARALLEL_LEVEL=8
|
||||||
|
|||||||
41
check_pyzmq_wheels.py
Normal file
41
check_pyzmq_wheels.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Check which pyzmq versions have manylinux2014 wheels available."""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
|
||||||
|
def check_pyzmq_wheels():
|
||||||
|
url = "https://pypi.org/pypi/pyzmq/json"
|
||||||
|
with urllib.request.urlopen(url) as response:
|
||||||
|
data = json.loads(response.read())
|
||||||
|
|
||||||
|
versions_with_manylinux2014 = {}
|
||||||
|
|
||||||
|
for version, releases in data["releases"].items():
|
||||||
|
manylinux_wheels = []
|
||||||
|
for release in releases:
|
||||||
|
filename = release["filename"]
|
||||||
|
if "manylinux2014" in filename or "manylinux_2_17" in filename:
|
||||||
|
if "cp310" in filename: # Python 3.10
|
||||||
|
manylinux_wheels.append(filename)
|
||||||
|
|
||||||
|
if manylinux_wheels:
|
||||||
|
versions_with_manylinux2014[version] = manylinux_wheels
|
||||||
|
|
||||||
|
# Sort versions
|
||||||
|
from packaging.version import parse
|
||||||
|
|
||||||
|
sorted_versions = sorted(
|
||||||
|
versions_with_manylinux2014.keys(), key=parse, reverse=True
|
||||||
|
)
|
||||||
|
|
||||||
|
print("PyZMQ versions with manylinux2014 wheels for Python 3.10:")
|
||||||
|
for version in sorted_versions[:10]: # Show top 10
|
||||||
|
print(f" {version}")
|
||||||
|
for wheel in versions_with_manylinux2014[version]:
|
||||||
|
print(f" - {wheel}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
check_pyzmq_wheels()
|
||||||
@@ -11,7 +11,7 @@ description = "Custom-built HNSW (Faiss) backend for the Leann toolkit."
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"leann-core==0.1.8",
|
"leann-core==0.1.8",
|
||||||
"numpy",
|
"numpy",
|
||||||
"pyzmq>=23.0.0",
|
"pyzmq>=23.0.0,<27", # Cap at 26.x for manylinux2014 compatibility
|
||||||
"msgpack>=1.0.0",
|
"msgpack>=1.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ dependencies = [
|
|||||||
"numpy>=1.20.0",
|
"numpy>=1.20.0",
|
||||||
"tqdm>=4.60.0",
|
"tqdm>=4.60.0",
|
||||||
"psutil>=5.8.0",
|
"psutil>=5.8.0",
|
||||||
"pyzmq>=23.0.0",
|
"pyzmq>=23.0.0,<27", # Cap at 26.x for manylinux2014 compatibility
|
||||||
"msgpack>=1.0.0",
|
"msgpack>=1.0.0",
|
||||||
"torch>=2.0.0",
|
"torch>=2.0.0",
|
||||||
"sentence-transformers>=2.2.0",
|
"sentence-transformers>=2.2.0",
|
||||||
|
|||||||
28
uv.lock
generated
28
uv.lock
generated
@@ -1800,7 +1800,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "leann-backend-diskann"
|
name = "leann-backend-diskann"
|
||||||
version = "0.1.0"
|
version = "0.1.8"
|
||||||
source = { editable = "packages/leann-backend-diskann" }
|
source = { editable = "packages/leann-backend-diskann" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "leann-core" },
|
{ name = "leann-core" },
|
||||||
@@ -1810,39 +1810,57 @@ dependencies = [
|
|||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
{ name = "leann-core", specifier = "==0.1.0" },
|
{ name = "leann-core", specifier = "==0.1.8" },
|
||||||
{ name = "numpy" },
|
{ name = "numpy" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "leann-backend-hnsw"
|
name = "leann-backend-hnsw"
|
||||||
version = "0.1.0"
|
version = "0.1.8"
|
||||||
source = { editable = "packages/leann-backend-hnsw" }
|
source = { editable = "packages/leann-backend-hnsw" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "leann-core" },
|
{ name = "leann-core" },
|
||||||
|
{ name = "msgpack" },
|
||||||
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
||||||
{ name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
{ name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
||||||
|
{ name = "pyzmq" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
{ name = "leann-core", specifier = "==0.1.0" },
|
{ name = "leann-core", specifier = "==0.1.8" },
|
||||||
|
{ name = "msgpack", specifier = ">=1.0.0" },
|
||||||
{ name = "numpy" },
|
{ name = "numpy" },
|
||||||
|
{ name = "pyzmq", specifier = ">=23.0.0" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "leann-core"
|
name = "leann-core"
|
||||||
version = "0.1.0"
|
version = "0.1.8"
|
||||||
source = { editable = "packages/leann-core" }
|
source = { editable = "packages/leann-core" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
{ name = "llama-index-core" },
|
||||||
|
{ name = "msgpack" },
|
||||||
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
||||||
{ name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
{ name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
||||||
|
{ name = "psutil" },
|
||||||
|
{ name = "python-dotenv" },
|
||||||
|
{ name = "pyzmq" },
|
||||||
|
{ name = "sentence-transformers" },
|
||||||
|
{ name = "torch" },
|
||||||
{ name = "tqdm" },
|
{ name = "tqdm" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
|
{ name = "llama-index-core", specifier = ">=0.12.0" },
|
||||||
|
{ name = "msgpack", specifier = ">=1.0.0" },
|
||||||
{ name = "numpy", specifier = ">=1.20.0" },
|
{ name = "numpy", specifier = ">=1.20.0" },
|
||||||
|
{ name = "psutil", specifier = ">=5.8.0" },
|
||||||
|
{ name = "python-dotenv", specifier = ">=1.0.0" },
|
||||||
|
{ name = "pyzmq", specifier = ">=23.0.0" },
|
||||||
|
{ name = "sentence-transformers", specifier = ">=2.2.0" },
|
||||||
|
{ name = "torch", specifier = ">=2.0.0" },
|
||||||
{ name = "tqdm", specifier = ">=4.60.0" },
|
{ name = "tqdm", specifier = ">=4.60.0" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user