Empaquetado RPM. Parte 4: Empaquetando Not Tetris 2

En la anterior entrega empaquetamos el motor del juego, ahora hay que hacer lo mismo con el juego si queremos jugar.

Empaquetando Not Tetris 2

Así quedará el SPEC de Not Tetris 2. Pongo comentarios para explicar las cosas que difieren con lo que se explicó en las partes anteriores.

Esta vez no hay sección %build. Esto se debe a que los juegos para LÖVE son ficheros ZIP con la extensión .love, que contienen scripts Lua. Vamos, que no hay que compilar nada.

Name:           nottetris
Version: 2
Release: 0%{?dist}
Summary: Classic Tetris mixed with physics

# En esta ocasión incluimos también el sumario en español
Summary(es): Tetris clásico mezclado con física
Group: Amusements/Games

# Como es un script, la arquitectura del sistema nos es indiferente
BuildArch: noarch

License: ZLIB/libPng
URL: http://stabyourself.net/%name/
Source0: http://stabyourself.net/dl.php?file=%name%version/%name%version-source.zip

# Necesitamos estos programas para extraer el icono del lanzador del juego
BuildRequires: unzip
BuildRequires: /usr/bin/convert

# El motor del juego hace falta para ejecutarlo, pero no para construir el RPM,
# por eso lo etiquetamos como Requires en vez de como BuildRequires
Requires: love


%description
Not Tetris 2 is the spiritual successor of the classic Tetris mixed with
physics. The result is a fun spinoff in which blocks are no longer bound to the
usual grid. Blocks can be rotated and placed at any angle, resulting in a
complete mess if not careful. And with the newest cutting edge technology, Not
tetris 2 allows line clears when the lines are sufficiently filled. The old
mode is still available for play and is now called Stack.

# También incluimos la traducción en español
%description -l es
Not Tetris 2 es el sucesor espiritual del Tetris clásico mezclado con física.
El resultado es un juego divertido en el cual los bloques ya no están limitados
a moverse por la típica rejilla. Los bloques se pueden rotar y colocar en
cualquier ángulo, lo que resulta en un lío tremendo si no se lleva cuidado.
Con la última tecnología, Not Tetris 2 permite que las líneas se vacíen cuando
estan suficientemente completas. El antiguo modo todavía está disponible para
jugar, y ahora se llama "Stack".


%prep
%setup -qc

# Nuevamente eliminamos los finales de línea tipo Windows
sed -i 's/r$//' *.txt

# Renombramos los archivos para que queden más 'estilo GNU'
mv 'Not Readme.txt' readme.txt
mv 'Not Tetris 2.love' %name.love

# Creamos un ejecutable
echo -e "#!/bin/shnlove %_datadir/%name/%name.loven" > %name

# Crear el lanzador para el escritorio
echo "[Desktop Entry]Type=Application
Version=%version
Encoding=UTF-8
Name=Not Tetris 2
Comment=Classic Tetris mixed with physics
Comment[es]=Tetris clásico mezclado con física
Icon=%_icons96dir/%name.png
Exec=%name
Terminal=false
StartupNotify=true
Categories=Application;Game;ArcadeGame;
" > %name.desktop

# Creamos un icono para la aplicación, basado en una imagen que trae el juego
unzip -p %name.love graphics/title.png | convert - -geometry 96x96 %name.png


# Instalamos los ficheros necesarios:
%install

# 1. Los datos del juego
install -pDm u=rw,go=r %name.love %buildroot%_datadir/%name/%name.love

# 2. El ejecutable
install -pDm u=rwx,go=rx %name %buildroot%_bindir/%name

# 3. El lanzador de escritorio
install -pDm u=rwx,go=rx %name.desktop %buildroot%_desktopdir/%name.desktop

# 4. El icono para el lanzador
install -pDm u=rw,go=r %name.png %buildroot%_icons96dir/%name.png


%files

# Indicamos que el dueño de los ficheros será root
%defattr(-, root, root)

# Indicamos qué ficheros son de documentación
%doc readme.txt

# Listamos los 4 ficheros que instalará este paquete
%_bindir/%name
%_datadir/%name/%name.love
%_desktopdir/%name.desktop
%_icons96dir/%name.png

# Listamos también el directorio de datos para que se borre al desinstalar
%_datadir/%name


%changelog
* Fri Nov 18 2011 Jairot Llopis 2-0
- Initial release

Hecho esto, repetimos la misma operación que con el anterior paquete:

sudo yum-builddep ~/rpmbuild/SPECS/nottetris.spec
rpmbuild -ba ~/rpmbuild/SPECS/nottetris.spec

Ahora solo falta instalarlos y jugar:

sudo yum install ~/rpmbuild/RPMS/x86_64/love-0.7.2-1.fc16.x86_64.rpm ~/rpmbuild/RPMS/noarch/nottetris-2-0.fc16.noarch.rpm

Actualizaciones

Cuando queramos actualizar el paquete, deberemos aumentar el número indicado en Release, e incluir una nueva entrada en la sección %changelog. En caso de que la actualización sea porque ha salido una nueva versión, lo que haríamos sería aumentar el número indicado en Version.

Conclusión

Con esto finaliza el tutorial de empaquetado RPM. Solo cubre lo más básico, pero espero que hayáis aprendido mucho. Una vez le pilles el tranquillo, seguro que empiezas a empaquetarlo todo.

¡Ah!, y como dije al principio, ¡cuidado, que este juego engancha demasiado!

Curso de Empaquetado RPM: Parte 1, Parte 2, Parte 3


2 comentarios

  1.   Usemos Linux dijo

    Lo intentaré…
    Saludos! Pablo.

  2.   Borisdsp dijo

    Me parece muy interesante, gracias por compartirlo.
    Por cierto no podrías hacer otra entrega pero con archivos .deb? Te lo agradecería muchísimo mas.
    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.