* Studio setup.sh: cope with fresh CUDA toolkits like 13.3 CUDA 13.3 shipped today. Three loose ends in studio/setup.sh surfaced during the llama.cpp build path: 1. setup.ps1 already aborts cleanly when the CUDA toolkit is below llama.cpp's minimum (12.4) via #4517, but setup.sh still hit the generic cmake failure described in #4437. Added a min-version check that downgrades to a CPU build for nvcc < 12.4 with a clear message pointing to the toolkit archive. 2. The first day a new CUDA toolkit ships, its host-compiler whitelist lags whatever gcc/clang the distro is on, so nvcc rejects the host compiler with a wall of "#error -- unsupported GNU version" before any real compile runs. NVCC_PREPEND_FLAGS now carries -allow-unsupported-compiler so the build moves on instead. 3. The Linux CUDA/ROCm configure failure path had no symmetry with the macOS Metal fallback: a single nvcc failure left BUILD_OK=false and no llama.cpp at all. Generalised the existing Metal -> CPU fallback to cover any GPU_BACKEND, so a CUDA configure or build failure now transparently retries with the CPU args and the user still ends up with a working llama-server. Pulled the version probe out into _nvcc_meets_llama_minimum so it can be unit-tested. Added tests/sh/test_nvcc_meets_llama_minimum.sh and two extra cases in tests/sh/test_get_torch_index_url.sh covering the legacy "CUDA Version: 13.3" header (driver-reported) and the future 13.7 case. Wired the new test into tests/run_all.sh and the studio-backend CI workflow. * tests: relax pr4562 regression to allow generic GPU fallback label * studio tests: assert setup.sh exports NVCC_PREPEND_FLAGS=-allow-unsupported-compiler The -allow-unsupported-compiler flag is the core of the fresh-CUDA-toolkit fix (it lets nvcc accept a host gcc/clang newer than its release-time whitelist, so CUDA 13.3 day-one builds do not abort on '#error -- unsupported GNU version'), but it had no automated coverage. Add a source-pattern test asserting the flag is present, delivered via NVCC_PREPEND_FLAGS so it also covers cmake's CUDA compiler-id probe, and kept out of CMAKE_ARGS for bash word-splitting safety. * studio/setup.ps1: allow unsupported host compiler for CUDA build (Windows parity) Mirror the Linux setup.sh headline fix from this PR on Windows. A freshly released CUDA toolkit ships with a host-compiler whitelist that lags the installed toolchain, so nvcc can reject the host with "#error -- unsupported Microsoft Visual Studio version!" before any real compile runs (the MSVC analogue of the gcc wall the Linux side hit on CUDA 13.3). Set NVCC_PREPEND_FLAGS=-allow-unsupported-compiler in the CUDA build branch so both cmake's configure-time CUDA compiler-id probe and the cmake --build step proceed. The flag disables the host version check only and is a no-op when the compiler is already supported. Set via the process environment (not the $CmakeArgs array), after the Refresh-Environment calls that re-sanitize CUDA env vars, and appended idempotently to any value the user already set. Validated with PowerShell 7.6.2: full setup.ps1 AST parse is clean and the snippet is idempotent (empty -> set, existing -> append once, no duplicate). Needs real Windows + CUDA CI to exercise the actual nvcc/MSVC build. Adds test_setup_ps1_exports_allow_unsupported_compiler asserting the flag is present, env-delivered, kept out of $CmakeArgs, and scoped to the CUDA-on branch. * studio: tighten code comments added in this PR Shorten the verbose multi-line comments and test docstrings introduced by this PR (setup.sh, setup.ps1, and the shell/python tests) to be succinct while preserving the rationale. No code or test-assertion changes.
22 lines
743 B
Bash
Executable file
22 lines
743 B
Bash
Executable file
#!/bin/sh
|
|
# Run all installer tests.
|
|
set -e
|
|
|
|
TESTS_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
echo "=== Bash tests ==="
|
|
sh "$TESTS_DIR/sh/test_get_torch_index_url.sh"
|
|
sh "$TESTS_DIR/sh/test_mac_intel_compat.sh"
|
|
sh "$TESTS_DIR/sh/test_torch_constraint.sh"
|
|
sh "$TESTS_DIR/sh/test_nvcc_meets_llama_minimum.sh"
|
|
|
|
echo ""
|
|
echo "=== Python tests ==="
|
|
python -m pytest "$TESTS_DIR/python/test_install_python_stack.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_cross_platform_parity.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_no_torch_filtering.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_studio_import_no_torch.py" -v
|
|
python -m pytest "$TESTS_DIR/python/test_tokenizers_and_torch_constraint.py" -v -k "not e2e"
|
|
|
|
echo ""
|
|
echo "All tests passed."
|