v0.7.9 : les moteurs llama.cpp arretent de jouer a cache-cache

- moteur precompile : la version installee est celle qui tourne (on elisait le
  dossier le plus ancien), et les anciennes extractions sont purgees
- presets : le moteur precompile reste reconnu apres une mise a jour, et un BIN
  pointant une release disparue suit la version installee au lieu d'echouer
- build CUDA : le toolkit est cherche avant le nvcc du PATH, sa racine est
  passee a CMake (fin du "CUDA Toolkit not found" avec CUDA installe)
- job d'installation : etat persiste sur disque, une operation interrompue par
  un redemarrage du service est annoncee, pastille de rappel sur mobile
- editeur de modele : section Cartes graphiques (--device / --tensor-split), la
  liste vient du moteur du preset car les identifiants dependent du backend
- reglages : plus de menu replie, interrupteurs regroupes, decodage speculatif
- CUDA_VISIBLE_DEVICES et WEB_ENGINE survivent au changement de preset, sauf si
  le preset les definit lui-meme
This commit is contained in:
nathaninline committed 2026-08-05 16:51:10 +02:00
1 parent 726f065d25
commit e57fc0966e
24 files changed
+1754 -94

No files matched your search

+22 -7
View File
@@ -117,6 +117,20 @@ func totalRAMGB() float64 {
// llama-server meurt instantanément sur « Library not loaded », donc sans le
// moindre message dans l'UI.
func setLibraryPath(dir string) {
envVar, joined := libraryPathValue(dir)
_ = os.Setenv(envVar, joined)
if runtime.GOOS == "darwin" {
// Filet de sécurité : DYLD_FALLBACK_LIBRARY_PATH est consulté en dernier
// recours et survit à certains contextes où DYLD_LIBRARY_PATH est purgé.
_ = os.Setenv("DYLD_FALLBACK_LIBRARY_PATH", joined+":/usr/local/lib:/usr/lib")
}
}
// libraryPathValue calcule (nom de variable, valeur) sans toucher à
// l'environnement du process : utilisé pour lancer un llama-server ÉPHÉMÈRE
// (ex. `--list-devices` depuis l'UI) sans polluer — ni faire grossir à chaque
// appel — le LD_LIBRARY_PATH du serveur web lui-même.
func libraryPathValue(dir string) (string, string) {
parts := []string{dir}
parts = append(parts, cudaLibDirs()...)
envVar := "LD_LIBRARY_PATH"
@@ -126,13 +140,14 @@ func setLibraryPath(dir string) {
if existing := os.Getenv(envVar); existing != "" {
parts = append(parts, existing)
}
joined := strings.Join(parts, ":")
_ = os.Setenv(envVar, joined)
if runtime.GOOS == "darwin" {
// Filet de sécurité : DYLD_FALLBACK_LIBRARY_PATH est consulté en dernier
// recours et survit à certains contextes où DYLD_LIBRARY_PATH est purgé.
_ = os.Setenv("DYLD_FALLBACK_LIBRARY_PATH", joined+":/usr/local/lib:/usr/lib")
}
return envVar, strings.Join(parts, ":")
}
// libraryPathEnv renvoie un environnement complet (os.Environ + la variable de
// recherche de bibliothèques) pour une commande ponctuelle.
func libraryPathEnv(dir string) []string {
k, v := libraryPathValue(dir)
return append(os.Environ(), k+"="+v)
}
// cudaLibDirs returns the CUDA runtime lib directories present on the machine,