# [ebuild] super mario war?

## _tebra_

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.   :Crying or Very sad: 

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

Merci d'avanceLast edited by _tebra_ on Tue Apr 11, 2006 6:52 am; edited 2 times in total

----------

## Mickael

Je t'invite à lire le poste de Boozo, ici,, et de participer à l'élaboration de cet ebuilt.

----------

## netfab

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 :

```

# 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
> ...

 

 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 :

```

# 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
> ...

 

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
> ...

 

çà ressemble à une dépendance, çà.

A suivre...

----------

## geekounet

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:*   
> ...

 

On peut faire plus propre comme ça :

```
ebuild /usr/local/portage/games-arcade/smw-cvs/smw-cvs-1.6.ebuild unpack
```

 :Wink: 

Et puis bravo !, ton post est très instructif !!  :Smile: 

----------

## truc

bah quoi c'est la pub?  :Very Happy:   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...)

----------

## PabOu

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

----------

## _tebra_

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   :Laughing: 

----------

## _tebra_

je suppose qu'il faut ajouter ces lignes à la suite de l'ebuild

```
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

----------

## Mickael

Je t'apporte mes deux cents : 

```
 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?

----------

## Mickael

 *_tebra_ wrote:*   

> je suppose qu'il faut ajouter ces lignes à la suite de l'ebuild
> 
> ```
> DEPEND="media-libs/libsdl
> 
> ...

 

Par défaut pour le unpack c'est : 

 *Quote:*   

> 
> 
> src_unpack() {
> 
>     if [ "${A}" != "" ]; then
> ...

 

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
> ...

 

----------

## _tebra_

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

----------

## Mickael

 *_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

 

----------

## sireyessire

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...

----------

## Argian

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  :Confused: 

- 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é  :Razz:  )

Enfin bon, je le poste, si vous voyez des choses à améliorer, n'hésitez pas  :Mr. Green:  

```
# 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()

----------

## Argian

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

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  :Razz: 

```
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)

```
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  :Sad: 

```
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  :Smile: 

```
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  :Embarassed: 

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  :Rolling Eyes:  )

```
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 Evil: 

```
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  :Embarassed:  ). 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/  :Razz: 

"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  :Mr. Green:  )

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  :Razz: ) 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à  :Laughing: 

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  :Rolling Eyes:  ), 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  :Mr. Green: 

Edit : Bon, ben, j'ai essayé et je confirme que la partie concernant src_unpack() est effectivement inutile  :Twisted Evil: 

----------

## Desintegr

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.

----------

## Argian

 *Desintegr wrote:*   

> Il manque quelques dépendances :
> 
> Pendant la compilation j'ai eu : -lSDL_net -lSDL_image -lSDL_mixer
> 
> Il faut rajouter aussi :
> ...

 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  :Razz: 

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  :Confused: 

----------

## netfab

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 :
> 
> [...]
> ...

 

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
> ...

 

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
> 
> -------------------------------------------------------------------------------
> ...

 

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
> ...

 

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

----------

## Argian

 *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 Evil: 

----------

## geekounet

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

----------

## bibi.skuk

 *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

----------

## netfab

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 :

```

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 :

```

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
> ...

 

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 :

```

# 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.

----------

## geekounet

 *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 ...)

----------

## netfab

Bien vu :

 *Quote:*   

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

 

----------

## PabOu

 *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 ?

----------

## Argian

 *pierreg wrote:*   

>  *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 ...)

 Sinon, c'est peut-être une idée bête, mais on peut très bien inclure une icone dans un patch. Par exemple (Et désolé si ça prend de la place pour rien) : *Quote:*   

> diff -ruN smw.old/_src/icons/smw.xpm smw/_src/icons/smw.xpm
> 
> --- smw.old/_src/icons/smw.xpm	1970-01-01 01:00:00.000000000 +0100
> 
> +++ smw/_src/icons/smw.xpm	2006-04-12 14:16:55.786135288 +0200
> ...

 Ceci est un patch qui crée une icone nommée smw.xpm (Oui, je préfère les .xpm aux .png car les .xpm peuvent être affichés directement dans un menu fluxbox et pas les .png  :Mr. Green:  )

----------

## geekounet

 *Argian wrote:*   

> (Oui, je préfère les .xpm aux .png car les .xpm peuvent être affichés directement dans un menu fluxbox et pas les .png  )

 

Heu à partir de Fluxbox 0.9.14 (il me semble), si tu compile avec le support imlib2, tu peux mettre des icones png ^^

----------

## Argian

Ah oui ?

Edit: Ah oui ! Merci pierreg  :Wink: 

----------

## netfab

 *Desintegr wrote:*   

> 
> 
> Le jeu ne semble pas compiler non plus avec GCC 4.1.
> 
>  *Quote:*   
> ...

 

Essaye d'appliquer ce patch.

Fonction utilisée avant la définition, sans déclaration préalable.

Je n'ai pas gcc 4, je ne peux pas essayer.

----------

## netfab

Allez hop, ajout d'une fonction récursive pour éliminer tous les répertoires CVS.

Ajout des icônes au format png.

Je modifie la licence en unknown (si quelqu'un trouve...), et je renomme l'ebuild en smw-1.6.ebuild (bah oui, c'est une version finale).

Un package complet est disponible ici, à décompresser dans votre overlay.

```
# 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_BRANCH="smw_1_6_1_0"

inherit cvs flag-o-matic games

DESCRIPTION="Super Mario deathmatch game"

HOMEPAGE="http://smw.72dpiarmy.com/"

LICENSE="unknown"

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"

}

function smw_recursive_rm_dir() {

   if [[ $# -ne 2 ]]; then

      echo '

This function take exactly 2 parameters :

 $1 : Starting directory, which will be scanned recursively.

 $2 : Name of directories to remove.

'

   else

      local directory

      if [[ -d "$1" ]]; then

         local this_dir=$(basename "$1")

         if [[ "${this_dir}" == "$2" ]]; then

            # want to check ? :-)

            #echo "rm -rf \"$1\""

            rm -rf "$1"

         else

            for directory in "$1"/*; do

               smw_recursive_rm_dir "$directory" "$2"

            done

         fi

      fi

   fi

}

src_install() {

   insinto "${GAMES_DATADIR}/${PN}"

   doins -r "${S}/gfx"

   doins -r "${S}/maps"

   doins -r "${S}/music"

   doins -r "${S}/sfx"

   einfo "Removing CVS directories from image ..."

   smw_recursive_rm_dir "${D}" 'CVS' &> /dev/null

   dogamesbin smw || die

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

   dodoc README.txt todo.txt WHATSNEW.txt

   newicon ${FILESDIR}/smw.png smw.png

   newicon ${FILESDIR}/leveleditor.png smw-leveleditor.png

   make_desktop_entry smw 'Super Mario War' smw.png

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

   smw-leveleditor.png

   prepgamesdirs

} 

```

Reste le bug de compilation avec gcc4, j'y travaille, j'ai migré vers xorg modulaire, je vais certainement passer en ~arch,  et j'installerai gcc4.

----------

## Desintegr

Selon Freshmeat, il s'agit de la GPL : http://freshmeat.net/projects/smw/

Et dans les sources du jeu, on peut trouver : « this sourcecode is released under the GPL. » (fichier main.cpp par exemple)

----------

## PabOu

le code source est sous licence GPL, mais qu'en est-il des images ? elles sont copyrightées par nintendo je suppose :\ est-ce bien légal tout ca ? (ce serait une raison pour que le jeu ne soit pas dans l'arbre officiel de portage ?)

----------

## Desintegr

C'est vrai que les images ne sont pas forcément libres.

Il faudrait peut-être donc mettre deux licences : inconnue pour les données (images, sons, etc.), et GPL pour le code.

Sinon, je ne pense pas que ce soit un motif suffisant pour que ça en soit pas dans l'arbre de Portage.

Exemple : http://packages.gentoo.org/packages/?category=games-fps;name=quake3-data

Les données du jeu Quake3 ne sont pas vraiment libres, idem pour de nombreux autres jeux (Unreal Tournament, Enemy Territory, etc.)

----------

## PabOu

Mais dans ce cas-ci, ce serait une utilisation non authorisée de ces données protégées. Je doute que le projet SMW paye des royalties à Nintendo, et je doute également que Nintendo ait authorisé cette utilisation.

----------

## netfab

Oui, je crois bien que vous avez raison.

Lorsqu'on lance le jeu, il est marqué :

 *Quote:*   

> 
> 
> A tribute to :
> 
> Nintendo
> ...

 

Et dans le readme du zip que l'on peut télécharger, il est noté :

 *Quote:*   

> 
> 
> Programmed by Samuele Poletto in Borland Pascal 7.0 and Assembly.
> 
> Copyright © 2002 by Samuele Poletto
> ...

 

M'étonnerait pas qu'il aient simplement extrait les données. Sans compter les différents sons d'Unreal et tout çà...

A la limite, il faudrait presque faire 2 ebuilds : un pour le moteur, l'autre pour les données.

 *Quote:*   

> Mais dans ce cas-ci, ce serait une utilisation non authorisée de ces données protégées. Je doute que le projet SMW paye des royalties à Nintendo, et je doute également que Nintendo ait authorisé cette utilisation.

 

On peut toujours mettre un message : si vous pensez que nous violons un copyright, merci de nous contacter.

[Edit] : en fait, non : seul le moteur est distribuable. Il y a justement une discussion à ce sujet sur happypenguin. On efface tout ?  :Mr. Green: 

----------

## PabOu

et pour la forme, on ne devrait pas nommer l'ebuild smw-cvs ?

un autre hic : ca n'affiche pas la taille des fichiers à télécharger.. ya un moyen de forcer ca pour les ebuilds cvs ?

----------

## geekounet

Puisque c'est une version finale qu'on récupère à partir du cvs, pourquoi ne pas en faire direct une archive ? Comme ça en plus, ça évite aux utilisateur d'installer cvs pour presque rien. Il ne reste plus qu'à trouver un hôte pour stocker cette archive...

----------

## j_c_p

Bonjour et merci pour ce très bon ebuild et jeu   :Cool: , vous pouvez y ajouter ~amd64, la compilation passe touet seule chez moi.

Bon, j'ai juste un petit souci (mais, après tout, c'est peut-être normal) : quand je choisis le jeu en plein écran, j'ai toujours un jeu en fenêtré (640*480), mais entouré de bandes noires dans ce cas (ce qui revient à dire que le plein écran ne sert à rien donc).

Un souci dû à la plate forme amd64 ?

----------

## Desintegr

 *j_c_p wrote:*   

> quand je choisis le jeu en plein écran, j'ai toujours un jeu en fenêtré (640*480), mais entouré de bandes noires dans ce cas (ce qui revient à dire que le plein écran ne sert à rien donc).
> 
> Un souci dû à la plate forme amd64 ?

 

Idem pour moi.

Je suis aussi sur AMD64, je joue dans en fenêtré pour l'instant. Il faudra peut-être rapporter le bug aux développeurs du jeu directement.

----------

## netfab

Je vous rassure le fake fullscreen c'est normal. Il me semble avoir lu (je ne sais plus où) une réponse d'un des développeurs qui disait que c'était le seul mode d'affichage disponible pour le moment.

----------

## PabOu

chez moi le leveleditor ne se lance pas, il me met directement "segmentation fault".

Je vais voir à recompiler avec moins d'optimisations si ca passe mieux, et essayer de trouver les optimisations coupables :\ pour les virer automatiquement dans l'ebuild

----------

## PabOu

Ok, j'ai trouvé le fautif. Il s'afit de -Os.

J'ai testé sans le flag, le level-editor passe ;)

J'ai testé avec -O2, ca passe aussi !

J'ai tout viré (dans ldflags, cflags, cxxflags) testé avec -mtune=athlon-xp et -Os, ca segfault.

des infos sur ma chaine de compilation :

```
pabou@chocolat ~ $ emerge --info

Portage 2.1_pre7-r5 (default-linux/x86/2006.0, gcc-3.4.6, glibc-2.4-r1, 2.6.16-ck3 i686)

=================================================================

System uname: 2.6.16-ck3 i686 AMD Athlon(tm) XP 1800+

Gentoo Base System version 1.12.0_pre17

dev-lang/python:     2.4.2-r1

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.59-r7

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2

sys-devel/binutils:  2.16.1-r2

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.11-r3

ACCEPT_KEYWORDS="x86 ~x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-mtune=athlon-xp -march=athlon-xp -Os -pipe -fomit-frame-pointer -m3dnow -msse -mmmx -falign-functions=4 -ffast-math -mfpmath=sse,387 -DPIC"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="-mtune=athlon-xp -march=athlon-xp -Os -pipe -fomit-frame-pointer -m3dnow -msse -mmmx -falign-functions=4 -ffast-math -mfpmath=sse,387 -DPIC -fvisibility-inlines-hidden"

LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
```

Quelqu'un pour confirmer que c'est pareil chez lui ? ou pour au contraire dire que ca fonctionne (peut-être une autre version de gcc)

----------

## j_c_p

Chez moi, c'est passé tout seul avec cette configuration :

Portage 2.0.54 (default-linux/amd64/2006.0, gcc-3.4.5, glibc-2.3.5-r2, 2.6.16.2 x86_64)

=================================================================

System uname: 2.6.16.2 x86_64 AMD Athlon(tm) 64 Processor 3400+

Gentoo Base System version 1.12.0_pre17

ccache version 2.3 [enabled]

dev-lang/python:     2.3.5-r2, 2.4.2-r1

sys-apps/sandbox:    1.2.12

sys-devel/autoconf:  2.13, 2.59-r7

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1

sys-devel/binutils:  2.16.1

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.11-r2

ACCEPT_KEYWORDS="amd64"

AUTOCLEAN="yes"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=athlon64 -O3 -ftracer -pipe"

CHOST="x86_64-pc-linux-gnu"

CXXFLAGS="-march=athlon64 -O3 -ftracer -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig ccache distlocks sandbox sfperms strict"

NetFab : merci de ton info.

Desintegr :   :Wink: .

----------

## netfab

Salut,

Pour l'histoire du fullscreen, çà n'a rien à voir avec le jeu.

Je me suis aperçu ce matin que le jeu lbreakout2 (SDL inside) me faisait la même chose : le jeu en tout petit au centre de l'écran.

J'en ai donc déduit que c'était probablement une mauvaise configuration de X.

Je viens de modifier mon xorg.conf de ceci :

```

   SubSection "Display"

         Viewport   0 0

         Depth     24

         Modes "1152x864"

   EndSubSection

```

à cela :

```

   SubSection "Display"

         Viewport   0 0

         Depth     24

         Modes "1152x864" "1024x768" "800x600" "640x480"

   EndSubSection

```

Et j'ai maintenant le vrai fullscreen dans ces jeux.

(j'ai aussi ajouté d'autres options dans le xorg.conf, mais je ne pense pas que cela joue, je vais essayer de les retirer des fois que...)

----------

## MysterJ

Salut à tous, je suis nouveau sur le forum!  :Very Happy:   J'aimerais poser une question à laquelle je n'ai trouvé aucune réponse!!!  :Crying or Very sad: 

J'ai Super Mario War et j'aimerais créer ma propre arène! Donc, j'utilise l'éditeur! Jusque là, tout va bien, je place le fond, les plateformes,   :Smile:  ensuite, j'enregistre l'arène, je vais voir dans "maps" mais je ne la trouve pas!  :Question:   :Confused:   Pourtant, certains arrivent à inclure leurs créations dans le jeu!  :Mad:   Quelqu'un pourrait t'il m'expliquer comment faire pour résoudre ce problème, S.V.P?  :Wink: 

Bon, et bien, c'est sympa  :Confused:  : j'ai vu le forum: quelqu'un demande comment compiler super mario war et tout le monde lui répond et moi pour une simple question sur la sauvegarde des cartes: "...".     :Sad: 

De toutes façons, j'ai trouvé comment faire alors bye!  :Laughing:   Et continuez à pas aider les nouveaux, surtout!  :Cool:   :Evil or Very Mad: 

----------

