Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[ebuild] super mario war?
View unanswered posts
View posts from last 24 hours

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
_tebra_
Guru
Guru


Joined: 12 Nov 2004
Posts: 304
Location: Brussels - Belgium

PostPosted: Mon Apr 10, 2006 12:41 pm    Post subject: [ebuild] super mario war? Reply with quote

Bonjour,
j'aimerais compiler/installer le jeu Super Mario War mais je ne trouve pas de ebuild dans le portage, ni dans le forum, ni dans le bugzilla. :cry:

L'un d'entre vous me ferait-il le plaisir de me construire un ebuild pour ce jeu :P

Merci d'avance


Last edited by _tebra_ on Tue Apr 11, 2006 6:52 am; edited 2 times in total
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2387
Location: ~Belfort! - France - EU

PostPosted: Mon Apr 10, 2006 12:42 pm    Post subject: Reply with quote

Je t'invite à lire le poste de Boozo, ici,, et de participer à l'élaboration de cet ebuilt.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1887
Location: 127.0.0.1

PostPosted: Mon Apr 10, 2006 6:43 pm    Post subject: Reply with quote

Bon alors, nous avons affaire à une version CVS (j'ai regardé vite fait le site, les sources ne sont pas disponibles sous forme de snapshot).
Alors, 2 solutions : soit on construit un ebuild CVS, donc à vérifier régulièrement, soit on effectue un snapshot, et on construit l'ebuild à partir de celui-ci, et dans ce cas, c'est le snapshot qu'il faudra distribuer.

Si on choisit la version CVS :

  • l'ebuild dépendra de eutils.eclass : c'est l'eclass de base, tous les ebuilds dépendent de cette classe (directement ou indirectement). Elle contient les fonctions génériques utilisées par quasiment tous les ebuilds, comme la fonction epatch.
  • l'ebuild héritera de l'eclass cvs.eclass, contenant toutes les fonctions pour la connexion à un serveur cvs, récupération des sources, etc...
  • l'ebuild héritera evidemment de l'eclass games.eclass, afin de suivre la politique d'harmonisation de l'installation d'un jeu sur un système gentoo.

Je vous invite à lire le contenu de ces eclass (/usr/portage/eclass), la plupart du temps il y a beaucoup de commentaires, et quand il n'y en a pas, il y a de la documentation disponible en ligne :wink:


Les paramètres cvs disponibles sur le site :
Quote:

cvs -d :pserver:anonymous@metascape.afraid.org:/cvsroot login
cvs -z3 -d :pserver:anonymous@metascape.afraid.org:/cvsroot checkout smw


Je décide que l'ebuild s'appellera smw-cvs, dans la catégorie games-arcade, je créé donc l'arborescence nécessaire dans mon overlay :
Code:

# mkdir /usr/local/portage/games-arcade
# mkdir /usr/local/portage/games-arcade/smw-cvs
# touch /usr/local/portage/games-arcade/smw-cvs/smw-cvs-1.6.ebuild


Le début de l'ebuild devrait ressembler à ceci (la licence restant à vérifier ?) :
Quote:

# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

ECVS_SERVER="metascape.afraid.org:/cvsroot"
ECVS_MODULE="smw"
ECVS_USER="anonymous"
ECVS_TOP_DIR="${DISTDIR}/cvs-src/${PN}"

inherit eutils cvs games

DESCRIPTION="Super Mario deathmatch game"
HOMEPAGE="http://smw.72dpiarmy.com/"

LICENSE="GPL-2"
KEYWORDS="~x86"
IUSE=""


  • ECVS_TOP_DIR : le répertoire dans lequel les sources vont être téléchargées par cvs.
  • ${DISTDIR} : Distfiles Directory
  • ${PN} : Package Name : le nom du paquet, dans notre cas : smw-cvs


Je colle donc ce code dans mon ebuild, et j'effectue un premier digest :
Code:

# ebuild /usr/local/portage/games-arcade/smw-cvs/smw-cvs-1.6.ebuild digest


Puis, après avoir ajouté :
Quote:

games-arcade/smw-cvs ~x86

Dans mon /etc/portage/package.keywords, je tente un : emerge -pv smw-cvs

Si cvs n'est pas encore installé sur votre système, il devrait apparaitre dans les dépendances (non ?).

Puis, un emerge smw-cvs, et là, la magie de portage s'opère : les sources sont téléchargées dans /usr/portage/distfiles/cvs-src/smw-cvs/
Mais j'arrête tout de suite le processus d'emerge par un CTRL + C, après avoir vu le message suivant :
Quote:

* Copying smw from /usr/portage/distfiles/cvs-src/smw-cvs ...
* CVS module smw is now in /var/tmp/portage/smw-cvs-1.6/work
>> Source unpacked.
sandbox: Caught signal 2 in pid 15441


Exiting on signal 2

car je ne sais pas ce que la suite va donner.

Juste après la phase Source unpacked, les sources ont été copiées des distfiles vers /var/tmp/portage/smw-cvs-1.6/work/smw : le répertoire temporaire de portage, la fameuse sandbox, repertoire dans lequel nous allons pouvoir travailler.

Je n'ai encore aucune idée de la suite des évènements (véridique !), cependant, un makefile est disponible à la racine des sources, ainsi qu'un script de configuration...
Sur le site, on peut lire :
Quote:

Features:
- Up to four players deathmatch fun
- Hilarious unreal tournament announcers (m m m monsterkill)
- Comes with the leveleditor - you can create your own maps
- The whole source code of the game is available
- Based on the jnrdev #2 tutorial example
- uses SDL+SDL_Mixer and is fully portable to windows, linux, ...
- CPU Players
- a whole bunch of game modes (featuring GetTheChicken, Domination, and and and)

çà ressemble à une dépendance, çà.
A suivre...
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Mon Apr 10, 2006 7:52 pm    Post subject: Reply with quote

Je voudrai juste faire mon pointilleux :

NetFab wrote:
Puis, un emerge smw-cvs, et là, la magie de portage s'opère : les sources sont téléchargées dans /usr/portage/distfiles/cvs-src/smw-cvs/
Mais j'arrête tout de suite le processus d'emerge par un CTRL + C, après avoir vu le message suivant :
Quote:

* Copying smw from /usr/portage/distfiles/cvs-src/smw-cvs ...
* CVS module smw is now in /var/tmp/portage/smw-cvs-1.6/work
>> Source unpacked.
sandbox: Caught signal 2 in pid 15441


Exiting on signal 2

car je ne sais pas ce que la suite va donner.

Juste après la phase Source unpacked, les sources ont été copiées des distfiles vers /var/tmp/portage/smw-cvs-1.6/work/smw : le répertoire temporaire de portage, la fameuse sandbox, repertoire dans lequel nous allons pouvoir travailler.


On peut faire plus propre comme ça :
Code:
ebuild /usr/local/portage/games-arcade/smw-cvs/smw-cvs-1.6.ebuild unpack

;)

Et puis bravo !, ton post est très instructif !! :)
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Mon Apr 10, 2006 11:12 pm    Post subject: Reply with quote

bah quoi c'est la pub? :D okok ->[]

Nan, c'est très bien, très bon post de NetFab et bonne remarque de pierreg! je jubile d'avance...

bon c'est tout... Ah si j'ubilai: merci.. (bon ok cette blague est nulle, mais bon...)
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Tue Apr 11, 2006 6:11 am    Post subject: Reply with quote

l'étape suivante se trouve là : http://www.gentoo.org/doc/fr/ebuild-submit.xml

Et oui, pour qu'un maximum de personnes en profitent ;)
Et pendant qu'il n'est pas dans gentoo officiellement, on pourrait également le proposer à un overlay
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
_tebra_
Guru
Guru


Joined: 12 Nov 2004
Posts: 304
Location: Brussels - Belgium

PostPosted: Tue Apr 11, 2006 6:26 am    Post subject: Reply with quote

Super génial, un grand merci pour ce explications. Je vais suivre la démarche tout de suite et serais un peu plus instruit après ça :lol:
Back to top
View user's profile Send private message
_tebra_
Guru
Guru


Joined: 12 Nov 2004
Posts: 304
Location: Brussels - Belgium

PostPosted: Tue Apr 11, 2006 6:59 am    Post subject: Reply with quote

je suppose qu'il faut ajouter ces lignes à la suite de l'ebuild
Code:
DEPEND="media-libs/libsdl
               media-libs/sdl-mixer"

src_unpack () { ...

src_compile () { ...

src_install () { ...


Mais je sais pas quoi mettre dans src_unpack, src_compile et src_install
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2387
Location: ~Belfort! - France - EU

PostPosted: Tue Apr 11, 2006 7:47 am    Post subject: Reply with quote

Je t'apporte mes deux cents :

Code:
 eix -p "*-cvs"


Cette commande t'affichera une liste de paquets cvs. IL y des jeux donc des exemples. Voilà je peux pas faire plus, j'ai pas très bien compris le code pour les différents exemples donnés dasn le lien donné par NetFab.

Par contre ce lien qui pointe sur DEV-GENTOO est également intéressant :
http://dev.gentoo.org/~plasmaroo/devmanual/ebuild-writing/functions/src_unpack/

EDIT : pour la commande eix c'est pour l'approche cvs, que NetFab a choisi.

EDIT :
@NetFab : On fait comment un snapshot? c'est juste un tar.gz d'une version à l'instant "t". En quoi l'ebuilt sera différent : On donne un lien qui ne pointe que sur une certaine version?
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo


Last edited by Mickael on Tue Apr 11, 2006 8:10 am; edited 6 times in total
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2387
Location: ~Belfort! - France - EU

PostPosted: Tue Apr 11, 2006 7:49 am    Post subject: Reply with quote

_tebra_ wrote:
je suppose qu'il faut ajouter ces lignes à la suite de l'ebuild
Code:
DEPEND="media-libs/libsdl
               media-libs/sdl-mixer"

src_unpack () { ...

src_compile () { ...

src_install () { ...


Mais je sais pas quoi mettre dans src_unpack, src_compile et src_install


Par défaut pour le unpack c'est :
Quote:

src_unpack() {
if [ "${A}" != "" ]; then
unpack ${A}
fi
}


Mais suivant le format que tu dois ouvrir, il te faudra l'adapté, sur le site tout est listé je crois :

Quote:

src_unpack Actions :
* Patching with epatch
* CVS Sources
* Subversion Sources
* Arch Sources
* RPM Sources
* Deb Sources
* Autopackage
* Other Archive Formats

_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
_tebra_
Guru
Guru


Joined: 12 Nov 2004
Posts: 304
Location: Brussels - Belgium

PostPosted: Tue Apr 11, 2006 9:14 am    Post subject: Reply with quote

OK merci pour les info mais en fait je pense qu'on ne doit pas faire l'étape du src_unpack vu que ce qui est pris sur le site svc ne semble pas compressé.

Donc je vais chercher pour compléter le src_compile
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2387
Location: ~Belfort! - France - EU

PostPosted: Tue Apr 11, 2006 9:19 am    Post subject: Reply with quote

_tebra_ wrote:
OK merci pour les info mais en fait je pense qu'on ne doit pas faire l'étape du src_unpack vu que ce qui est pris sur le site svc ne semble pas compressé.


Je sais pas, je décrouvre la création d'un ebuild avec ton poste.

_tebra_ wrote:
Donc je vais chercher pour compléter le src_compile

_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
sireyessire
Advocate
Advocate


Joined: 20 Mar 2003
Posts: 2991
Location: back in Paris, France

PostPosted: Tue Apr 11, 2006 9:25 am    Post subject: Reply with quote

il y a des actions par défaut définies pour les src_compile, src_unpack .....
le premier truc à tester serait de voir si sans rien mettre ça marcherait pas tout seul.
Dans le cas où ça marche pas, il sera toujours temps de voir où ça coince...

Mes 2 cents,

enfin si cela n'est qu'un prétexte pour découvrir le monde merveilleux des ebuilds, allez-y, simplement faudra lui faire une cure d'amaigrissent ensuite si vous ne faites que recopiez les comportements par défaut...
_________________
I never think of the future. It comes soon enough.
Albert Einstein

Try simpler first
Shockley
Back to top
View user's profile Send private message
Argian
l33t
l33t


Joined: 01 May 2004
Posts: 682
Location: Nîmes

PostPosted: Tue Apr 11, 2006 10:18 am    Post subject: Reply with quote

Salut

J'ai fait un ebuild qui a l'air de fonctionner. Cependant, je n'en suis pas vraiment satisfait, après tout c'est la première fois que j'en fait un qui :
- soit téléchargé à partir d'un CVS
- n'ait pas d'install dans le makefile :?
- ait un exécutable qui cherche forcément les données dans le répertoire courant (ou alors, je n'ai pas trouvé comment passer outre)

De plus, j'ai choisi d'utiliser la version "stable" qui est aussi uniquement accessible par CVS (et surtout, la dernière version CVS ne voulait pas compiler au moment où j'ai essayé :P )
Enfin bon, je le poste, si vous voyez des choses à améliorer, n'hésitez pas :mrgreen:
Code:
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

ECVS_SERVER="metascape.afraid.org:/cvsroot"
ECVS_MODULE="smw"
ECVS_USER="anonymous"
ECVS_LOCALNAME="smw"
ECVS_CO_OPTS="-r smw_1_6_1_0"

inherit cvs flag-o-matic games

DESCRIPTION="Super Mario deathmatch game"
HOMEPAGE="http://smw.72dpiarmy.com/"

LICENSE="GPL-2"
KEYWORDS="~x86"
IUSE=""
SLOT="0"

DEPEND="media-libs/libsdl
   media-libs/sdl-mixer
   media-libs/sdl-image
   media-libs/sdl-net"

S=${WORKDIR}/${ECVS_MODULE}

#[INUTILE]
#src_unpack() {
#
#   cvs_src_unpack
#}
#[/INUTILE]

src_compile() {
   append-flags -Dstricmp=strcasecmp -DSleep=SDL_Delay
   mkdir -p build

   egamesconf || die "configure failed"
   emake || die "make failed"
}

src_install() {
   insinto "${GAMES_DATADIR}/${PN}"
   doins -r "${S}/gfx"
   doins -r "${S}/maps"
   doins -r "${S}/music"
   doins -r "${S}/sfx"

   doins smw leveledit
   fperms 750 "${GAMES_DATADIR}/${PN}/smw"
   games_make_wrapper smw "${GAMES_DATADIR}/${PN}/smw" "${GAMES_DATADIR}/${PN}/"|| die

   dodoc README.txt todo.txt WHATSNEW.txt

   prepgamesdirs
}
Après, l'installation, taper smw pour lancer le jeu

Je reviendrai expliquer le fonctionnement plus tard, faut que je parte maintenant :arrow: []

Edit : Ajout des dépendances media-libs/sdl-image et media-libs/sdl-net, mise en commentaire de src_unpack()
_________________
Proverbe Chinois : "Lorsqu'on n'a rien à dire d'intéressant, on cite généralement un proverbe Chinois."


Last edited by Argian on Tue Apr 11, 2006 9:36 pm; edited 4 times in total
Back to top
View user's profile Send private message
Argian
l33t
l33t


Joined: 01 May 2004
Posts: 682
Location: Nîmes

PostPosted: Tue Apr 11, 2006 3:24 pm    Post subject: Reply with quote

Bon, me revoilà, je vais essayer d'expliquer comment fonctionne cet ebuild (C'est pas gagné :roll: )

Je ne répèterai pas ce qu'à déjà dit NetFab, je n'y vois rien de particulier à ajouter. Donc, admettons que je prenne la suite et parle des quelques variables que j'ai ajoutées :P

Code:
ECVS_LOCALNAME="smw"
Ici, j'indique à CVS que les fichiers récupérés seront sauvés dans le répertoire smw de /usr/portage/distfiles/cvs-src (ECVS_TOP_DIR permet de modifier ce chemin)
Code:
ECVS_CO_OPTS="-r smw_1_6_1_0"
Comme je l'ai dit, j'utilise la version "stable" du jeu. En définissant cette variable, je passe les paramètres checkout (d'où le _CO_ je suppose :wink: ) qui permet de récupérer les sources. Ici, le paramètre -r permet de définir la révision à récupérer (smw_1_6_1_0 dans ce cas). Vous pouvez lire le man cvs et le tutoriel CVS de Gentoo pour plus d'informations sur le fonctionnement de CVS.

J'ai laissé licence GPL-2 mais je n'ai trouvé nulle part (Ni sur le site, ni dans les sources) aucune référence au type de licence du soft, à confirmer donc :(
Code:
DEPEND="media-libs/libsdl
    media-libs/sdl-mixer"
J'ai ajouté la prise en compte des dépendances signalées par NetFab. Je ne sais pas si une version minimale est nécessaire mais en tout cas, la version stable du moment est suffisante :)
Code:
cvs_src_unpack
Ceci est une fonction de l'eclass cvs. Cette fonction s'occupe du téléchargement des sources, de leur copie dans le répertoire de travail, etc. Maintenant que j'y repense, je ne suis pas sûr qu'il soit utile de la spécifier dans l'ebuild, après tout, c'est sensé être le fonctionnement par défaut. Je vérifierai plus tard :oops:

Nous arrivons maintenant dans la partie qui, à mon avis, a le plus besoin de corrections, la partie de configuration/compilation/installation (Le plus important quoi :roll: )
Code:
src_compile() {
    append-flags -Dstricmp=strcasecmp -DSleep=SDL_Delay
    mkdir -p build
 
    egamesconf || die "configure failed"
    emake || die "make failed"
 }
Bon ici, au départ, la compil se passait (très) mal et donnait quelques messages d'insulte avant de s'arrêter. J'ai trouvé sur le forum de SMW la solution au problème, c'est à dire l'utilisation des flags -Dstricmp=strcasecmp -DSleep=SDL_Delay et le mkdir qui corrige le problème qui arrive ensuite. J'aurais pu faire un patch pour corriger le configure, mais ne négligeons pas le fait que je suis une grosse feignasse, j'ai donc choisi l'option qui me semblait la plus rapide, l'utilisation de "append-flags" qui est une option provenant de l'eclass flag-o-matic et permet d'ajouter les flags à ceux déjà définis (Ceux de make.conf par exemple).

Pour la suite, egamesconf lance le configure en tenant compte des PATHs spécifiques au jeux sous Gentoo, mais autant que j'ai pu le constater, ça n'a strictement aucun effet sur SMW, utiliser le econf standard aurait donné le même résultat. Quant à emake, il exécute le make, il lance la compil quoi :twisted:
Code:
src_install() {
   insinto "${GAMES_DATADIR}/${PN}"
   doins -r "${S}/gfx"
   doins -r "${S}/maps"
   doins -r "${S}/music"
   doins -r "${S}/sfx"
 
   doins smw leveledit
   fperms 750 "${GAMES_DATADIR}/${PN}/smw"
   games_make_wrapper smw "${GAMES_DATADIR}/${PN}/smw" "${GAMES_DATADIR}/${PN}/"|| die
 
   dodoc README.txt todo.txt WHATSNEW.txt
 
   prepgamesdirs
}
Passons à l'installation.
La commande insinto défini le répertoire qui sera utilisé par les commandes d'installation qui suivent (La série de "doins -r"). Ici, j'ai dit que ce serait /usr/share/games/smw-cvs/ (Oui, j'ai nommé le répertoire de travail smw et j'installe dans le répertoire smw-cvs, ne cherchez pas de logique là-dedans, il n'y en a malheureusement pas :oops: ). Le paramètre -r sert à indiquer une copie récursive (Donc, on copie le répertoire et tout son contenu, sous-répertoires inclus, cf "man cp" pour plus d'infos).
Le "doins smw leveledit" indique que je copie les fichier smw et leveledit dans le répertoire indiqué lors du dernier insinto. Il s'agit des exécutables que j'aurais dû mettre dans /usr/games/bin, mais il semblerait qu'ils ne veuillent s'exécuter que si les répertoire de données (maps, gfx, etc) sont dans le répertoire courant, et comme ces derniers n'ont rien à faire dans /usr/games/bin, ben, j'ai tout mis dans /usr/share/games/smw-cvs/ :P
"fperms" est une commande fournie par portage (Tout comme doins ou insinto d'ailleurs) qui permet de définir les droits sur les fichiers (Un chmod quoi :mrgreen: )
games_make_wrapper est une fonction fournie par l'eclass games. Pour faire simple et approximatif, ça crée un script qui lance l'exécution du programme désigné. par exemple, ici, il crée un script appelé smw qui exécute le programme "${GAMES_DATADIR}/${PN}/smw" (/usr/share/games/smw-cvs/smw en clair :P) après s'être placé dans "${GAMES_DATADIR}/${PN}/" (Toujours en clair, il fait un "cd /usr/share/games/smw-cvs/"). Bizarre, je n'ai pas l'impression d'être très clair là :lol:

La doc étant étant plus que succincte, j'ai juste mis un fichier readme, un todo et un changelog, rien de bien passionnant (Commande "dodoc README.txt todo.txt WHATSNEW.txt")

Pour finir (ENFIN :roll: ), la fonction prepgamesdirs règle les permissions des fichiers pour qu'ils collent à la politique Gentoo sur les jeux (Modification des droits, groupe games, etc).

Bon voila, fini. Si vous avez des questions, remarques, insultes, corrections, n'hésitez pas à poster :mrgreen:

Edit : Bon, ben, j'ai essayé et je confirme que la partie concernant src_unpack() est effectivement inutile :twisted:
_________________
Proverbe Chinois : "Lorsqu'on n'a rien à dire d'intéressant, on cite généralement un proverbe Chinois."


Last edited by Argian on Tue Apr 11, 2006 9:35 pm; edited 1 time in total
Back to top
View user's profile Send private message
Desintegr
l33t
l33t


Joined: 25 Mar 2004
Posts: 863
Location: France - Orléans

PostPosted: Tue Apr 11, 2006 3:30 pm    Post subject: Reply with quote

Il manque quelques dépendances :
Pendant la compilation j'ai eu : -lSDL_net -lSDL_image -lSDL_mixer

Il faut rajouter aussi :
media-libs/sdl-image
media-libs/sdl-net

Le jeu ne semble pas compiler non plus avec GCC 4.1.
Quote:
_src/main.cpp: In function ‘void cleandeadplayers()’:
_src/main.cpp:357: erreur: ‘countaliveteams’ was not declared in this scope


Je tente avec GCC 3.4.6 là.

Edit : OK, ça fonctionne bien avec les dépendances rajoutées et GCC 3.4.6.
_________________
Gentoo ~AMD64
Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr
Back to top
View user's profile Send private message
Argian
l33t
l33t


Joined: 01 May 2004
Posts: 682
Location: Nîmes

PostPosted: Tue Apr 11, 2006 5:07 pm    Post subject: Reply with quote

Desintegr wrote:
Il manque quelques dépendances :
Pendant la compilation j'ai eu : -lSDL_net -lSDL_image -lSDL_mixer

Il faut rajouter aussi :
media-libs/sdl-image
media-libs/sdl-net

Le jeu ne semble pas compiler non plus avec GCC 4.1.
Quote:
_src/main.cpp: In function ‘void cleandeadplayers()’:
_src/main.cpp:357: erreur: ‘countaliveteams’ was not declared in this scope


Je tente avec GCC 3.4.6 là.

Edit : OK, ça fonctionne bien avec les dépendances rajoutées et GCC 3.4.6.
OK, je rajoute sdl-image et sdl-net dans les dépendances. Je dois admettre que je n'ai pas trop cherché pour les dépendances, elles était déjà toutes installées :P

Par contre pour gcc, je ne sais pas, je suis encore en 3.4.5 et je ne me sens pas trop d'installer une 4.1 pour l'instant :?
_________________
Proverbe Chinois : "Lorsqu'on n'a rien à dire d'intéressant, on cite généralement un proverbe Chinois."
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1887
Location: 127.0.0.1

PostPosted: Tue Apr 11, 2006 9:44 pm    Post subject: Reply with quote

Je m'en vais une journée, et l'ebuild est déjà bien avancé :wink:
En fait, oui, il suffisait de chercher un peu sur le forum pour trouver les paramètres du snapshot de la version 1.6.

En ce qui concerne les dépendances :
Le paquet media-libs/libsdl est déjà une dépendance des 3 autres, donc pas besoin de l'ajouter.
Argian wrote:

Cependant, je n'en suis pas vraiment satisfait, après tout c'est la première fois que j'en fait un qui :
[...]
- ait un exécutable qui cherche forcément les données dans le répertoire courant (ou alors, je n'ai pas trouvé comment passer outre)


C'est parce que dans le code, à chaque fois qu'un fichier est chargé, le chemin vers le fichier est relatif :/
Quote:
$ smw
-------------------------------------------------------------------------------
Super Mario War 1.6
-------------------------------------------------------------------------------

---------------- startup ----------------
init SDL
running @ 640x480 32bpp (done)

---------------- loading ----------------
loading font gfx/fonts/font0.bmp ... done
loading font gfx/fonts/font1.bmp ... done
loading font gfx/fonts/font2.bmp ... done
loading sprite gfx/backgrounds/bg16.bmp ... done
loading sprite gfx/menu/menu_smw.bmp ... done
loading sprite gfx/menu/menu_version.bmp ... done
loading sprite gfx/menu/splash_72dpi.bmp ... done

J'y ai mis mon grain de sel, et çà donne un patch à appliquer avant la compilation.
Il faut le placer dans le répertoire ${FILESDIR}, c'est à dire dans /usr/local/portage/games-arcade/smw-cvs/files/.
Ce n'est peut-être pas l'idéal au niveau du code, mais il me semble que normalement, ce travail devrait être fait par le ./configure, à condition que le code soit préparé pour ?
Du coup, avec ce patch, les chemins sont absolus :
Quote:

$ smw
-------------------------------------------------------------------------------
Super Mario War 1.6
-------------------------------------------------------------------------------

---------------- startup ----------------
init SDL
running @ 640x480 32bpp (done)

---------------- loading ----------------
loading font /usr/share/games/smw-cvs/gfx/fonts/font0.bmp ... done
loading font /usr/share/games/smw-cvs/gfx/fonts/font1.bmp ... done
loading font /usr/share/games/smw-cvs/gfx/fonts/font2.bmp ... done
loading sprite /usr/share/games/smw-cvs/gfx/backgrounds/bg16.bmp ... done
loading sprite /usr/share/games/smw-cvs/gfx/menu/menu_smw.bmp ... done
loading sprite /usr/share/games/smw-cvs/gfx/menu/menu_version.bmp ... done

Et surtout : on a nos binaires au bon endroit, dans /usr/games/bin
L'ebuild se transforme donc, et se simplifie (au passage je renomme l'éxécutable leveledit en smw-leveleditor):
[edit] : ebuild edité, voir mon prochain post.
Quote:

# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

ECVS_SERVER="metascape.afraid.org:/cvsroot"
ECVS_MODULE="smw"
ECVS_USER="anonymous"
ECVS_LOCALNAME="smw"
# On utilise la variable ECVS_BRANCH
#ECVS_CO_OPTS="-r smw_1_6_1_0"
ECVS_BRANCH="smw_1_6_1_0"

inherit cvs flag-o-matic games

DESCRIPTION="Super Mario deathmatch game"
HOMEPAGE="http://smw.72dpiarmy.com/"

LICENSE="GPL-2"
KEYWORDS="~x86"
IUSE=""
SLOT="0"

DEPEND="media-libs/sdl-mixer
media-libs/sdl-image
media-libs/sdl-net"

S=${WORKDIR}/${ECVS_MODULE}

src_compile() {
epatch ${FILESDIR}/gentoo-smw-1.6-data-dir.patch.gz

append-flags -Dstricmp=strcasecmp -DSleep=SDL_Delay
mkdir -p build

egamesconf || die "configure failed"
emake || die "make failed"
}

src_install() {
insinto "${GAMES_DATADIR}/${PN}"
doins -r "${S}/gfx"
doins -r "${S}/maps"
doins -r "${S}/music"
doins -r "${S}/sfx"

dogamesbin smw || die
newgamesbin leveledit smw-leveleditor || die "newgamesbin failed"

dodoc README.txt todo.txt WHATSNEW.txt

newicon _src/icons/smw.ico smw.ico
newicon _src/icons/leveleditor.ico smw-leveleditor.ico

make_desktop_entry smw 'Super Mario War' smw.ico
make_desktop_entry smw-leveleditor 'Super Mario War Level Editor' \
smw-leveleditor.ico


prepgamesdirs
}



A la fin, j'ai ajouté les icônes dans /usr/share/pixmaps, et j'utilise la fonction make_desktop_entry pour créer des raccourcis dans /usr/share/applications. Par contre, il faudrait trouver des icônes au format png...


Last edited by netfab on Wed Apr 12, 2006 10:56 am; edited 1 time in total
Back to top
View user's profile Send private message
Argian
l33t
l33t


Joined: 01 May 2004
Posts: 682
Location: Nîmes

PostPosted: Tue Apr 11, 2006 9:54 pm    Post subject: Reply with quote

NetFab wrote:
A la fin, j'ai ajouté les icônes dans /usr/share/pixmaps, et j'utilise la fonction make_desktop_entry pour créer des raccourcis dans /usr/share/applications. Par contre, il faudrait trouver des icônes au format png...
Oui, j'y avais pensé aussi, on peut convertir les .ico en .png avec convert, mais je ne me voyais pas mettre imagemagick en dépendances juste pour ça. Quoi que... :twisted:
_________________
Proverbe Chinois : "Lorsqu'on n'a rien à dire d'intéressant, on cite généralement un proverbe Chinois."
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Tue Apr 11, 2006 10:11 pm    Post subject: Reply with quote

Il suffit de convertir les icones nous-même et de les mettre dans files/ ...
Back to top
View user's profile Send private message
bibi.skuk
Guru
Guru


Joined: 01 Aug 2005
Posts: 425

PostPosted: Wed Apr 12, 2006 7:05 am    Post subject: Reply with quote

pierreg wrote:
Il suffit de convertir les icones nous-même et de les mettre dans files/ ...


sauf que dans files, c'est uniquement des fichiers textes (patchs, scripts init...) de moins de 20ko, apres, c'est mirrors... donc pour l'icone => mirrors
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1887
Location: 127.0.0.1

PostPosted: Wed Apr 12, 2006 10:58 am    Post subject: Reply with quote

C'est dommage qu'avec l'eclass cvs actuelle, on ne puisse pas effectuer d'exportation.
Actuellement, la commande utilisée pour récupérer la source est celle-ci :
Code:

cvs -q -f -z4 -d ":pserver:anonymous@metascape.afraid.org:/cvsroot" checkout -r smw_1_6_1_0 smw

Si l'on pouvait effectuer une exportation :
Code:

cvs -q -f -z4 -d ":pserver:anonymous@metascape.afraid.org:/cvsroot" export -r smw_1_6_1_0 smw

Cela éviterai d'avoir à se taper tous les répertoires CVS à l'installation :
Quote:

$ ls -R /usr/share/games/smw-cvs/ | grep CVS
CVS
CVS
/usr/share/games/smw-cvs/gfx/awards/CVS:
CVS
/usr/share/games/smw-cvs/gfx/backgrounds/CVS:
CVS
/usr/share/games/smw-cvs/gfx/blocks/CVS:
CVS

[...]

D'ailleurs, dans le code actuel de l'eclass, ce sont ces répertoires qui sont utilisés pour déterminer si l'on effectue un checkout ou une update :
/usr/portage/eclass/cvs.eclass:

# Determine the CVS command mode (checkout or update)
   if [ ! -d "$ECVS_TOP_DIR/$ECVS_LOCALNAME/CVS" ]; then
      mode=checkout
   else
      mode=update
   fi


Questions :
Y aurait t'il un moyen de les supprimer récursivement avant l'installation ?
A t'on le droit de créer une fonction spécifique dans l'ebuild pour effectuer cette tâche ?

J'ai edité mon précédent post, j'ai modifié légèrement l'ebuild :

  • J'ai mis en commentaire la variable ECVS_CO_OPTS au profit de ECVS_BRANCH (cette fonctionnalité est prévue dans l'eclass).
  • J'ai modifié le nom de l'icône du jeu (smw-cvs.ico vers smw.ico). Un détail.
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Wed Apr 12, 2006 12:08 pm    Post subject: Reply with quote

bibi.skuk wrote:
pierreg wrote:
Il suffit de convertir les icones nous-même et de les mettre dans files/ ...


sauf que dans files, c'est uniquement des fichiers textes (patchs, scripts init...) de moins de 20ko, apres, c'est mirrors... donc pour l'icone => mirrors

Une icone au format PNG prend moins de 10ko, même pas ... et j'ai déjà vu des icones dans files/ pour certains ebuilds (je ne saurai pas donner d'exemple, je n'ai pas ma gentoo sous la main ...)
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1887
Location: 127.0.0.1

PostPosted: Wed Apr 12, 2006 12:19 pm    Post subject: Reply with quote

Bien vu :
Quote:

$ locate ".png" | grep "/usr/portage" | grep -v distfiles
/usr/portage/www-client/mozilla-bin/files/mozilla-bin-icon.png
/usr/portage/www-client/mozilla/files/icon/mozilla-icon.png
/usr/portage/www-client/mozilla-firefox/files/icon/firefox-icon.png
/usr/portage/www-client/mozilla-firefox-bin/files/icon/mozillafirefox-bin-icon.png
/usr/portage/www-client/seamonkey/files/icon/seamonkey.png

[...]
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Wed Apr 12, 2006 12:23 pm    Post subject: Reply with quote

pierreg wrote:
et j'ai déjà vu des icones dans files/ pour certains ebuilds (je ne saurai pas donner d'exemple, je n'ai pas ma gentoo sous la main ...)


www-client/mozilla-bin/files/mozilla-bin-icon.png
www-client/mozilla/files/icon/mozilla-icon.png
www-client/mozilla-firefox/files/icon/firefox-icon.png
www-client/seamonkey/files/icon/seamonkey.png
www-client/mozilla-firefox-bin/files/icon/mozillafirefox-bin-icon.png
games-sports/billardgl/files/billardgl.png ?
games-strategy/freeciv/files/freeciv.png ?
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum