|
| 1 | +REPO_ROOT := $(abspath ..) |
| 2 | +CARGO_TARGET_DIR ?= ../target |
| 3 | +MANYLINUX_IMAGE ?= quay.io/pypa/manylinux_2_28_x86_64 |
| 4 | +MANYLINUX_PYTHON ?= /opt/python/cp310-cp310/bin/python |
| 5 | +AUDITWHEEL_PLAT ?= manylinux_2_28_x86_64 |
| 6 | +RUST_TOOLCHAIN ?= 1.88.0 |
| 7 | +DOCKER_PLATFORM_ARG := $(if $(MANYLINUX_PLATFORM),--platform $(MANYLINUX_PLATFORM),) |
| 8 | +DOCKER_USER ?= $(shell id -u):$(shell id -g) |
| 9 | + |
1 | 10 | build-debug: |
2 | 11 | cargo build |
3 | | - cp ../target/debug/libboltz_client.so ./python/ |
4 | | - cargo run generate --language python --no-format --library ../target/debug/libboltz_client.so --out-dir python/ |
| 12 | + cp $(CARGO_TARGET_DIR)/debug/libboltz_client.so ./python/ |
| 13 | + cargo run generate --language python --no-format --library $(CARGO_TARGET_DIR)/debug/libboltz_client.so --out-dir python/ |
5 | 14 |
|
6 | 15 | build-release: |
7 | 16 | cargo build --release |
8 | 17 | cargo build # Also build debug for uniffi to read metadata |
9 | | - cp ../target/release/libboltz_client.so ./python/ |
10 | | - cargo run generate --language python --no-format --library ../target/debug/libboltz_client.so --out-dir python/ |
| 18 | + cp $(CARGO_TARGET_DIR)/release/libboltz_client.so ./python/ |
| 19 | + cargo run generate --language python --no-format --library $(CARGO_TARGET_DIR)/debug/libboltz_client.so --out-dir python/ |
11 | 20 |
|
12 | 21 | build-python: build-release |
13 | 22 | cd python && uv build |
14 | 23 |
|
15 | | -prepare-release-python: build-python |
16 | | - cd python && \ |
17 | | - uvx auditwheel repair dist/*-py3-none-any.whl --wheel-dir dist/ && \ |
18 | | - rm dist/*-py3-none-any.whl && \ |
19 | | - uv run --isolated --no-project --with dist/*.whl python -c "import boltz_client" && \ |
20 | | - uv run --isolated --no-project --with dist/*.tar.gz python -c "import boltz_client" |
| 24 | +build-python-manylinux: |
| 25 | + docker run --rm $(DOCKER_PLATFORM_ARG) \ |
| 26 | + --user "$(DOCKER_USER)" \ |
| 27 | + -e HOME=/tmp/boltz-build-home \ |
| 28 | + -e CARGO_HOME=/tmp/boltz-cargo \ |
| 29 | + -e RUSTUP_HOME=/tmp/boltz-rustup \ |
| 30 | + -e CARGO_TARGET_DIR=/tmp/boltz-target \ |
| 31 | + -e UV_CACHE_DIR=/tmp/boltz-uv-cache \ |
| 32 | + -e PYTHON_BIN="$(MANYLINUX_PYTHON)" \ |
| 33 | + -e AUDITWHEEL_PLAT="$(AUDITWHEEL_PLAT)" \ |
| 34 | + -e RUST_TOOLCHAIN="$(RUST_TOOLCHAIN)" \ |
| 35 | + -v "$(REPO_ROOT):/io" \ |
| 36 | + -w /io/bindings \ |
| 37 | + "$(MANYLINUX_IMAGE)" \ |
| 38 | + bash scripts/build-python-manylinux.sh |
| 39 | + |
| 40 | +prepare-release-python: build-python-manylinux |
21 | 41 |
|
22 | 42 | format-python: |
23 | 43 | # Also formats Python tests |
|
0 commit comments