docs: ADR-0023-Nachtrag - AT-SPI-Autoklicker fertig+verifiziert, neuer partman-rebuild-cache-Blocker gefunden
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
6769df27be
commit
d8626aa4e9
@ -333,3 +333,99 @@ robusteste Lösung wäre AT-SPI (Accessibility-API) statt Pixel-/Fenster-
|
|||||||
Heuristik - findet Buttons über ihre Rolle ("Push Button") und ihren
|
Heuristik - findet Buttons über ihre Rolle ("Push Button") und ihren
|
||||||
(übersetzten) Namen, unabhängig von X11-Fensterüberlappung. Nicht
|
(übersetzten) Namen, unabhängig von X11-Fensterüberlappung. Nicht
|
||||||
recherchiert, da Zeitrahmen dieser Sitzung erschöpft.
|
recherchiert, da Zeitrahmen dieser Sitzung erschöpft.
|
||||||
|
|
||||||
|
## Nachtrag (29.08.2026): AT-SPI-Autoklicker gebaut, live verifiziert -
|
||||||
|
## neuer, tieferer Blocker in ubi-partman.py selbst gefunden
|
||||||
|
|
||||||
|
**AT-SPI-Umbau, Status: fertig und live verifiziert.** `autoclicker.sh`
|
||||||
|
klickt jetzt über die Linux-Barrierefreiheits-API (`python3-pyatspi`)
|
||||||
|
statt über Bildschirmkoordinaten/Enter-Taste:
|
||||||
|
|
||||||
|
- `live-updates/usr/share/ubiquity/tuxflotte-atspi-env.sh` (neu, per
|
||||||
|
Ein-Zeilen-Sed-Patch in `start-ubiquity-dm` eingebunden, *vor* dem
|
||||||
|
GTK-Start von Ubiquity, da die Bruecke sich nachtraeglich nicht mehr
|
||||||
|
laden laesst): aktiviert `GTK_MODULES=gail:atk-bridge`, startet bei
|
||||||
|
Bedarf einen Session-Bus (`dbus-launch`) und `at-spi-bus-launcher`.
|
||||||
|
- `live-updates/opt/tuxflotte/scripts/atspi_click.py` (neu): findet den
|
||||||
|
zu klickenden Button ueber Rolle (`PUSH_BUTTON`) im Accessibility-Baum.
|
||||||
|
**Wichtig, real beim Testen entdeckt:** trotz festem
|
||||||
|
`debian-installer/language=de` ist nicht jede Seite deutsch beschriftet
|
||||||
|
- die Mint-eigene "Multimedia-Codecs"-Seite zeigt reale englische
|
||||||
|
Buttons ("Quit"/"Back"/"Continue"), vermutlich derselbe fehlende
|
||||||
|
.mo-Uebersetzungskatalog wie beim schon gepatchten
|
||||||
|
ubi-prepare.py-None-Bug (siehe oben). Eine anfaengliche reine deutsche
|
||||||
|
Werteliste blieb dort haengen. Umgestellt auf eine sprachunabhaengige
|
||||||
|
Strategie: bekannte rueckwaerts-/abbrechende Beschriftungen (zweisprachig)
|
||||||
|
werden ausgeschlossen, von den verbleibenden Kandidaten wird bevorzugt
|
||||||
|
wer eine bekannte vorwaerts-Beschriftung traegt, sonst der einzige
|
||||||
|
uebrige Kandidat (Sole-Survivor-Regel); bei echter Mehrdeutigkeit wird
|
||||||
|
bewusst NICHT geklickt.
|
||||||
|
- **Live-Beleg, dass AT-SPI selbst zuverlaessig funktioniert:** Log zeigt
|
||||||
|
103 aufeinanderfolgende, korrekt erkannte Klicks auf "Jetzt
|
||||||
|
installieren" im 2-Sekunden-Takt, ueber mehrere Minuten, ohne einen
|
||||||
|
einzigen Fehlklick. Die Fenstergeometrie-/Dekorationsprobleme, an denen
|
||||||
|
der xdotool-Ansatz scheiterte, treten mit AT-SPI nicht mehr auf.
|
||||||
|
|
||||||
|
**Nebenfund beim Testen, live gefixt:** der Kexec-Append in
|
||||||
|
`backend_launch()` setzte anders als der Grub-Eintrag des ersten Boots
|
||||||
|
kein `username=`/`hostname=` - dadurch verlangte der Live-Nutzer beim
|
||||||
|
zweiten (Kexec-)Boot ein echtes, unbekanntes Passwort statt des sonst
|
||||||
|
leeren Live-Session-Passworts (fuer den GTK-Assistenten selbst
|
||||||
|
folgenlos, erschwerte aber die Fehlersuche via Konsole unnoetig). Fix:
|
||||||
|
`username=mint hostname=mint` ergaenzt, Konsistenz zum ersten Boot
|
||||||
|
wiederhergestellt.
|
||||||
|
|
||||||
|
### Neuer, tieferer Blocker (noch offen): `ubiquity/partman-rebuild-cache`
|
||||||
|
### fuehrt nach erfolgreichem Klick zurueck in die Partitionierung
|
||||||
|
|
||||||
|
Mit funktionierendem AT-SPI-Klick wurde ein neues, von der Klick-Technik
|
||||||
|
unabhaengiges Problem sichtbar: der Klick auf "Jetzt installieren" auf der
|
||||||
|
manuellen Partitionierungsseite ("Etwas Anderes" - Ubiquity zeigt diese
|
||||||
|
Seite fuer jedes nicht eingebaute/custom `expert_recipe`, korrektes
|
||||||
|
Verhalten) wird tatsaechlich ausgefuehrt und fuehrt laut
|
||||||
|
`/var/log/installer/debug` nachweislich in den Erfolgspfad
|
||||||
|
(`grub-installer/bootdev seen` wurde erreicht - das passiert laut
|
||||||
|
Quelltext direkt nach `self.finish_partitioning = True; self.succeeded =
|
||||||
|
True; self.exit_ui_loops()`), aber kurz danach springt der Installer
|
||||||
|
zurueck in dieselbe Partitionierungsseite, und der Autoklicker beginnt
|
||||||
|
von vorn - ueber 100 Zyklen beobachtet, ohne jemals durchzukommen.
|
||||||
|
|
||||||
|
Quelltext-Analyse (`/usr/lib/ubiquity/plugins/ubi-partman.py` auf dem
|
||||||
|
Live-Medium, per Konsole gelesen) zeigt die Ursache strukturell:
|
||||||
|
|
||||||
|
```python
|
||||||
|
def rebuild_cache(self):
|
||||||
|
assert self.current_question == 'partman/choose_partition'
|
||||||
|
self.building_cache = True
|
||||||
|
```
|
||||||
|
|
||||||
|
aufgerufen, wann immer Debconf die Frage `ubiquity/partman-rebuild-cache`
|
||||||
|
stellt (Zeile ~2195: `if question == 'ubiquity/partman-rebuild-cache':`).
|
||||||
|
Diese Frage kommt von partmans eigenen Shell-Skripten (nicht von
|
||||||
|
ubi-partman.py selbst), noch nicht bis zur Quelle zurueckverfolgt, ob
|
||||||
|
partman sie hier zu Recht/wiederholt stellt oder ob unser eigenes
|
||||||
|
`expert_recipe` (insb. das `$reusemethod{ }`-Flag auf der ESP-Stanza,
|
||||||
|
siehe `_tuxflotte_render_partman_recipe()` - laut Code-Kommentar dort
|
||||||
|
bewusst aus der eingebauten "atomic"-Recipe uebernommen, weil ohne dieses
|
||||||
|
Flag die ESP frueher nicht als gueltig erkannt wurde) eine partman-interne
|
||||||
|
Neubewertung immer wieder auf "muss neu validiert werden" kippen laesst.
|
||||||
|
|
||||||
|
**Wichtig fuer die weitere Suche:** dieser Loop ist strukturell derselbe
|
||||||
|
wie der oben (Fix 3) bereits dokumentierte `choose_partition`/
|
||||||
|
`building_cache`-Loop, tritt hier aber nachweislich auch bei einem
|
||||||
|
tatsaechlichen, korrekten GTK-Klick auf (nicht nur bei direktem
|
||||||
|
Preseeden einer Debconf-Antwort ohne echten Seitenaufbau) - die Ursache
|
||||||
|
liegt also tiefer in partmans eigener Zustandsverwaltung bzw. in unserem
|
||||||
|
Rezept, nicht (nur) im Preseed-Mechanismus.
|
||||||
|
|
||||||
|
**Status:** AT-SPI-Klick-Mechanismus als Aufgabe abgeschlossen und
|
||||||
|
verifiziert - die verbleibende Blockade ist ein eigenstaendiges,
|
||||||
|
partman-internes Problem, keine Klick-Zuverlaessigkeitsfrage mehr.
|
||||||
|
Naechste sinnvolle Schritte (nicht mehr in dieser Sitzung verfolgt):
|
||||||
|
(a) die partman-Shell-Skripte (nicht nur ubi-partman.py) daraufhin
|
||||||
|
durchsuchen, was `ubiquity/partman-rebuild-cache` stellt und ob es an
|
||||||
|
`$reusemethod{ }` auf einer frischen/leeren Platte haengt, oder (b)
|
||||||
|
pruefen, ob eine der eingebauten Recipes (z. B. "atomic" direkt statt
|
||||||
|
eines eigenen `expert_recipe`) fuer unsere Anforderungen ausreicht und
|
||||||
|
damit die manuelle "Etwas Anderes"-Seite (und ihre rebuild-cache-
|
||||||
|
Interaktion) ganz umgeht.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user