Non officiel
Sur cette page
  1. 01Là où il a échoué
  2. 02Lire le journal de la recette
  3. 03Trouver la cause
  4. 04Ce que vous pouvez modifier
  5. 05Changer vous-même la source d’une recette
  6. 06Reconstruire
  7. 07Lorsque la construction réussit mais qu'un programme ne démarre pas

Lorsqu'une build App Builder échoue : lisez le journal, trouvez la cause, reconstruisez

App Builder compile les programmes d’une application à partir de recettes, l’une après l’autre. L’une peut échouer. Ce guide suit un échec réel sur un NAS de test : TurboShell, composé de 70 recettes, s’est arrêté à la septième, le shell Korn ksh93.

  1. Étapela recette en échec
  2. Journalses dernières lignes
  3. Causece que nomme l’erreur
  4. Modificationrecette corrigée ou application
  5. Nouvel essairéutilise les recettes réussies

Les images proviennent de Bucket & Code Server IDE 1.0.0-49, avant et après le correctif.

01Là où il a échoué

Une compilation qui échoue laisse l’application telle qu’elle était. Si une compilation antérieure a réussi, Activer, Télécharger et Exporter en QPKG utilisent toujours son résultat. La barre latérale indique échec pour la dernière compilation, et la page de l’application affiche l’erreur dans son pipeline.

La barre latérale des applications : TurboShell, échecLe pipeline : Build, Failed ; une version antérieure est conservée

La carte Ordre de build nomme la recette et la phase où elle a échoué. Dans cet exemple, les recettes précédentes indiquent réussie ; les suivantes, non atteinte, et conservent le journal d’une compilation antérieure.

La carte d'ordre de build : la dernière build a échoué, le générateur de messages : FAILED ksh93 dans la build (sortie 1), les recettes 1 à 6 ont réussi, ksh93 a échoué lors de la compilation, fish n'a pas été atteint avec son journal précédent

02Lire le journal de la recette

Le bouton Journal, sur la ligne de la recette, ouvre ce que le builder a écrit pour elle : ses phases, la sortie du compilateur, l'audit et la vérification. La cause se trouve vers la fin.

Le journal de ksh93 : misc/magic.c de libast : erreur : nom de type inconnu Magic_t ; vouliez-vous dire magic_t, puis mamake, code de sortie 1 créant magic.o, et package : make a échoué
  • Le journal de la tâche de compilation elle-même, sous Tâches dans le panneau inférieur (Ctrl+J), se termine par les mêmes lignes : le constructeur y copie les 40 dernières lignes du journal de la recette.
  • L'arborescence de compilation de la recette en échec reste dans le dossier de build de l'application jusqu'à sa compilation suivante : apps/<app>/build/work/<recipe> dans le dossier de données. Ouvrez-la dans le terminal de l'éditeur pour examiner les sources et les fichiers générés.

03Trouver la cause

Le compilateur demande Magic_t, le type propre de ksh, et suggère magic_t, le type de libmagic, la bibliothèque de la commande file. Ainsi, #include <magic.h> dans les sources de ksh a trouvé l'en-tête de libmagic, pas celui de ksh.

TurboShell compile aussi la recette file, qui installe le magic.h de libmagic dans le préfixe de l'application. Chaque recette est construite avec le dossier include de ce préfixe sur son chemin de recherche, de sorte que ses programmes trouvent les bibliothèques créées avant eux. La première compilation de TurboShell a construit ksh93 avant file et a réussi. Une compilation ultérieure travaille dans une copie de la dernière compilation réussie, dont le préfixe contenait déjà l'en-tête de libmagic, et ksh93 l'a récupéré.

Quand une erreur nomme quelque chose, comme celle-ci, remontez la piste de ce nom dans les sources, les recettes précédentes et l'environnement de compilation. Le journal montre où cette compilation s'est arrêtée ; il ne vous dit pas quel changement la réparera.

04Ce que vous pouvez modifier

  • Une recette corrigée. Un catalogue signé peut livrer de nouvelles recettes au NAS entre deux versions du paquet. La carte Bibliothèque de recettes sur la page Apps indique la version utilisée et la dernière vérification ; Rechercher des mises à jour des recettes lance une vérification immédiate. La recette corrigée ksh93 est arrivée avec le catalogue 2026.10.08-1 et isole ksh93 des en-têtes du préfixe. Carte Bibliothèque de recettes : catalogue 2026.10.08-1 utilisé, dernière vérification réussie et boutons Rechercher des mises à jour des recettes et Utiliser la bibliothèque du paquet
  • L’application. Sur sa page, Modifier permet d’ajouter ou de retirer des recettes et de choisir l’environnement et le mode de liaison. Un programme incompatible avec une autre recette peut être placé dans une application distincte.
  • L'environnement. Si une recette a besoin d'un compilateur plus récent ou d'un outil de compilation absent de l'environnement, choisissez un autre environnement avec Modifier.

05Changer vous-même la source d’une recette

Tant qu’aucune recette corrigée n’est arrivée, ou quand un programme a une version plus récente que celle que construit la recette de la bibliothèque, une copie de la recette peut indiquer la nouvelle source. La copie va dans le dossier recipes/ de n’importe lequel de vos projets, et une application qui prend les recettes de ce projet construit la copie à la place de la recette de la bibliothèque. La bibliothèque et les autres applications restent telles quelles. Dans la bibliothèque de Bucket & Code Server IDE 1.0.0-55, la recette tmux construit la version 3.7c ; la copie construit ici la 3.8.

Le journal de la tâche de compilation indique la bibliothèque utilisée sur sa ligne recipe library:. La bibliothèque propre au paquet est /usr/bin/bucketvs/share/bucketvs/recipes/ ; celle d’un catalogue est recipes/current/library/ dans le dossier de données. Dans le terminal de l’éditeur, dans le dossier du projet, copiez le dossier de la recette depuis cet emplacement et calculez le sha256 de la nouvelle archive :

mkdir -p recipes
cp -r /usr/bin/bucketvs/share/bucketvs/recipes/tmux recipes/
curl -fsSL https://github.com/tmux/tmux/releases/download/3.8/tmux-3.8.tar.gz | sha256sum
e79c699c7e949dccd0a4a125e17b8d1261e311b16979dbc8eb34542f3966d82e  -

Dans recipes/tmux/recipe.json, trois valeurs changent : la version, l’adresse et le sha256.

"version": "3.8",
"source": {
  "url": "https://github.com/tmux/tmux/releases/download/3.8/tmux-3.8.tar.gz",
  "sha256": "e79c699c7e949dccd0a4a125e17b8d1261e311b16979dbc8eb34542f3966d82e"
},
  • L’enregistrement du fichier vérifie les recettes du projet et affiche les résultats dans la vue Problèmes de l’éditeur ; bvs recipe lint . lance la même vérification dans le terminal. La carte Recettes de la vue du projet marque la copie remplace la version 3.7c de la bibliothèque. Une copie qui a un problème est écartée, et la recette de la bibliothèque ne prend pas sa place : une compilation qui a besoin de tmux s’arrête avant de démarrer, en indiquant la raison.
  • Sur la page de l’application, Modifier affiche Recettes d’un projet dès qu’un projet contient une recette. Choisissez le projet, Enregistrer la modification, puis Recompiler. Le journal de la tâche de compilation énumère les recettes lues dans le projet et indique tmux replaces the library's tmux 3.7c in this app.
  • Une version qui se construit de la même façon n’a besoin que de ces trois valeurs. Si elle demande d’autres options de configure ou un correctif, modifiez aussi build.sh ; Votre première recette explique ce fichier.
  • La copie remplace la recette de la bibliothèque par son nom, quelles que soient les versions. Quand la recette de la bibliothèque dépasse la copie, l’application construit toujours la copie : remettez Recettes d’un projet sur Aucun : la bibliothèque seule, ou supprimez la copie.

06Reconstruire

Sur la page de l’application, Recompiler lance une nouvelle tâche. Si les fichiers de l’application n’ont pas changé depuis l’échec, elle reprend là où cette compilation s’est arrêtée : les recettes que la compilation en échec avait terminées sont réutilisées et la recette en échec est compilée de nouveau, ici ksh93 avec la recette corrigée du catalogue.

Le pipeline après la reconstruction : Build, BuiltLa carte d'ordre de construction après la reconstruction : ksh93 et fish réussies

07Lorsque la construction réussit mais qu'un programme ne démarre pas

Chaque build vérifie son résultat avant de remplacer l'application : la propre vérification de chaque recette et une analyse qui lit chaque programme et bibliothèque sans les exécuter. L'onglet Dépendances de l'application répertorie ce que cette analyse a trouvé : une bibliothèque manquante, une version qu'une bibliothèque ne définit pas, un RUNPATH qui pointe en dehors de l'application ou un programme qui nécessite une glibc plus récente que celle pour laquelle l'application est prévue. Le panneau propose une action suggérée pour les résultats pris en charge, souvent sous forme de bouton : Ajouter … et compiler, Passer en … et compiler, Corriger le RUNPATH, Choisir un autre environnement ou Construire pour ce NAS seulement. Sur le NAS, bvs deps <app> affiche la même liste.