Implantación Del Kernel De Openmusic Bajo Linux
Total Page:16
File Type:pdf, Size:1020Kb
Implantaci´on del Kernel de OpenMusic bajo Linux GERARDO MAURICIO SARRIA JOSE FERNANDO DIAGO PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA INGENIERIA DE SISTEMAS Y COMPUTACION SANTIAGO DE CALI 2001 Implantaci´on del Kernel de OpenMusic bajo Linux GERARDO MAURICIO SARRIA JOSE FERNANDO DIAGO Tesis de grado para optar al t´ıtulo de Ingeniero de Sistemas y Computaci´on Director CAMILO RUEDA Ingeniero de Sistemas y Computaci´on PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA INGENIERIA DE SISTEMAS Y COMPUTACION SANTIAGO DE CALI 2001 Santiago de Cali, Junio 15 de 2001 Ingeniero ANDRES´ JARAMILLO BOTERO Decano Acad´emico de la Facultad de Ingenier´ıa Pontificia Universidad Javeriana Ciudad Certifico que el presente proyecto de grado, titulado “Implantaci´on del Kernel de OpenMusic bajo Linux” realizado por GERARDO MAURICIO SARRIA y JOSE FERNANDO DIAGO, estudiantes de Ingenier´ıa de Sistemas y Computaci´on, se en- cuentra terminado y puede ser presentado para sustentaci´on. Atentamente, Ing. CAMILO RUEDA Director del Proyecto Santiago de Cali, Junio 15 de 2001 Ingeniero ANDRES´ JARAMILLO BOTERO Decano Acad´emico de la Facultad de Ingenier´ıa Pontificia Universidad Javeriana Ciudad Por medio de ´esta, presentamos a usted el proyecto de grado titulado “Implantaci´on del Kernel de OpenMusic bajo Linux” para optar al t´ıtulo de Ingeniero de Sistemas y Computaci´on. Esperamos que este proyecto re´una todos los requisitos acad´emicos y cumpla el prop´osito para el cual fue creado, y sirva de apoyo para futuros proyectos en la Uni- versidad Javeriana relacionados con la materia. Atentamente, GERARDO MAURICIO SARRIA JOSE FERNANDO DIAGO ARTICULO 23 de la Resoluci´on No 13 del 6 de Julio de 1946 del Reglamento de la Pontificia Universidad Javeriana. “La Universidad no se hace responsable por los conceptos emitidos por sus alumnos en sus trabajos de Tesis. S´olo velar´aporque no se publique nada contrario al dogma y a la moral Cat´olica y porque las Tesis no contengan ataques o pol´emicas puramente personales; antes bien, se vea en ellas el anhelo de buscar la Verdad y la Justicia” Nota de Aceptaci´on: Aprobado por el comit´ede Trabajo de Grado en cumplimiento de los requisitos exigidos por la Pontificia Universidad Javeriana para optar al t´ıtulo de Ingeniero de Sistemas y Computaci´on. ANDRES´ JARAMILLO BOTERO Decano Acad´emico de la Facultad de Ingenier´ıa CAMILO RUEDA CAMILO RUEDA Director de la Carrera de Ingenier´ıa Director de Tesis de Sistemas y Computaci´on GABRIEL TAMURA ANTAL BUSS Jurado Jurado Gerardo Mauricio Sarria A Jose y a m´ı, por seguir juntos desde Preescolar. Jose Fernando Diago A Gerardo, Llanos, Vacca, Javier y Carlitos, por mostrarme lo que puedo ser. Agradecimientos Los autores expresan sus agradecimientos: A Camilo Rueda, profesor y director de la carrera de Ingenier´ıa de Sistemas y Computaci´on de la Universidad Javeriana, director del proyecto, por su valioso apoyo y conocimiento brindado durante la realizaci´on del trabajo. A Carlos Agon, uno de los creadores de OpenMusic, por su ayuda incondicional desde Francia. A Antal Buss, profesor de la carrera de Ingenier´ıa de Sistemas y Computaci´on de la Universidad Javeriana, por sus ideas y consejos durante la implantaci´on del c´odigo. A Espen S. Johnsen, creador de CLG, por sus completas explicaciones acerca del manejo de la librer´ıa Gtk+ en Lisp. A Pierre R. Mai, desarrollador de CMUCL, por su orientaci´on en momentos cr´ıticos. Al Grupo Avispa. A todas aquellas personas que de una u otra forma colaboraron en la realizaci´on del presente trabajo. ´Indice general ´Indice de figuras V ´Indice de Anexos VII Introducci´on IX 1. Consideraciones Generales 1 1.1. CommonLisp............................... 1 1.1.1. Clase................................ 2 1.1.2. Instancia.............................. 2 1.1.3. Funci´onGen´erica . 3 1.1.4. M´etodo .............................. 4 1.1.5. Metaclase ............................. 4 1.2. MacOS................................... 5 1.3. Linux ................................... 7 2. OpenMusic 8 2.1. Organizaci´on de Clases de OpenMusic . .. 9 2.2. Metaclases................................. 10 ii 2.3. Workspace................................. 11 2.4. Patches .................................. 12 2.5. Maquettes................................. 14 2.6. Packages.................................. 14 3. Macintosh Common Lisp 17 3.1. Puntos................................... 17 3.2. VistasyVentanas............................. 18 3.3. Di´alogos .................................. 19 3.4. Men´us ................................... 20 3.5. Eventos .................................. 21 3.6. Recursos.................................. 22 4. Herramientas de Desarrollo en Linux 24 4.1. Compilador ................................ 24 4.1.1. CMUCL.............................. 26 4.2. Librer´ıaparaInterfazGr´afica . ... 27 4.2.1. CommonLispGtk+ . .. .. 31 5. Dise˜no de OM Linux 39 5.1. Resultados de la exploraci´on del c´odigo . ...... 39 5.2. Esquemas de implementaci´on por bloques . ... 40 5.2.1. OMANSI ............................. 40 5.2.2. OMNOANSI........................... 40 5.2.3. OM100%MCL.......................... 41 iii 5.2.4. OMParteGr´afica. 41 6. Detalles de Implantaci´on 42 6.1. ClasesyMetaclases............................ 42 6.2. C´odigoMCL................................ 51 6.2.1. Puntos............................... 51 6.2.2. FinderComment ......................... 52 6.2.3. TiposdeArchivos. 54 6.2.4. Recursos.............................. 55 6.2.5. OtrasFunciones. 56 6.3. Gr´aficos .................................. 57 6.3.1. VistasyVentanas. 59 6.3.2. Di´alogos .............................. 62 6.3.3. Men´us ............................... 62 6.4. Eventos .................................. 64 6.5. DragandDrop .............................. 65 6.6. Implementaci´on de V´ınculos . .. 67 7. Conclusiones 71 8. Recomendaciones 73 Bibliograf´ıa 74 ANEXOS 76 iv ´Indice de figuras 1.1. Representaci´on de Clases y Herencia. .... 3 1.2. Representaci´on de Instancias. ... 3 1.3. Representaci´on de Metaclases. ... 5 2.1. EstructuradeOpenMusic. 8 2.2. Herencia de Clases Principales de OpenMusic . .... 9 2.3. Herencia de Clases Gr´aficas de OpenMusic . ... 10 2.4. Workspace................................. 12 2.5. Patch ................................... 13 2.6. Packages.................................. 15 3.1. Herencia de Clases Gr´aficas de MCL . 19 3.2. Divisi´ondelosarchivosenMacOS . 22 4.1. GtkWindow-GtkVBox . .. .. 34 4.2. GtkMenuBar-GtkMenuItem . 35 4.3. GtkMenu-GtkMenuItem . 35 4.4. GtkWindow - GtkScrolledWindow - GtkLayout . .. 36 4.5. GtkPixmap-GtkLabel. 37 v 4.6. GtkEntry-GtkText-GtkButton . 38 5.1. Detalle de los bloques de implementaci´on del porte de OM ...... 40 6.1. Problema de incompatibilidad de metaclases. ...... 44 6.2. Problema de OMGenericFunction. 45 6.3. Primera soluci´on del problema de OMGenericFunction. ........ 46 6.4. Soluci´on final del problema de OMGenericFunction. ....... 48 6.5. ProblemadeOMMethod. 49 6.6. Soluci´on del problema de OMMethod. .. 49 vi ´Indice de Anexos Anexo A. Manejo de OpenMusic en Linux . 76 AnexoC.Metodolog´ıa . .. .. .. 79 Anexo C. Comunicaci´on con Pierre R. Mai, v´ıa E-mail . ..... 84 Anexo D. General Public Licence - GPL . 93 vii Resumen En este documento se pretende mostrar los detalles de la Implantaci´on del Kernel de OpenMusic bajo Linux, siguiendo una metodolog´ıa propuesta por los autores; la implantaci´on en este caso hace referencia al porte de una aplicaci´on originalmente desarrollada en MacOS. Se da inicio al porte familiariz´andose con la aplicaci´on en MacOS, como lo har´ıa cualquier otro usuario pero prestando particular atenci´on en los detalles que m´as adelante ser´an decisivos en la implementaci´on. A continuaci´on se explora el c´odigo y se procede a escoger las herramientas de desarrollo. Las herramientas de desarrollo escogidas son CMUCL, un compilador de Lisp para Unix que ha sido desarrollado durante m´as de una d´ecada en el De- partamento de Ciencias de la Computaci´on de la Universidad Carnegie Mellon, y GTK+ para la interfaz gr´afica de la aplicaci´on. Contando con las herramientas de desarrollo adecuadas se dise˜naron e implementaron los m´odulos de la aplicaci´on (tanto en su parte gr´afica como en su parte operativa) en Linux y se llevaron a cabo las pruebas pertinentes para constatar que el porte de la aplicaci´on presenta las mismas caracter´ısticas y funcionalidad que la aplicaci´on original. Introducci´on La Implantaci´on del Kernel de OpenMusic bajo Linux hace referencia en este proyec- to al porte de la aplicaci´on de la plataforma original (MacOS) a una nueva plataforma (Linux). Al Portar un programa de una plataforma inform´atica a otra se pretende proveer a los usuarios de la plataforma destino con una herramienta lo m´as parecida posible, en aspecto y funcionalidad, a la herramienta original. Dependiendo del lenguaje en el que se encuentre escrito el programa original, el compilador usado, la portabilidad que ofrezcan el lenguaje y el compilador mismo, las librer´ıas usadas y el uso de recursos dependientes de la plataforma, suele ser necesario en algunos casos una casi completa re-escritura del c´odigo del programa. En el caso del porte de Open Music se hizo necesario reescribir una buena parte del c´odigo, tratando siempre de preservar y respetar la estructura original del programa. La plataforma de origen involucrada (MacOS) provee al programador de muchos recursos suficientemente poderosos y bastante simples de usar pero totalmente