[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...
- nouvelle stable: $ dch -v $VERSION-1${DISTRIB}1
- mise à jour mineure (sans mise à jour des sources en amont) : $ dch -i
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
- utiliser $HOME/.quiltrc pour forcer le dossier des patches dans debian/patches
- supprimer le .pc dans le dossier des sources (après retour aux fichiers non patchés d'origine avec $ quilt pop -a)
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)
- rajouter "-us -uc" aux options de debbuild pour ne pas signer avec la clé gpg (empêche l'ajout au dépôt sécurisé)
- debuild va créer les archives suivantes dans le dossier parent:
sdlmame_[VERSION]-1(UBUNTU).diff.gz
sdlmame_[VERSION]-1(UBUNTU).dsc
sdlmame_[VERSION]-1(UBUNTU)_source.build
sdlmame_[VERSION]-1(UBUNTU)_source.changes
- pbuilder doit compiler grâce aux sources et aux archives créées les fichiers suivants dans "/var/cache/pbuilder/[DISTRIB]-[ARCH]/result/":
sdlmame_[VERSION]-1(UBUNTU).diff.gz
sdlmame_[VERSION]-1(UBUNTU).dsc
sdlmame_[VERSION]-1(UBUNTU)_[ARCH].changes
sdlmame_[VERSION]-1(UBUNTU)_[ARCH].deb
sdlmame_[VERSION].orig.tar.gz
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
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
There are 3 comments on this page. [Display comments]