mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Le build de 51 minutes a échoué au lien final : « libcuda.so.1 not found », références cuMem* non résolues, et une libggml-cuda.so PARTAGÉE alors que BUILD_SHARED_LIBS=OFF est censé être passé. Ce dernier détail était le vrai indice : les drapeaux n'atteignaient pas cmake du tout. ARG WHISPER_CMAKE_FLAGS="…" était déclaré entre deux étapes. Règle Docker : un ARG posé après un FROM appartient à l'étape où il apparaît ; les « ARG » nus des étapes whisperbuild-* héritent, eux, du scope GLOBAL — où rien n'était défini. Valeur vide, cmake sans aucun drapeau : ggml en bibliothèques partagées (échec de lien contre les stubs du pilote), et surtout -march=native — le SIGILL de la PR #18 revenu en silence sur les deux binaires. Les tests du Dockerfile n'y voyaient rien : ils vérifiaient le texte, pas les règles de portée de Docker. - L'ARG remonte avant le premier FROM, à côté de LLAMACPP_IMAGE. - Chaque étape vérifie désormais SON binaire : un ldd qui montre libggml ou libwhisper en dynamique fait échouer le build sur-le-champ, au lieu de laisser partir un binaire qui ne trouvera pas ses .so dans l'image finale. - TestDockerfileArgFlagsGlobal verrouille la position de l'ARG, ancré en début de ligne — une première version se laissait berner par une occurrence en commentaire, sa contre-épreuve l'a montré. libcuda.so.1 reste une dépendance dynamique normale du binaire CUDA : c'est le pilote, injecté à l'exécution par le NVIDIA Container Toolkit, et l'édition de liens la résout via les stubs du toolkit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W3ewMAsXhkw9RY11kb9Dc9