#!/bin/bash
set -e
detect_mindspeed_root() {
if [ -f /workspace/setup.py ] && grep -q "mindspeed" /workspace/setup.py 2>/dev/null; then
echo "/workspace"
return
fi
local found
found=$(find /workspace -maxdepth 5 -name setup.py -exec grep -l "mindspeed" {} \; 2>/dev/null | head -1)
if [ -n "$found" ]; then
dirname "$found"
return
fi
echo "/workspace"
}
MINDSPEED_ROOT=$(detect_mindspeed_root)
echo ">>> Detected MindSpeed root: ${MINDSPEED_ROOT}"
echo "=== [1/6] Sourcing CANN environment ==="
source /usr/local/Ascend/ascend-toolkit/set_env.sh
if [ -f /usr/local/Ascend/nnal/atb/set_env.sh ]; then
source /usr/local/Ascend/nnal/atb/set_env.sh
fi
ARCH=$(uname -m)
PIP_EXTRA="--extra-index-url https://mirrors.aliyun.com/pypi/simple/"
if [ "$ARCH" = "x86_64" ]; then
PIP_EXTRA="--extra-index-url https://download.pytorch.org/whl/cpu/"
fi
echo ">>> Using pip mirror: ${PIP_EXTRA}"
echo "=== [3/6] Installing Python dependencies ==="
cd "${MINDSPEED_ROOT}"
pip install ${PIP_EXTRA} -r requirements.txt
echo "=== [4/6] Installing MindSpeed (editable mode) ==="
pip install ${PIP_EXTRA} -e "${MINDSPEED_ROOT}"
echo "=== [5/6] Installing pre-commit hooks ==="
if [ -f "${MINDSPEED_ROOT}/.pre-commit-config.yaml" ]; then
cd "${MINDSPEED_ROOT}"
pre-commit install --install-hooks
echo "Pre-commit hooks installed."
else
echo "No .pre-commit-config.yaml found at ${MINDSPEED_ROOT}, skipping."
fi
echo "=== [6/6] Symlinking gitleaks for pre-commit hook ==="
ln -sf /usr/local/bin/gitleaks "${MINDSPEED_ROOT}/gitleaks"
echo "${MINDSPEED_ROOT}" > /tmp/.mindspeed_root
echo ""
echo "============================================"
echo " MindSpeed dev container is ready!"
echo " Root: ${MINDSPEED_ROOT}"
echo " CANN: ${ASCEND_HOME_PATH}"
NPU_OK=$(python3 -c "import torch_npu; print(torch_npu.npu.is_available())" 2>/dev/null || echo "check after CANN source")
echo " NPU: ${NPU_OK}"
echo "============================================"