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 Llopis2-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
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
Lo intentaré…
Saludos! Pablo.