Incidencia #747 (closed Error: Resuelto)

Abierto hace 5 años

Última modificación 4 años

Fallo al ejecutar python-support en jockey/detection.py

Informado por: erickcion Propietario: erickcion
Prioridad: No Definido Hito: Canaima Popular 4.0~b2
Componente: Canaima Popular Versión: 4.0
Gravedad: Regular Palabras clave: jockey, python-support
Cc: Asignar A:

Descripción

Al tratar de instalar una aplicación que requiera el llamado de python-support para ser instalada, se pueden observar en la consola algunos errores de sintaxis generadas por el archivos jockey/detection.py, como se muestra a continuación.

Configurando libgnomeui-0 (2.24.5-2) ...
Configurando python-pyorbit (2.24.0-6+b1) ...
Configurando python-gnome2 (2.28.1+dfsg-1) ...
Configurando backintime-common (1.0.10-1) ...
Procesando disparadores para menu ...
Configurando backintime-gnome (1.0.10-1) ...
Procesando disparadores para python-support ...
Compiling /usr/lib/pymodules/python2.6/jockey/detection.py ...
SyntaxError: ('invalid syntax', ('/usr/lib/pymodules/python2.6/jockey/detection.py', 750, 15, '            for d in udev_client.query_by_subsystem(subsystem)\n'))

La instalación de las apliaciones no falla, pero esta salida no debería generarse.

Historial de cambios

comment:1 Cambiado el 5 años por erickcion

  • Propietario cambiado de $USER a erickcion
  • Estado cambiado de new to accepted

comment:2 Cambiado el 5 años por erickcion

  • Versión cambiado de No Definido to 4.0

comment:3 Cambiado el 5 años por HuntingBears

En la línea 750 del archivo jockey/detection.py aquí, parece que se está tratando de implementar la forma corta de una expresión mucho más larga, dentro de una función que arroja un diccionario. Demasiada sintetización para mi gusto, diría.

En su forma corta, o lo que en teoría de python es una "list comprehension" combinada con un "ternary operator":

variable = [value1 for expr1 in values if expr1 is expr2 else expr3]

Simplificarlo, creo que es una forma de resolver el bug de sintaxis.

~Luis

Editado por último en fecha 5 años por HuntingBears (anterior) (diferencia)

comment:4 Cambiado el 5 años por HuntingBears

Otra solución también es intentar arreglar la expresión en una sola línea.

~Luis

comment:5 seguimiento: ↓ 6 Cambiado el 5 años por erickcion

Gracias Luis,

Opté por la opción de extender la sentencia que estaba comprimida, para así poder entenderla mejor en lo adelante, quedando de esta manera:

for subsystem in SUBSYSTEMS:
    for d in udev_client.query_by_subsystem(subsystem):
        if 'MODALIAS' in d.get_property_keys():
            hw.update(HardwareID('modalias', d.get_property('MODALIAS')))
return hw

Y me ha funcionado bien, al principio me dio unos problemas y ni me levantaba el jockey pero fue que edité por error otro archivo.

comment:6 en respuesta a: ↑ 5 Cambiado el 5 años por erickcion

Replying to erickcion:

for subsystem in SUBSYSTEMS:
    for d in udev_client.query_by_subsystem(subsystem):
        if 'MODALIAS' in d.get_property_keys():
            hw.update(HardwareID('modalias', d.get_property('MODALIAS')))
return hw


Me comi unas llaves ( { } ) en la respuesta anterior, debe quedar así:

hw.update({HardwareID('modalias', d.get_property('MODALIAS'))})

comment:7 Cambiado el 5 años por sebasmagri

El error se debe a que la línea en cuestión hace un set comprehension, que no está soportado en Python 2.6. El desarrollo se realizó sobre Python 2.7 y el empaquetamiento se definió de esa manera.

Una manera de hacerlo compatible con Python 2.6 es eliminar el set comprehension tal como mostró Erick, pero usando set.add en vez de update para reducir lógica.

for subsystem in SUBSYSTEMS:
    for d in udev_client.query_by_subsystem(subsystem):
        if 'MODALIAS' in d.get_property_keys():
            hw.add(HardwareID('modalias', d.get_property('MODALIAS')))
return hw

comment:8 Cambiado el 5 años por erickcion

  • Estado cambiado de accepted to resuelta
  • Resolución establecido a Fijada

Sebasmagri, gracias.

Integré los cambios como los recomendaste, usando add en vez de update, se pueve ver aquí:

http://git.canaima.softwarelibre.gob.ve/?p=jockey.git;a=blobdiff;f=jockey/detection.py;h=7e65fc75ec37669972ed55575e8833ee68a40542;hp=3dd6625b5b7425ca18892e3db6b48706c34d09dd;hb=56a6bac4d03c8f85697182a9aad824573dcba4da;hpb=32b1bad09a9a5f0af0542746660a481ddb6f2046

Además empaqueté desde una maquina virtual (chroot) limpia como me lo recomendaste por correo y funciona correctamente. De hecho los modulos ya no están en:

/usr/lib/pymodules/python2.6/jockey/

sino en:

/usr/lib/pymodules/python2.7/jockey/

comment:9 Cambiado el 5 años por erickcion

  • Estado cambiado de resuelta to closed

Solución disponible a partir de:

  • gnome-themes-gnamon 1.2
  • jockey-gtk 0.9.7+Canaima2-1

comment:10 Cambiado el 4 años por deivi

AYUDA CANAIMA 4.0 ERROR AL ABRIR CENTRO DE SOFTWARE COMO SOLUCIONAR ESTO POR FAVOR SOY MUY NUEVO EN CANAIMA EXPLÍQUENME PASO A PASO ES MI PRIMER CANAIMA Y NO DOMINO LA TERMINAL NI NADA ME DICE ESTO AL ABRIR CENTRO DE SOFTWARE Y INTENTAR REPARARLO >>>>>>

Preparando para reemplazar python2.7-minimal 2.7.3-6 (usando .../python2.7-minimal_2.7.3-6+deb7u3_i386.deb) ...
Desempaquetando el reemplazo de python2.7-minimal ...
dpkg: error al procesar /var/cache/apt/archives/python2.7-minimal_2.7.3-6+deb7u3_i386.deb (--unpack):
intentando sobreescribir `/usr/lib/python2.7/lib-dynload/_ssl.so', que est tambin en el paquete python2.7 2.7.3-6
dpkg-deb: error: el subproceso copiado fue terminado por la seal (Tubera rota)
Se encontraron errores al procesar:
/var/cache/apt/archives/python2.7-minimal_2.7.3-6+deb7u3_i386.deb
dpkg: problemas de dependencias impiden la configuracin de libpython2.7:
libpython2.7 depende de python2.7 (= 2.7.3-6+deb7u3); sin embargo:
La versin de `python2.7' en el sistema es 2.7.3-6.
dpkg: error al procesar libpython2.7 (--configure):
problemas de dependencias - se deja sin configurar

Nota: Vea TracTickets para ayuda en el uso de incidencias.