-
Stefy Lanza (nextime / spora ) authored
cutlet, XTTS's Japanese phonemiser, pulls mojimoji — a C++ extension with no cp313 wheel, so it compiles when the isolated TTS venv is built. The build asked for clang++, because the bundled Python records clang++ as its C++ compiler and these images have no clang. They had no C++ compiler at all: g++, c++ and clang were all absent, /usr/include/c++ did not exist, and only libstdc++.so.6 was there without its dev symlink. So gcc's presence — added for Triton's runtime JIT — looked like it covered this and did not. g++ is added to the same apt lists for the same reason gcc is in them: not to build the image, but because something compiles at RUNTIME inside it. It brings /usr/bin/c++ and the C++ headers with it. Done in Dockerfile.oci-venv (the one build_oci_image.sh actually builds), Dockerfile.oci, and the pod capability-base. The pod XTTS profile had the same undeclared-phonemiser gap as the server venv, which its own comments already describe for click — so pypinyin, cutlet, fugashi and unidic-lite are declared there too, and its deep check now imports both phonemisers and constructs a Cutlet, because the failure they cause is invisible at install and at boot: the pod answers /v1/models with all seventeen languages and then refuses two of them per request. Verified on zeiss after installing these: 17 of 17 XTTS languages return audio, and cutlet romanises Japanese through a working fugashi dictionary. Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
fe5c785f