| 1 | #!/usr/bin/env bash |
| 2 | set -euxo pipefail |
| 3 | |
| 4 | : "${TARGETARCH:?TARGETARCH must be set}" |
| 5 | : "${TRITON_INSTALL_FROM_SOURCE_REPO:?TRITON_INSTALL_FROM_SOURCE_REPO must be set}" |
| 6 | |
| 7 | TRITON_REVISION="${TRITON_INSTALL_FROM_SOURCE_REVISION:-main}" |
| 8 | TRITON_WORKSPACE="${TRITON_WORKSPACE:-/tmp/triton_from_source_workspace}" |
| 9 | TRITON_SOURCE="${TRITON_WORKSPACE}/src" |
| 10 | TRITON_DIST="${TRITON_WORKSPACE}/dist" |
| 11 | TRITON_BUILD_JOBS="${MAX_JOBS:-$(nproc)}" |
| 12 | |
| 13 | case "${TARGETARCH}" in |
| 14 | amd64) TRITON_LLVM_SYSTEM_SUFFIX=almalinux-x64 ;; |
| 15 | arm64) TRITON_LLVM_SYSTEM_SUFFIX=almalinux-arm64 ;; |
| 16 | *) |
| 17 | echo "Unsupported Triton build architecture: ${TARGETARCH}" >&2 |
| 18 | exit 1 |
| 19 | ;; |
| 20 | esac |
| 21 | export TRITON_LLVM_SYSTEM_SUFFIX |
| 22 | |
| 23 | mkdir -p "${TRITON_DIST}" |
| 24 | git init -q "${TRITON_SOURCE}" |
| 25 | git -C "${TRITON_SOURCE}" remote add origin \ |
| 26 | "${TRITON_INSTALL_FROM_SOURCE_REPO}" |
| 27 | git -C "${TRITON_SOURCE}" fetch --depth=1 origin "${TRITON_REVISION}" |
| 28 | git -C "${TRITON_SOURCE}" checkout -q --detach FETCH_HEAD |
| 29 | git -C "${TRITON_SOURCE}" rev-parse HEAD |
| 30 | |
| 31 | uv pip install --python /opt/venv/bin/python3 \ |
| 32 | -r "${TRITON_SOURCE}/python/requirements.txt" |
| 33 | |
| 34 | TRITON_BUILD_WITH_CCACHE=true \ |
| 35 | MAX_JOBS="${TRITON_BUILD_JOBS}" \ |
| 36 | uv build --python /opt/venv/bin/python3 \ |
| 37 | --wheel \ |
| 38 | --no-build-isolation \ |
| 39 | --out-dir "${TRITON_DIST}" \ |
| 40 | "${TRITON_SOURCE}" |
| 41 | |
| 42 | (cd "${TRITON_DIST}" && sha256sum triton-*.whl > wheel.sha256) |
| 43 | rm -rf "${TRITON_SOURCE}" |