@@ -24,6 +24,41 @@ RUN MISE_GPG_KEY=24853EC9F655CE80B48E6C3A8B81C9D17413A06D \
2424 MISE_YES=1 mise trust && \
2525 PYTHON_VERSION="${PYTHON_VERSION}" MISE_YES=1 mise run setup
2626
27+ FROM setup AS wheel-install
28+
29+ ENV UV_LINK_MODE=copy
30+
31+ COPY dist/*.whl /tmp/dist/
32+
33+ RUN --mount=type=cache,target=/root/.cache/uv \
34+ wheel_count="$(find /tmp/dist -maxdepth 1 -type f -name '*.whl' | wc -l)" && \
35+ test "${wheel_count}" -eq 1 && \
36+ wheel="$(find /tmp/dist -maxdepth 1 -type f -name '*.whl')" && \
37+ uv --no-config venv --clear --python /usr/local/bin/python /opt/wheel-cpu && \
38+ uv --no-config pip install \
39+ --python /opt/wheel-cpu/bin/python \
40+ --no-sources \
41+ --default-index https://pypi.org/simple \
42+ --index https://download.pytorch.org/whl/cpu \
43+ --index-strategy unsafe-best-match \
44+ "nemo-safe-synthesizer[cpu,engine] @ file://${wheel}" && \
45+ uv --no-config pip check --python /opt/wheel-cpu/bin/python && \
46+ /opt/wheel-cpu/bin/python -c \
47+ "from importlib.metadata import version; from nemo_safe_synthesizer.package_info import __version__; assert __version__ == version('nemo-safe-synthesizer')" && \
48+ /opt/wheel-cpu/bin/safe-synthesizer --help >/dev/null && \
49+ uv --no-config venv --clear --python /usr/local/bin/python /opt/wheel-cu129 && \
50+ uv --no-config pip install \
51+ --python /opt/wheel-cu129/bin/python \
52+ --no-sources \
53+ --dry-run \
54+ --default-index https://pypi.org/simple \
55+ --index https://flashinfer.ai/whl/cu129 \
56+ --index https://download.pytorch.org/whl/cu129 \
57+ --index https://wheels.vllm.ai/ee0da84ab9e04ac7610e28580af62c365e898389/cu129 \
58+ --index-strategy unsafe-best-match \
59+ "nemo-safe-synthesizer[cu129,engine] @ file://${wheel}" && \
60+ rm -rf /opt/wheel-cpu /opt/wheel-cu129
61+
2762FROM setup AS install-deps
2863# Install Python dependencies (cached until pyproject.toml, uv.lock, or src/ or tests/ change)
2964COPY pyproject.toml .
0 commit comments