#!/bin/bash # shellcheck disable=SC2329 set -e set_max_jobs() { export MAX_JOBS="${MAX_JOBS:-16}" echo "Setting MAX_JOBS to $MAX_JOBS" } PY_BUILDTAG=$(python -c "import sys, sysconfig; print(f'{sysconfig.get_platform()}-{sys.implementation.cache_tag}')") PLATFORM_TAG="${DEEPINFER_ACCELERATOR:-nvidia}-$(uname -m)" BUILD_BASE="build/$PLATFORM_TAG" SO_DST="deepinfer/_so/$PLATFORM_TAG" _build() { set_max_jobs python setup.py build --build-base "$BUILD_BASE" ( set +e set -x shopt -s failglob mkdir -p "$SO_DST" for so in "${BUILD_BASE}/lib.${PY_BUILDTAG}/deepinfer/"*.so; do ln -fs "$(realpath --relative-to="$SO_DST" "$so")" "$SO_DST/" done ) [ -n "$(ls -A "$SO_DST")" ] || { echo "No .so was linked into $SO_DST" >&2; exit 1; } python -m compileall deepinfer -j "$MAX_JOBS" -q } _clean() { set +e set -x rm -rf "$BUILD_BASE" "$SO_DST" rm -f deepinfer/*.so find . -type d -name "__pycache__" -exec rm -rf {} + } case "$1" in build | clean) "_$1" exit 0 ;; *) echo "Unknown command: '$1'" exit 1 ;; esac