Implantación Del Kernel De Openmusic Bajo Linux

Implantación Del Kernel De Openmusic Bajo Linux

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

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    112 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us