Kivy baut Klötzchen

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Hallo liebes Forum,

ich versuche ein in Grundzügen funktionierendes Programm zu debuggen. Muss es deshalb von Raspberry PI auf PC (Linux Debian debian-live-8.7.0-i386-lxde-desktop) übertragen. Es baut auf Kivy 1.9.1 auf.
Hier habe ich allerdings das Problem, dass ich nur ein Klötzchenbild bekomme. Grob gesehen muss etwas mit dem Grafikausgabesystem (Treiber nouveau, opengl ) nicht stimmen ???

Hier die Ausgabe von glxinfo - das sind Angaben zum System:

Code: Alles auswählen

direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
...
OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NV49
OpenGL version string: 2.1 Mesa 10.3.2
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 10.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
Die Forderung nach OpenGL Version > 2.0, dürfte kein Problem ergeben .
Also habe ich den Versuch mit Hello World gemacht .

Code: Alles auswählen

import kivy
kivy.require('1.9.1') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.button import Button

class MyApp(App):
    def build(self):
        return Button(text='Hello World')

if __name__ == '__main__':
    MyApp().run()
Ergibt aber auch nur wieder Klötzchen
Hier noch die Loggerinfo:

Code: Alles auswählen

[INFO   ] [Logger      ] Record log in /home/user/.kivy/logs/kivy_17-12-06_9.txt
[INFO   ] [Kivy        ] v1.9.1
[INFO   ] [Python      ] v2.7.9 (default, Aug 13 2016, 16:41:35) 
[GCC 4.9.2]

[INFO   ] [Factory     ] 179 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [OSC         ] using <multiprocessing> for socket
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)  <<===== Was heißt das??
[INFO   ] [GL          ] OpenGL version <2.1 Mesa 10.3.2>
[INFO   ] [GL          ] OpenGL vendor <nouveau>
[INFO   ] [GL          ] OpenGL renderer <Gallium 0.4 on NV49>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <1.20>
[INFO   ] [GL          ] Texture max size <4096>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available
[INFO   ] [Base        ] Leaving application in progress...
Bitte um hilfreiche Hinweise
Schon mal Danke

Markus
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich würde da direkt bei den Kivy Leuten anklopfen. Die haben ja auch Support-Kanäle. Bei der Warnung die du gemarkert hast würde ich sagen, irgendjemand konfiguriert ein raspberry pi spezifisches backend. Und das geht schief. Das kann durchaus was mit den Problemen zu tun haben. Wie man das aber abstellt - keine Ahnung.
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Hallo,

Danke für die Antwort.
Gestern Nacht habe ich mir tatsächlich. eine Mail an kivy-users in meinem hakeligen Englisch abgerungen. Die ist mir allerdings abgewiesen worden vom Googlesystem. Ich hätte keine Berechtigung da was zu posten. Obwohl es nicht direkt im Forum war, sondern wie gesagt eine Mail an kivy-users@googlegroups.

Aber mittlerweile habe ich auch herausgefunden, dass es im 'Kern' ein Objekt eine Klasse gibt die spezifisch auf den Raspberry Pi zielt - eben diese window-egl-rpi. Da taucht die Frage auf wie das ganze kivy-System übertragbar sein soll. Angeblich soll man auf einem Desktop entwickeln können und auf dem Raspberry Pi laufen lassen.

Markus
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

An sich geht das bestimmt, aber wie genau -> Kivy Users. Bei Google groups musst du ggf eine Anmeldung für die Gruppe vornehmen. Kann aber auch nicht so schwierig sein. Dann sollte das posten klappen.
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Hallo,

nach posting als angemeldeter Nutzer in kivy users support: Bad graphics with multiple Installation try habe ich aus Frust über die Situation weiter experimentiert. Also versucht kivy so zu installieren, dass Hello World funktioniert. Letzten Endes habe ich der aktuellen Version eine Chance gegeben und nach Anleitung für Linux / Debian auf kivy.org installiert. Und siehe da - alles funktioniert incl. das Raspi-Radio und sogar ohne den Fehler wegen dem ich es Debuggen wollte.
Ich weiß nicht was es ausmacht: Fehlen von Cython, bessere Version oder Integration von DSL.
Aber der Installationsvorgang kompromitiert eine 'richtige' Debian-Installation, will heißen auf Festplatte: die Software wird von einem Ubuntu-Repository
gezogen. Das bricht die Regel Debian und Ubuntu nicht zu mischen. Man muss sogar, um den keyring zu holen (apt-key adv - -keyserver...) das Paket dirmng installieren - offensichtlich von Ubuntu. Ich kann nur hoffen, dass die Kivy-Version 1.10.0 zügig als Debian-Paket zur Verfügung steht.

Markus
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Puh. Da hätte ich glaube ich eher alles von den sourcen installiert. Aber fein wenn’s geht.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hätte ich ebenfalls eher selbst gebaut. Dazu einfach mittels apt-get build-dep die Abhängigkeiten für die Kivy-Version aus den Paketquellen installieren (die dev-Pakete sind gemeint). Anschließend kann man meist ohne Probleme die noch nicht verfügbare Version kompilieren. Hierfür am besten so eine Art Pseudopaket erstellen, damit eine Deinstallation möglich ist, falls erforderlich. Mir ist gerade der Name des Tools dafür entfallen...
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

@snafu: Meinst du `checkinstall`?
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Hallo,

die 1.9.1 Version hatte ich ja aus den Quellen gebaut. Aber damit gab es das Problem mit den Klötzchen.
Woher könnte man die Quellen beziehen.? Von Debian bekommt halt die 1.9.1 Oder von git? Wie bestimmt man hier die Version?

Markus
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Versionen in Git haben ueblicherweise entweder branches, oder tags. Eher letzteres. Man muss dann eben nach dem clone ein "git checkout <versions-tag>" machen, bevor man baut.
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Danke

Ich hätte gemeint im Vorhinein, um eine bestimmte Version zu bekommen.

Markus
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe die Frage nicht. Wenn du mit git arbeitest, dann clonst du immer ein repository. Das steht dann meistens auf master, aber selbst das muss nicht. Dann musst du schon sagen, welchen Commit du haben willst. Oder meinst du, wie du mit *GITHUB* eine bestimmte Version runterlaedst?
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Ein repository kann doch mehrere Versionen derselben Software bereithalten. Also muss man aufpassen die richtige zu bekommen. In meinem Fall die aktuellste.
So wie man bei pip die Version bestimmen kann mit Z. B. pip install Cython==0.23, bei apt-get install ist es glaube ich nur ein Gleichheitszeichen

Nach einer solchen Option im clone-Kommando habe ich gefragt.

Markus
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Habe ich doch gesagt. Erst clonen. Dann Version auswaehlen. In einem Schritt kann git das nicht.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

narpfel hat geschrieben:@snafu: Meinst du `checkinstall`?
Ja, genau. Ich meinte checkinstall.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

MarkusK hat geschrieben:die 1.9.1 Version hatte ich ja aus den Quellen gebaut. Aber damit gab es das Problem mit den Klötzchen.
Woher könnte man die Quellen beziehen.? Von Debian bekommt halt die 1.9.1 Oder von git?
Ich rede natürlich von der Version, die du benötigst, was ja offenbar die Version 1.10 ist. Den Quellcode dafür erhälst du hier als *.tar.gz Datei.

Ungetestet:
[codebox=bash file=Unbenannt.bsh]sudo apt-get build-dep python-kivy
tar xvf Kivy-1.10.0.tar.gz
cd Kivy-1.10.0
./configure
make
sudo checkinstall [/code]
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Achja, und knall vorher das Ubuntu-Paket mittels apt-get purge wieder runter, sonst kann es zu Problemen kommen. Beachte bitte, dass ein manuell installiertes Paket keine automatischen Updates erhält. Mittelsfristiges Ziel ist natürlich, dass die offizielle Debian-Version aufholt und du dann später wieder diese Version beziehst. Optimal wäre es, einfach darauf zu warten und auf eine manuelle Installation zu verzichten. Aber jetzt bist du ja eh schon damit angefangen...

EDIT:
Ubuntu-Pakete auf einem Fremdsystem sind meist dann gefährlich, wenn sie andere Abhängigkeiten haben als die Debian-Variante. Du könntest es auch beim Ubuntu-Paket belassen und die automatischen Updates für dieses Paket zur Sicherheit ausstellen. Später dann auf ein aktuelles Debian-Paket updaten und die Update-Sperre dann wieder rausnehmen. Aber musst du selbst entscheiden. Vermutlich geht's auch ohne diese Vorkehrungen gut, aber ein komisches Bauchgefühl bleibt IMHO trotzdem.
MarkusK
User
Beiträge: 9
Registriert: Mittwoch 22. November 2017, 19:01

Danke, das ist mal Substanz. :D

Markus
Antworten