Sono riuscito a far dialogare dbus con lo script python.
La situazione è la seguente:
ho il programma padre(l'interfaccia grafica) e lo script bash (quello che contiene i comandi per installare openmamba).
Lo script bash comunica con lo script python ogni volta che vuole aggiornare la progressbar.
Il problema è quello iniziale, cioè ho una funzione che avvia la ricezione di chiamate tramite dbus, ma blocca l'esecuzione del programma, cioè tutto il codice che c'è dopo non viene eseguito...
Mentre a far partire lo script bash (subprocess.call()) anche in questo caso tutto quello che c'è viene eseguito quando l'installazione è terminata...
Prova a dare un occhiata qui: http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html#making-asynchronous-method-calls
spiega come rendere asincrone le richieste a dbus in python.
Ok, grazie, ho fatto.
Eccovi il pacchetto usbinstall.tar.gz
Per avviarlo python usbinstall.py, fatemi sapere com'è 🙂
Penso ci sia ancora qualche bug...
(Non va git...)
Ciao, a me non va.
Probabilmente avviando lo script da python non visualizza la richiesta di password di sudo dello script bash.
Si blocca con questo errore dopo la selezione della chiavetta
Traceback (most recent call last):
File "usbinstall.py", line 69, in avanti
passo4()
File "usbinstall.py", line 257, in passo4
p = Popen(["./usbinstall.sh", "start", sel_usb_file, path_Boot, path_Iso])
File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied
Si, è vero...
Non so perchè ma il file usbinstall.sh dentro l'archivio che ho caricato su internet non ha i permessi per essere eseguito.
Quindi:
cd /percorso/di/usbinstall/
sudo chmod +x usbinstall.sh
Poi ho scoperto inoltre che non va la funzione che cambia la label di descrizione del processo di installazione, ma non saprei come correggerlo...
Cioè se passo una stringa come parametro a un metodo del programma in python, dbus interpreta gli spazi dentro la stringa come stringhe a se...
( E' la funzione descrizione() presente nel file usbinstall.sh)
provando a modificare il contenuto della funzione così
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Descrizione string:"Stringa di prova"
La label del programma in python si aggiorna, quindi il problema è il passaggio del parametro alla funzione descrizione() ?

