Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Portabilidad de python

ridiculum's Diary
Por ridiculum
departamento posix? bsd 4.4? , Sección Diarios
Puesto a las Mon Feb 7th, 2005 at 01:18:08 AM CET
He estado enredado con el software de los planets y me ha sorprendido que hubiera lo que aparenta ser un bug entre python y freebsd

 


El software en cuestion esta escrito en python y yo lo he puesto a correr en un freebsd 4.11. Si lo ejecutas tal cual, obtienes un error:
Traceback (most recent call last):
  File "planet.py", line 240, in ?
    template = TemplateManager().prepare(template_file)
  File "/home/count/planet/htmltmpl.py", line 204, in prepare
    precompiled = self.load_precompiled(file)
  File "/home/count/planet/htmltmpl.py", line 342, in load_precompiled
    self.lock_file(file, LOCK_UN)
  File "/home/count/planet/htmltmpl.py", line 275, in lock_file
    fcntl.fcntl(fd, fcntl.LOCK_UN)
IOError: [Errno 14] Bad address
Con un poco de ayuda de google, llego a un mensaje a la lista de desarrollo de planetplanet que comenta que hay que cambiar la llamada fcntl por flock, por que sino, en freebsd no funciona. Esto sucede tanto con la version 2.2 como con la 2.3 de python

La cuestion es que ambas llamadas se supone que hacen lo mismo, y la unica diferencia es que flock proviene de BSD y fcntl es de POSIX.

¿Algún motivo para que de una forma funcione y de la otra no?
¿Por que no han integrado en el software de planet's ese parche?
¿Existe la portabilidad?

< Por qué no a las patentes de software (12 comments) | Nuevo tutorial sobre Gambas, mas allá del ¡Hola mundo! (3 comments) >
Enlaces Relacionados
· software de los planets
· More on ridiculum's Diary
· Also by ridiculum

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Portabilidad de python | 8 comentarios (8 temáticos, editoriales, 0 ocultos)
Mapeo de syscalls (none / 0) (#1)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Mon Feb 7th, 2005 at 07:40:38 PM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

¿Será que python mapea directamente estas funciones a su system call correspondiente? En ese caso, o FreeBSD soporta fcntl como se espera en POSIX, o es el script python el que debe preocuparse por la arquitectura subyacente. Al fin y al cabo, si soportaras un modulo de programacion en Win32 en python, tampoco esperarías que dichas llamadas funcionaran en otras plataformas, ¿no?

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson


 
IMHO, es un bug en el planets ése (none / 0) (#2)
por Draco a las Mon Feb 7th, 2005 at 08:12:24 PM CET
(Información Usuario)

¿Algún motivo para que de una forma funcione y de la otra no?

Por lo que he estado mirando, yo diría que es no es un bug de FreeBSD ni de Python. En la descripción de fcntl en Python dice:

Perform the requested operation on file descriptor fd. The operation is defined by op and is operating system dependent.

Así que en Python se lavan las manos (portabilidad por los cojones, que se llama). Aún así, en la descripción POSIX de fcntl no aparece esa constante LOCK_UN, que sin embargo sí es aplicable para flock(Linux, FreeBSD).

La pregunta es ¿por qué funciona en Linux?.... Yo diría que en realidad no funciona, sólo que no da error, pero no podría asegurarlo.

¿Por que no han integrado en el software de planet's ese parche?

¿Alguien se lo ha mandado?

¿Existe la portabilidad?

¿De que íbamos a vivir si existiera?
There are two major products to come out of Berkeley: LSD & BSD Unix. I don't believe this to be a coincidence.


Portabilidad de python | 8 comentarios (8 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda