jueves, 4 de marzo de 2010

Isabel ahora es GPL

Ha pasado mucho tiempo desde el último blog. Entre otras razones es que hemos estados muy liados pasando el código de ISABEL a licencia GPL. Podeis descargar las fuentes de Isabel GPL desde el Virtual Conference Center del DIT de la UPM.
Están listas para compilar en Linux Ubuntu Karmic: "make" y "sudo make install" debería dejaros una versión lista para usar.

jueves, 22 de mayo de 2008

subversion


Hemos cambiado el control de versiones a subversion. Lo primero es instalar el propio subversion, intrucciones específicas en:
http://www.wikihow.com/Install-Subversion-on-Mac-OS-X
Yo he bajado la versión de Martin Ott, gracias Martin!!

lunes, 4 de junio de 2007

scandir

Hay una pequeña diferencia en el scandir, en MacOS se declara como

int
scandir(const char *dirname, struct dirent ***namelist,
int (*select)(struct dirent *),
int (*compar)(const void *, const void *));

y en Linux me la encuentro como:

int scandir(const char *dir, struct dirent ***namelist,
int(*filter)(const struct dirent *),
int(*compar)(const struct dirent **, const struct dirent **));

Nos fijamos en el tercer parámetro, un puntero a función que Linux espera un "const struct dirent *" y en MacOS espera un "struct dirent *". Dicho en román-paladino, en Linux la función de filtrado no "debe" modificar la estructura que se le pasa, en MacOS se podría modificar.

Se resuelve con una compilación condicional del estilo de:

#if defined(__BUILD_FOR_INTEL_DARWIN)
int client_file_filter(struct dirent *entry)
#elif defined(__BUILD_FOR_INTEL_LINUX)
int client_file_filter(const struct dirent *entry)
#else
#error "Please, define client_file_filter for your OS"
#endif

Los items __BUILD_FOR_INTEL_DARWIN y __BUILD_FOR_INTEL_LINUX los construyo en el Makefile. Además, tengo la precaución de poner una directriz del procesador "#error" por si portamos el código a otra plataforma.

jueves, 24 de mayo de 2007

Biblioteca libjpeg

Necesito la biblioteca libjpeg. He seguido las instrucciones de DZone Snippets y no he tenido ningún problema. Gracias a DZones Snippets y Peter Cooper!

(Por cierto, DZone Snippets usa Ruby on Rails!)

Compilación de biblioteca FFMPEG

Algunos codecs de video (mpeg-1 y mpeg-4) son de la biblioteca FFMPEG. Para compilarla, se construye con las siguientes opciones:

cd ffmpeg
./configure --disable-mmx --enable-memalign-hack --disable-v4l --disable-v4l2

Creo que para PowerPC no es necesario la opción --disable-mmx.

miércoles, 18 de abril de 2007

Compilando ICF2 (Biblioteca básica)

De nuevo he podido dedicar tiempo. He empezado a portar la biblioteca que llamamos ICF2 (Integrated Component Framework, version 2). Básicamente consiste en un conjunto de clases C++ que libera (o intenta liberar) al programador de la gestión de detalles de bajo nivel, relacionadas con la programacion multithread, las comunicaciones, etc. Entre las características principales, se incluye soporte para la programación orientada a eventos (mensajería, concurrencia, temporización, etc.), soporte multihilo, sincronización, contenedores genéricos y gestión de memoria (smart references).

Lo primero que me he encontrado es que las bibliotecas compartidas en Mac OS son .dylib. He tenido que cambiar la opción -shared por -dynamiclib.

Asimismo, he cambiado la opción -soname (válidad solo para ficheros ELF) por las opciones -compatibility_version y -current_version.

En cuanto al código, no he tenido que cambiar nada en comparación con Linux.

jueves, 22 de marzo de 2007

MAC address

El primer problema: necesito conocer la dirección hardware de la(s) tarjeta(s) Ethernet instalada(s). En Linux tengo una ioctl, SIOCGIFHWADDR, que me devuelve una estructura con información del interfaz. En Darwin se usa la llamada getifaddrs.

He encontrado un trozo de código en las
páginas de Rafael Baptista, tiene la ventaja de que compara entre sistemas operativos. Gracias, Rafael!

Bueno, he codificado una compilación condicional y resuelto.