[EN] This document is a kind of howto for me in order to build the SDLMAME package for DEBIAN GNU/Linux. You can visit directly the repository containing latest stable version of SDLMAME package, available at http://apt.ludomatic.fr/?hl=en

MAINTENANCE DU PAQUET DEB SDLMAME


Préparation des sources


NOTE1: Cette documentation risque fort d'être illisible car elle est en constante évolution au fur et à mesure de mes découvertes et des changements du code source de SDLMAME. Si vous aussi découvrez certaines méthodes ou outils et/ou voulez plus d'informations n'hésitez pas à me contacter. Pour obtenir directement le paquet Debian à jour, rendez-vous sur le dépôt http://apt.ludomatic.fr/

NOTE2: Installer au préalable les paquets suivants
# aptitude install build-essential autoconf automake dh-make debhelper devscripts fakeroot gnupg lintian linda quilt pbuilder debian-policy developers-reference


NOTE3: La série GCC 4.3 ne compile pas bien MAME, utiliser la 4.2 ou la 4.4 par exemple
# aptitude install gcc-4.2 g++-4.2
# make CC=/usr/bin/gcc-4.2


NOTE232: MAME publie une nouvelle version officielle à peu près tous les mois. Pour symboliser le numéro de version (par exemple 0132) j'utiliserai la variable $VERSION.
$ export VERSION=0132


Télécharger le zip depuis http://rbelmont.mameworld.info/?page_id=163 :
$ wget --user-agent="Mozilla (ludomatic.fr)" "http://rbelmont.mameworld.info/sdlmame$VERSION.zip"

et le décompresser dans le dossier ~/dev/deb/sdlmame/$VERSION/
$ unzip ./sdlmame*.zip


Dans le dossier courant [VERSION], renommer le dossier sdlmame[VERSION] fraichement obtenu en format "paquet-version":
$ mv ./sdlmame$VERSION ./sdlmame-$VERSION


Note: Lors de la debianisation initiale des sources, j'ai utilisé les commandes suivantes
cd sdlmame-$VERSION
dh_make -e ludomatic@gmail.com -f ../sdlmame-$VERSION.tar.gz



Créer le tgz "original" avant toute modification:
$ tar czvf sdlmame_$VERSION.orig.tar.gz ./sdlmame-$VERSION


Recopier le dossier "./debian" depuis la version précédente [N-1] du paquet:
$ cp -vr ../[N-1]/sdlmame-[N-1]/debian ./sdlmame-$VERSION/


Passer dans le dossier des sources:
$ cd ./sdlmame-$VERSION/


Vérifier la $DISTRIB dans ./debian/changelog puis... Et saisir les infos relatives à cette mise-à-jour, par exemple:
sdlmame ([VERSION]-1[DISTRIB]1) stable; urgency=low                                                                                         

  * MAME changelog available at http://mamedev.org/releases/whatsnew_0124.txt :
	"After a long development cycle, MAME 0.124 is now ready for release."     
  * Original sources available at http://rbelmont.mameworld.info/?page_id=163 :
	"The latest version is 0.124. Unlike Windows we got it right the first time,
	so no “a” is necessary ;)"                                      
  * Packaging notes :                                                           
	This sdlmame package for debian is out nearly one year after my last build. 
	I apologize and hope to offer you the next release a bit more faster ;)     
	Free ROMs included : Robby Roto (Bally/Midway), Gridlee (Videa), Alien Arena
	(Duncan Brown), Teeter Torture (Exidy), Circus (Exidy), Robot Bowl (Exidy), 
	Car Polo (Exidy), Rip Cord (Exidy), Fire One (Exidy), Crash (Exidy), Star   
	Fire (Exidy), Side Track (Exidy), Spectar (Exidy), Targ (Exidy).            
	Enjoy !                                                                     

 -- Ludovic Lechapt <ludomatic@gmail.com>  Thu, 27 Mar 2007 14:08:54 +1100

Gérer les patchs à appliquer (http://pkg-perl.alioth.debian.org/howto/quilt.html)
$ quilt new link_zlib_expat.patch (quilt pop link_zlib_expat.patch OU quilt push link_zlib_expat.patch pour modifier selon la position du patch dans la liste)
$ quilt edit makefile                                                                                                                                         
$ quilt refresh                                                                                                                                               
$ quilt new make_install.patch [etc...]                                                                                                                       
($ quilt applied)                                                                                                                                             

Au besoin
Toujours dans "debian", vérifier dans le fichier "postinst" la liste des ROMs libres à télécharger et la taille totale annoncée.


Empaquetage des sources


Mettre à jour l'environnement de compilation (chroot) de pbuilder :
$ pbuilder-[DISTRIB]-i386 update (ex: [DISTRIB]=lenny)

Enregistrer ces variables d'environnent pour que debbuild puisse utiliser la clé gpg pour signer les sources:
$ export DEBNAME=Ludovic Lechapt
$ export DEBEMAIL=ludomatic@gmail.com
$ export EMAIL=ludomatic@gmail.com
$ export DEBFULLNAME=Ludovic Lechapt

Dans le dossier ./sdlmame-[VERSION], suppression des anciens builds, recompilation des sources puis du .deb:
$ rm -f ../*diff.gz ../*.dsc ../*.build ../*.changes && debuild -S -sa && pbuilder-[DISTRIB]-[ARCH] build ../*.dsc (ex: [ARCH]=i386, [DISTRIB]=lenny)
Signer les sources (au besoin changer les droits avec "chown ludo:ludo /var/cache/pbuilder/[DISTRIB]-[ARCH]/result/") du dossier "result":
$ debsign -S /var/cache/pbuilder/[DISTRIB]-[ARCH]/result/sdlmame_[VERSION]-1(UBUNTU)_[ARCH].changes


Mise à jour du catalogue


Dans "~/dev/apt/repository", mettre à jour le numéro de version pour sdlmame dans le fichier "includedeb.sh":
(...)
echo -e "\n-- sdlmame (deb src) lenny";
reprepro --ask-passphrase -VV -b . -C contrib include lenny /var/cache/pbuilder/lenny-i386/result/lenny-i386/result/sdlmame_0124-1.1_i386.changes
(...)

Et effectuer les mises à jour avec "reprepro" par l'exécution du fichier:
$ ./includedeb.sh

Vérifier que tout est à sa place avec la commande:
$ reprepro dumpreferences
etch|contrib|amd64 pool/contrib/e/ekd/ekd_1.3-1-1_all.deb
etch|contrib|i386 pool/contrib/e/ekd/ekd_1.3-1-1_all.deb 
dapper|contrib|amd64 pool/contrib/e/ekd/ekd_1.3-1-1ubuntu1_all.deb
dapper|contrib|i386 pool/contrib/e/ekd/ekd_1.3-1-1ubuntu1_all.deb 
edgy|contrib|amd64 pool/contrib/e/ekd/ekd_1.3-1-1ubuntu1_all.deb  
edgy|contrib|i386 pool/contrib/e/ekd/ekd_1.3-1-1ubuntu1_all.deb   
feisty|contrib|amd64 pool/contrib/e/ekd/ekd_1.3-1-1ubuntu1_all.deb
feisty|contrib|i386 pool/contrib/e/ekd/ekd_1.3-1-1ubuntu1_all.deb 
lenny|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1.1.diff.gz
lenny|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1.1.dsc    
lenny|contrib|i386 pool/contrib/s/sdlmame/sdlmame_0124-1.1_i386.deb 
etch|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1.diff.gz   
etch|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1.dsc       
etch|contrib|i386 pool/contrib/s/sdlmame/sdlmame_0124-1_i386.deb    
edgy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.0.diff.gz
edgy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.0.dsc    
edgy|contrib|i386 pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.0_i386.deb 
feisty|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.1.diff.gz
feisty|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.1.dsc    
feisty|contrib|i386 pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.1_i386.deb 
gutsy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.2.diff.gz 
gutsy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.2.dsc     
gutsy|contrib|i386 pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.2_i386.deb  
hardy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.3.diff.gz 
hardy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.3.dsc     
hardy|contrib|i386 pool/contrib/s/sdlmame/sdlmame_0124-1ubuntu1.3_i386.deb  
edgy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124.orig.tar.gz         
etch|contrib|source pool/contrib/s/sdlmame/sdlmame_0124.orig.tar.gz         
feisty|contrib|source pool/contrib/s/sdlmame/sdlmame_0124.orig.tar.gz       
gutsy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124.orig.tar.gz        
hardy|contrib|source pool/contrib/s/sdlmame/sdlmame_0124.orig.tar.gz        
lenny|contrib|source pool/contrib/s/sdlmame/sdlmame_0124.orig.tar.gz        


Ok, lancer la commande suivante qui effectuera un rsync sur le dépôt apt.ludomatic.fr:
$ ./updatesrv.sh

Rendez-vous sur apt.ludomatic.fr http://apt.ludomatic.fr :)



Compilation sur un amd64 émulé depuis mon i386 hôte via qemu/pbuilder


Création de la machine après avoir correctement lié "~/bin/@qemubuilder-lenny-amd64" et configuré "~/dev/deb/pbuilder/lenny-amd64/qemubuilder.lenny-amd64.config":
$ qemubuilder-lenny-amd64 create


Login avec sauvegarde à la sortie en ajoutant les principaux outils de compilation et utilitaires (mettre le minimum):
$ qemubuilder-lenny-amd64 login --save-after-login
amd64# aptitude install autoconf automake fakeroot dh-make debhelper devscripts gnupg lintian quilt sudo vim mc
amd64# adduser ludo
amd64# exit


Chrooter dans le fichier Qemu:
$ sudo mount -o loop ~/dev/deb/pbuilder/lenny-amd64/base-amd64.qemu ~/dev/deb/pbuilder/mount.qemu

Copier dans l'environnement amd64 les scripts pbuilders perso:
/bin/@pbuilder-etch-amd64
/bin/@pbuilder-lenny-amd64
/bin/@pbuilder-squeeze-amd64
/bin/pbuilder/pbuilder-dist-arch
Mettre à jour le .bashrc en conséquence:
PATH="$HOME/bin:$PATH"
alias ll='ls -la'
alias lh='ls -lah'
export EDITOR='mcedit'
export DEBNAME='Ludovic Lechapt'
export DEBEMAIL=ludomatic@gmail.com
export EMAIL=ludomatic@gmail.com
export DEBFULLNAME='Ludovic Lechapt'

Copier les fichiers et dossiers précédemment crées (lors du paquet i386) dans "~/dev/deb/pbuilder/mount.qemu/root/dev/deb/sdlmame/[VERSION]":
sdlmame-[VERSION]/
build.sh
sdlmame_[0132].orig.tar.gz
Copier la clé gnupg (dossier des clés gpg)
Penser à démonter avant de lancer la machine virtuelle:
$ sudo umount ~/dev/deb/pbuilder/mount.qemu


On se lance l'environnement Qemu ainsi préparé:
$ qemubuilder-lenny-amd64 login
amd64# su - ludo

Et on construit le paquet sdlmame pour etch amd64 (aciennement /mnt/bridge/0132/sdlmame-0132# dpkg-buildpackage -b) avec ce script exécuté depuis le dossier contenant le orig.tar.gz:
ludo@amd64$ cd ~/dev/deb/sdlmame/[VERSION]/
ludo@amd64$ ./build.sh


Fichier ~/dev/deb/sdlmame/[VERSION]/build.sh
#!/bin/bash

export PTR64=1
export OPTIMIZE=0

VER="0132";

DIST="etch";
#DIST="lenny";
#DIST="squeeze";

PACKVER="1"; # a incrémenter si modifs sur le package
SUBVER="1";  # a incrémenter si update des sources upstream sans changer le packaging

#ARCH="i386";
ARCH="amd64";


rm -f ./*diff.gz ./*.dsc ./*.build ./*.changes
cd sdlmame-$VER

debuild -S -sa -us -uc && pbuilder-$DIST-$ARCH build ../sdlmame_$VER-${PACKVER}${DIST}${SUBVER}.dsc && lintian -iv /var/cache/pbuilder/$DIST-$ARCH/result/sdlmame_$VER-${PACKVER}${DIST}${SUBVER}_$ARCH.changes
debsign -S /var/cache/pbuilder/$DIST-$ARCH/result/sdlmame_$VER-$PACKVER${DIST}${SUBVER}_$ARCH.changes

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki