68 lines
1.7 KiB
Bash
68 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
# Runs inside quay.io/pypa/manylinux_2_28_x86_64 with the repo mounted at /src.
|
|
# Builds one Nuitka wheel per CPython ABI listed in ORISYS_PYTHON_TAGS.
|
|
set -euo pipefail
|
|
|
|
TARGET="${ORISYS_BUILD_TARGET:-pypi-linux}"
|
|
# Comma-separated manylinux tags, e.g. "cp310-cp310,cp311-cp311,cp312-cp312"
|
|
PYTHON_TAGS="${ORISYS_PYTHON_TAGS:-cp310-cp310,cp311-cp311,cp312-cp312}"
|
|
|
|
cd /src
|
|
|
|
echo "=== manylinux entrypoint ==="
|
|
echo "Target: ${TARGET}"
|
|
echo "Python tags: ${PYTHON_TAGS}"
|
|
uname -a
|
|
|
|
IFS=',' read -r -a TAG_ARRAY <<< "${PYTHON_TAGS}"
|
|
FAILED=0
|
|
BUILT=()
|
|
|
|
for tag in "${TAG_ARRAY[@]}"; do
|
|
tag="$(echo "${tag}" | tr -d '[:space:]')"
|
|
if [[ -z "${tag}" ]]; then
|
|
continue
|
|
fi
|
|
|
|
PYBIN="/opt/python/${tag}/bin"
|
|
if [[ ! -x "${PYBIN}/python" ]]; then
|
|
echo "[ERROR] Python not found for tag ${tag}: ${PYBIN}/python" >&2
|
|
FAILED=1
|
|
continue
|
|
fi
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo "Building orisys wheel: ${tag}"
|
|
echo "Python: $("${PYBIN}/python" -V)"
|
|
echo "========================================"
|
|
|
|
export PATH="${PYBIN}:${PATH}"
|
|
export PYTHONPATH="/src/src${PYTHONPATH:+:${PYTHONPATH}}"
|
|
|
|
"${PYBIN}/python" -m pip install -q --upgrade pip setuptools wheel auditwheel
|
|
|
|
if "${PYBIN}/python" build/build_nuitka.py --target "${TARGET}"; then
|
|
BUILT+=("${tag}")
|
|
else
|
|
echo "[ERROR] Build failed for ${tag}" >&2
|
|
FAILED=1
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "=== Build artifacts ==="
|
|
ls -la /src/dist/repaired/ || true
|
|
ls -la /src/SDK/*/ || true
|
|
|
|
if [[ ${#BUILT[@]} -gt 0 ]]; then
|
|
echo "Built tags: ${BUILT[*]}"
|
|
fi
|
|
|
|
if [[ "${FAILED}" -ne 0 ]]; then
|
|
echo "[ERROR] One or more Python ABI builds failed." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[SUCCESS] All requested manylinux wheels built."
|