fix: ce que l installateur pose atteint enfin le système qui tourne - #281
Merged
Merged
Conversation
Trois remontées de testeurs le 09/09/2026, même famille : le choix est
bien enregistré, mais personne ne le rejoue là où il compte.
1. ROTATION DU PLAYFIELD (Flo)
pincabos-screen-hotplug est la SEULE unité qui applique playfield_rotation
(xrandr --rotate, depuis screens.json). Elle n'était démarrée que par la
règle udev « ACTION==change, SUBSYSTEM==drm » : au démarrage, écrans déjà
branchés, les connecteurs sont énumérés en « add » et l'événement
« change » ne vient jamais. Son .service n'avait pas de section [Install],
donc aucune cible ne la démarrait. La rotation choisie à l'installation
n'était jamais appliquée au reboot. L'ordre était déjà prévu pour le boot
(After=pincabos-screen-topology-boot) : il ne manquait que le
déclenchement.
2. ZeDMD (Flo)
L'installateur appliquait la configuration ZeDMD depuis le chroot du
média : pas de réseau final, pas de périphérique, et un « || true » qui
avalait l'échec. Un ZeDMD en Wi-Fi ne pouvait pas y répondre. On ne pose
plus que le drapeau — pincabos-dmd-installer.service rejoue au premier
démarrage et CONSERVE le drapeau tant que l'application échoue, donc il
retente aux démarrages suivants.
3. AUCUNE TABLE NE DÉMARRE (Patrick)
mv: cannot move '/home/pinball/.local/share/VPinballX/10.8'
to '/home/pinball/.pincabos/vpx': Permission denied
Renommer un dossier demande le droit d'écriture sur le PARENT. Le dossier
appartenait à root sur une installation neuve : le mv échouait, set -e
tuait le lanceur, VPX ne démarrait pas. VPinFE se contentait de réafficher
son menu, et le journal du lanceur montrait « Lancement Original direct »
puis « frontend réactivé » à la même seconde.
Deux corrections : le chown de l'installateur couvre maintenant
/home/pinball (il s'arrêtait à /opt), et la migration des préférences ne
peut plus tuer le lanceur — quand elle échoue, on continue avec l'ancien
dossier, en le disant.
Et le lanceur parle : seul le code 139 (SIGSEGV) était traité, tout autre
échec repartait en silence. Un retour non nul en moins de cinq secondes
est désormais journalisé avec son code. C'est ce qui manquait pour
diagnostiquer.
Au passage : test_dof_port_famille (livré en #279) remplaçait glob.glob
dans TOUT le processus au lieu de l'attribut du module. Deux tests sans
rapport échouaient à retardement en recevant des listes vides.
723 tests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Trois remontées de testeurs le 09/09/2026. Même famille : le choix est bien enregistré, mais personne ne le rejoue là où il compte.
1. La rotation du playfield — Flo
pincabos-screen-hotplugest la seule unité qui appliqueplayfield_rotationdepuisscreens.json:Elle n'était démarrée que par une règle udev :
Son
.servicen'avait pas de section[Install]: aucune cible ne la démarrait. Au démarrage, écrans déjà branchés, les connecteurs sont énumérés enadd— l'événementchangene vient jamais. La rotation choisie dans l'assistant n'était donc jamais appliquée après le reboot.L'ordre était déjà prévu pour le boot (
After=pincabos-screen-topology-boot, posé en 4.32 quand le verrou du hotplug bloquait le frontend). Il ne manquait que le déclenchement.2. Le ZeDMD — Flo
L'installateur appliquait la configuration depuis le chroot du média :
Pas de réseau final, pas de périphérique, et un
|| truequi avalait l'échec. Un ZeDMD en Wi-Fi ne pouvait pas y répondre.On ne pose plus que le drapeau.
pincabos-dmd-installer.servicerejoue au premier démarrage et conserve le drapeau tant que l'application échoue : il retente aux démarrages suivants.3. Aucune table ne démarre — Patrick
Renommer un dossier demande le droit d'écriture sur le parent. Sur une installation neuve il appartenait à root : le
mvéchouait,set -Eeuo pipefailtuait le lanceur, VPX ne démarrait jamais.Et le journal du lanceur ne montrait rien d'anormal :
Deux corrections :
chownde l'installateur couvre maintenant/home/pinball— il s'arrêtait à/opt(#277) ;Et le lanceur parle enfin. Seul le code 139 (SIGSEGV → repli OpenGL) était traité ; tout autre échec repartait en silence. Un retour non nul en moins de cinq secondes est désormais journalisé avec son code. C'est exactement ce qui manquait pour diagnostiquer.
Au passage
test_dof_port_famille(livré en #279) faisaitm.glob.glob = ...— ce qui remplaceglob.globdans tout le processus, pas seulement dans le module testé. Deux tests sans rapport échouaient à retardement en recevant des listes vides. Corrigé avec unSimpleNamespace, et le piège est expliqué dans le code pour la prochaine fois.Tests
test_installation_atteint.py, 13 tests.test_installer_dmda correctement échoué quand j'ai retiré l'application dans le chroot — il l'épinglait ; il est mis à jour.723 tests, tout au vert.
🤖 Generated with Claude Code