GNUstep

3 marzo 2015

Instalando GNUstep en Windows (parte 1)

Filed under: Uncategorized — Etiquetas: , , , , , , — Germán Arias @ 1:36 am

En esta nota voy a explicar como instalar GNUstep en Windows utilizando la versión en desarrollo de GNUstep que contiene varias mejoras para este sistema operativo. Yo he probado esto en un sistema Windows 7, pero en teoría debería funcionar en otras versiones. Asumo que los interesados en estas instrucciones son usuarios de Windows que no están acostumbrados a manejar un shell o herramientas como SVN. Así que vamos por pasos y si no entienden algo solo sigan adelante que de seguro mas adelante se aclara. O busquen en internet lo que no entiendan :). En esta primera parte vamos a instalar los paquetes gnustep-make y gnustep-base, con lo que estarán habilitados para escribir programas de linea de comandos.

Paso 1

Lo primero que necesitan es descargar el instalador de MinGW, un entorno minimalista de GNU para Windows que será la base sobre la que instalaremos GNUstep. Arranquen el instalador de MinGW e instalen este en la ruta deseada, yo no he modificado esta así que todo se instalara en “C:\MinGW\”.

Paso 2

El instalador de MinGW crea en el escritorio un acceso directo para el “MinGW Installer”. Arranquemos este y en la parte izquierda seleccionemos la sección “All packages”. Ahora búsquense los siguientes paquetes y márquense para instalación (clic derecho). Algunos paquetes aparecen divididos en paquetes bin y dev, en este caso deben instalarse ambos.

mingw32-autoconf
mingw32-binutils
mingw32-bzip2
mingw32-gcc
mingw32-gcc-g++
mingw32-gcc-objc
mingw32-gdb
mingw32-gmp
mingw32-libbz2
mingw32-libgmp
mingw32-libiconv
mingw32-libintl
mingw32-libpthread-old
mingw32-libpthreadgc
mingw32-libtool
mingw32-libunistring
mingw32-libz
mingw32-make
mingw32-pkginfo
mingw32-pthreads-w32
mingw32-w32api
msys-base
msys-bash
msys-console
msys-crypt
msys-diffutils
msys-libcrypt
msys-libgmp
msys-libiconv
msys-libminires
msys-m4
msys-minires
msys-zlib

Paso 3

Deben instalar dos herramientas adicionales. La primera es un cliente SVN para poder obtener las últimas versiones de los paquetes de GNU del servidor correspondiente. Una versión para Windows puede descargarse aquí y puede instalarse en cualquier directorio.

También debe instalarse un editor de código. Yo recomiendo la versión de Emacs para MinGW. Puede descargarse aquí. Una vez descargado debe copiarse a la carpeta donde instalamos MinGW (en mi caso C:\MinGW) y extraerse allí. Ahora podemos arrancar emacs con el ejecutable que se encuentra en la carpeta bin en la ruta donde se instalo MinGW (en mi caso C:\MinGW\bin\). También puede crearse un acceso directo en el escritorio.

Paso 4

Debemos montar nuestro entorno MinGW para poder utilizarlo. Para ello debemos crear un archivo llamado fstab (con Emacs) en la ruta \msys\1.0\etc\ de nuestro entorno MinGW (en mi caso C:\MinGW\msys\1.0\etc\). Este archivo debe contener la ruta donde esta instalado MinGW y el nombre con que se montara dicha carpeta en el entorno del shell. En mi caso esta archivo contiene la linea:

C:\MinGW  /mingw

Lo que esto quiere decir es que en el shell “mingw” sera el nombre con el que se montara la carpeta en la que esta instalado MinGW. Puede utilizarse cualquier otro nombre que no este ya utilizado (ninguno de los nombres de las carpetas en C:\MinGW\msys\1.0\). Al montar esta carpeta tenemos acceso a todas las herramientas en MinGW. Obsérvese el uso de la diagonal y contra-diagonal. Guardamos el archivo y podemos cerrar Emacs.

Paso 5

Abramos la consola o shell dando doble clic en el archivo msys.bat que en mi caso se encuentra en la ruta C:\MinGW\msys\1.0\. Podemos crear un acceso directo en el escritorio. Esa ventana negra que aparece con unas letras de colores, es el shell, terminal o linea de comandos. Y la usaremos de aquí en adelante para instalar otros paquetes de software. La primera vez que se ejecuta el shell, se crea una carpeta para nuestro usuario (en mi caso es la carpeta C:\MinGW\msys\1.0\home\German\). Si el nombre de usuario contiene espacios o caracteres que no pertenecen al inglés (la letra ñ, tildes, etc), deberemos trabajar en otra carpeta, ya que las herramientas de construcción no funcionan en dichas carpetas. Veamos rápidamente algunos comandos.

Para ejecutar un comando se escribe este y luego se presiona la tecla ENTER. A continuación doy algunos comandos que es importante conocer. Para ingresar a un directorio:

cd nombredirectorio

Para salir de un directorio:

cd ..

Para retornar a la carpeta personal:

cd

Para ver el contenido de la carpeta actual:

ls

La tecla TAB puede utilizarse para completar el nombre de los comandos ingresados, así como de los archivos, directorios o rutas. Por ejemplo, si tenemos un directorio llamado archivos y quereos ingresar en este, solamente debemos escribir algo como “cd arc” y presionar la tecla TAB, la que se encargara de completar el comando a “cd archivos”. Si hay mas de una carpeta cuyo nombre comience con “arc”, la tecla TAB no hará nada.

Paso 6

Es hora de instalar gnustep-make. En la consola obtengamos el código correspondiente mediante SVN. Escribamos:

svn co http://svn.gna.org/svn/gnustep/tools/make/trunk make

y presionemos la tecla ENTER. Esto descarga el código de gnustep-make en la carpeta make. Procedamos a la instalación con los siguientes cuatro comandos:

cd make
./configure
make
make install

Obviamente hay que esperar que ss termine de ejecutar un comando antes de ingresar el siguiente. Hecho esto salgamos de la carpeta “cd ..”.

Paso 7

Debe instalarse la librería libffi, la cual puede descargarse desde la página oficial. La última versión es esta. Descomprimamos el contenido en nuestra carpeta de trabajo y ejecutemos los siguientes comandos. x.x.x es la versión de la librería libffi que se haya descargado y “mingw” es el nombre que se especifico en el archivo fstab para referirnos a la carpeta de instalación de MinGW. En mi caso es simplemente “mingw”:

cd libffi-x.x.x
./configure –prefix=/mingw
make
make install
mv /mingw/lib/libffi-x.x.x/include/* /mingw/include/

Paso 8

Debemos instalar la librería ICU, descarguemos la última versión que es esta. Descomprimamos el contenido en nuestra carpeta de trabajo y ejecutemos los siguientes comandos (mingw es el nombre de montaje):

cd icu/source
./runConfigureICU –disable-release MinGW –prefix=/mingw
make
make install

Paso 9

Debemos instalar GNUtls, ya existe una versión compilada para Windows que se puede descargar aquí. Este paquete se debe descomprimir en la carpeta donde esta instalado nuestro entorno MinGW (en mi caso C:\MinGW).

Paso 10

Debemos instalar pkg-config, ya existe una versión compilada para Windows aquí. Descomprímase el contenido en algún lugar y luego cópiese el contenido a las carpetas correspondientes del entorno MinGW (en mi caso C:\MinGW). Es decir, copiar los archivos que están en la carpeta /bin a la correspondiente carpeta /bin del entorno MinGW. Son solo unos cuantos archivos.

Paso 11

Debemos instalar libxml, la última versión es esta. Descomprimamos el contenido en nuestra carpeta de trabajo y ejecutemos los siguientes comandos. x.x.x es la versión de la librería descargada y “mingw” es el nombre de montaje:

cd libxml2-x.x.x
./configure –prefix=/mingw
make
make install

Paso 12

Debemos hacer un par de correcciones en algunos archivos de MinGW. Con el editor emacs abrase el archivo “/include/winsock2.h” en nuestro entorno MinGW (en mi caso C:\MinGW\include\winsock2.h) y en la estructura sockaddr (linea 336) cámbiese “sa_data[14];” por “sa_data[22];”. Ahora en el archivo “/include/unistd.h” agréguese un par de diagonales (//) al inicio de la linea 95 (#include <parts/time.h>), agréguense también al inicio de las lineas que van de la 104 a la 117 (toda la función nanosleep). Hecho esto guárdense los archivos.

Paso 13

Debemos ejecutar el script de GNUstep con el siguiente comando:

. /local/share/GNUstep/Makefiles/GNUstep.sh

Para correr automáticamente este script cada vez que abramos el shell, agreguemos con Emacs la linea anterior al final del archivo profile (en mi caso este archivo se encuentra en “C:\MinGW\msys\etc\1.0\”).

Paso 14

Ahora procedamos a instalar gnustep-base. Obtengamos el código con el comando:

svn co http://svn.gna.org/svn/gnustep/libs/base/trunk base

Ahora compilemos e instalemos con los siguientes comandos:

cd base
./configure
make
make install

Y con esto tenemos todo lo necesario para comenzar a escribir programas de linea de comandos con GNUstep. En la segunda parte veremos como instalar la parte gráfica de GNUstep.

Espero que las instrucciones este claras, si no pues mandan sus dudas.

16 febrero 2015

GNUstep en Windows

Filed under: Uncategorized — Etiquetas: , , , , , — Germán Arias @ 1:11 am

Por cuestiones de algunos proyectos me he visto en la necesidad de instalar GNUstep en la última versión de MinGW. Lo que ciertamente no ha sido nada sencillo, al menos para alguien como yo que nunca antes me las había visto con MinGW y tomando en cuenta los cambios en la última versión de este que hacían prácticamente inservible la documentación oficial sobre la instalación en este entorno. Obviamente los instaladores actuales de GNUstep para Windows no me sirven, porque yo quiero hacer uso de varias mejoras que se han añadido recientemente a GNUstep. Mi intención también es corregir algunos bugs en esta plataforma, como los problemas con los tooltips y el autocompletado. Pero después de varias semanas y algunos cambios en gnustep-base, finalmente lo he logrado. Así que en los próximos días estaré publicando las instrucciones para aquellos que quieran instalar la versión en desarrollo de GNUstep en Windows. No es nada del otro mundo, solo hay que tener paciencia con la compilación que en MinGW es mas lenta que en un sistema tipo unix o bsd.

31 diciembre 2014

GWorkspace 0.9.3

Filed under: Uncategorized — Etiquetas: , , , , — Germán Arias @ 8:53 pm

Riccardo Mottola ha liberado una nueva versión de GWorkspace (el administrador de escritorio de GNUstep). Esta versión es una corrección de errores, entre las que se pueden mencionar:

  • Mejoras en la forma en que se guardan las preferencias (es necesario borrar las preferencias anteriores con “defaults delete GWorkspace”).
  • Las operaciones sobre archivos funcionan correctamente.
  • Varias correcciones para evitar fugas de memoria.
  • Correcciones para Clang.
  • Desmontar volúmenes con Recycler.

Últimamente he estado muy ocupado, pero espero publicar algunos vídeos el próximo año y continuar con mis post sobre desarrollo de juegos.

4 noviembre 2014

Nuevos paquetes

Filed under: Uncategorized — Etiquetas: , , — Germán Arias @ 7:25 pm

Hace un par de semanas se libero la versión 1.24.7 del paquete gnustep-base. Esta nueva versión evita el uso de ciertas versiones de SSL para eliminar la posibilidad de comprometer la seguridad del sistema. También se libero una nueva versión del IDE ProjectCenter, esta nueva versión contiene varias mejoras para utilizar PC con el estilo de menú empotrado en la ventana (solo para sistemas tipo Unix). Algunos de estos cambios impiden el uso del plugin del editor Gemas, por lo que deberé liberar una nueva versión de este en los próximos días. Últimamente he estado muy ocupado, pero espero publicar pronto más artículos sobre el uso de OpenGL con GNUstep.

23 octubre 2014

CGSOL 2014

Filed under: Uncategorized — Etiquetas: , , , , , , — Germán Arias @ 6:13 pm

Por si alguien anda en Guatemala, o cerca de aquí, están cordialmente invitados al Congreso Guatemalteco de Software Libre 2014. El cual se llevara a cabo en la ciudad de Quetzaltenango. Por supuesto, daré una charla sobre GNUstep y otra sobre FísicaLab.

AficheCGSOLxela

30 agosto 2014

Algunos comentarios sobre OpenGL

Filed under: Uncategorized — Etiquetas: , , , — Germán Arias @ 6:42 pm

Bueno, hace unas semanas publique un artículo sobre el uso de OpenGL con GNUstep. En las últimas semanas he aprendido, entre otras cosas, a cargas texturas basadas en imágenes PNG. Sin embargo, después de leer más sobre OpenGL me di cuenta de muchas de las funciones que yo había utilizado, ya no están disponibles en versiones recientes de OpenGL. Lo que significa que en algún momento mi app iba a quedar obsoleta. Por esta razón, voy a aprender OpenGL moderno antes de ponerme a hacer algún juego. Por supuesto, tratando que este sea compatible con versiones anteriores de OpenGL, para no tener que vérmelas con adaptar el juego para diferentes versiones. Aunque en algunos aspectos eso pueda ser inevitable. Así que voy a trabajar en una nueva versión de mi artículo anterior sobre OpenGL, para mostrarlo en una forma moderna.

12 agosto 2014

Correcciones en el manual de GNUstep

Filed under: Uncategorized — Etiquetas: , , , , , , — Germán Arias @ 12:11 pm

He actualizado el manual de GNUstep. La mayoría de los cambios son en el primer capítulo, donde hago una mejor explicación de la apariencia y comportamiento de las aplicaciones hechas con GNUstep en diferentes escritorios y sistemas operativos. Luego solo hay unas aclaraciones menores en otros capítulos y la corrección de un error en el último capítulo. Pueden descargar esta nueva versión en la sección de Documentos.

24 julio 2014

Juegos con GNUstep

Filed under: Uncategorized — Etiquetas: , , , , , — Germán Arias @ 7:42 pm

Ahora que me ha dado la manía de desarrollar juegos para PC, me he puesto a aprender OpenGL. Por supuesto, esto no es cosa de un día, pero ya aprendí como iniciar OpenGL en una app de GNUstep. Aunque también me queda la duda de si es posible desarrollar un juego utilizando completamente el framework GUI. Actualmente existen juegos desarrollados con GNUstep como Oolite y CoreBreach, pero hacen uso de SDL y OpenGL. Por supuesto existen otros juegos sencillos desarrollados completamente con el framework GUI, como los del proyecto GAP. Pero en este artículo voy a explicar lo básico para iniciar OpenGL en una app de GNUstep.

Primero debe crearse una app ya sea con ProjectCenter, Gemas o Emacs (o escribiendo todo a mano). Seguidamente debe agregarse un outlet, en mi caso lo llamo glView, en la clase que hace de controlador. Este outlet debe conectar con el CustomView de la interfaz gráfica, el cual debe ser una instancia de una subclase de la clase NSOpenGLView, en este ejemplo llamo a esta clase GameGLView. Entonces en la clase que hace de controlador, y que es el delegate de la aplicación, en el método -applicationDidFinishLaunching: escribimos:

opengl1

El método -refresh, implementado en GameGLView, es obviamente el encargado de actualizar el escenario. El código de esta última clase es el siguiente:

opengl2

El método -prepareOpenGL es el encargado de preparar OpenGL y es llamado únicamente una vez al crearse la instancia. El método -drawRect: es el método encargado de actualizar el contenido del escenario. Por supuesto, este método no debe llamarse nunca directamente, de allí el método -refresh. El método -reshape es encargado de actualizar la escena cuando la ventana es redimensionada, aunque en este ejemplo no hace mayor cosa. Para el que conozca de OpenGL notara que lo único que hace esta app es dibujar un rectángulo de color blanco. Esto se muestra en la siguiente imagen:

opengl3

Todo esto es muy básico, pero iré compartiendo mis avances en este campo. Por lo demás, haré un pequeño experimento para ver la factibilidad de crear un juego 2D utilizando únicamente el  framework GUI. Por supuesto, me refiero a un juego mas complejo que los disponibles en GAP.

23 junio 2014

CoreObject y otras noticias

Filed under: Uncategorized — Etiquetas: , , , , , , — Germán Arias @ 11:27 pm

Hace unas semanas Quentin Mathé libero una versión beta de CoreObject, un framework para el control de versiones de objetos. De acuerdo a la página oficial: “La idea es ir mas allá de los tradicionales sistemas de archivos y bases de datos, soportando la organización de documentos, estructuración de documentos, control de versiones, riqueza en Hacer/Deshacer y edición colaborativa en un solo framework”. Este paquete requiere características del compilador CLANG, por lo que no puede utilizarse con GCC :(. Es software libre liberado bajo la licencia MIT.

Por otra parte, hace algunas semanas escribía que no encontraba como resolver el problema de ProjectCenter (el IDE de GNUstep) en Windows. Si recuerdan, este problema era debido a las limitaciones en ese sistema operativo para ejecutar comandos en otro hilo. Bueno, pues siguiendo el viejo dicho “Divide y vencerás”, encontré la solución. Si Windows no permite ejecutar toda la tanda de comandos, ¿por que la necedad en hacerlo de un solo?. El interprete de comandos nos permite ejecutar las instrucciones por lotes, asegurando que cada lote no sobrepasa las limitaciones de Windows, Ya tengo escrita la solución, solo falta afinar algunas cosas y probarlo en una maquina Windows, que no tengo. Pero espero que estas mejoras estén ya en el repositorio la próxima semana.

6 mayo 2014

gs-emacs 0.1

Filed under: Uncategorized — Etiquetas: , , — Germán Arias @ 11:24 pm

Bueno, pues dando rienda suelta a mis incipientes conocimientos de elisp he escrito este sencillo paquete que agrega una entrada llamada GNUstep al menú de Emacs. Esta tiene tres opciones, las dos primeras son para crear sencillos proyectos de una App o Tool (para principiantes). Y la tercera opción sustituye caracteres, que no pertenecen al lenguaje Inglés, con su respectivo código. Esto es útil para archivos de strings y para archivos plist. Estas tres opciones pueden ejecutarse, respectivamente, mediante los comandos: M-x make-app, M-x make-tool y M-x replace-foreign-characters. La siguiente imagen muestra como queda el menú de Emacs:

gnustep-emacs

La siguiente imagen muestra un proyecto de herramienta:

gnustep-tool

Este paquete también ofrece auto-completado para GNUstep y la posibilidad de abrir los archivos gorm desde dired (load).

gnustep-completion

Compilando y probando una herramienta:

gnustep-compilation

Este paquete se puede descargar en este enlace. Simplemente se descomprime en algún lugar y luego en nuestro archivo .emacs se carga el archivo gnustep.el. Algo como:

(load-file “/home/user/gs-emacs/gnustep.el”)

Léase el archivo README si GNUstep no esta instalado con el layout por defecto. Es decir, si se tiene la necesidad de ejecutar el script de GNUstep.

Mi intención con este paquete, es entusiasmar a los usuarios de Emacs a experimentar con este magnifico entorno de desarrollo. Así como facilitarles el aprendizaje. Por lo que espero sea de utilidad.

Older Posts »

El tema Silver is the New Black. Crea un blog o un sitio web gratuitos con WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.