#!/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."