[Résolu] [alpha1] Linux : Impossible de Packager ZSDX

Démarré par Sam101, 05 Novembre 2009 à 19:28

0 Membres et 1 Invité sur ce sujet

05 Novembre 2009 à 19:28 Dernière édition: 19 Décembre 2009 à 19:43 par Christopho
En sachant que les données de jeu doivent être situées dans le répertoire courant où est exécuté l'exécutable, on ne peut apparemment pas packager ZSDX actuellement sous Linux (Testé sous Arch, pas de solution)... Une solution à trouver donc ?

En plus de ne pas pouvoir packager, c'est aussi très gênant de devoir être dans le répertoire contenant les données lorsque l'on lance le jeu. Un peu dur de faire un raccourcis de lancement, ou de mettre zsdx dans le PATH.
Citation
Ash Nazg Durbatulùk, Ash Nazg Gimbatul,
Ash Nazg Thrakatulùk agh bruzum-ishi krimpatul.
The fellowship of the Ring - J.R.R. Tolkien

Je ne sais pas comment faire pour installer les données dans un répertoire à part sans avoir besoin de recompiler le jeu pour spécifier le nom de ce répertoire dans le code source.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

06 Novembre 2009 à 17:35 #3 Dernière édition: 06 Novembre 2009 à 17:41 par Christopho
Et si je mets une option de la ligne de commande sur l'exécutable pour spécifier l'emplacement des fichiers de données ?
Ensuite le package installerait un /usr/bin/zsdx qui serait un script appelant le vrai exécutable avec l'argument adapté. Du genre
/usr/games/zsdx -datapath=/usr/share/games/zsdx/
Ce système a l'avantage de laisser plus de facilités à l'utilisateur pour modifier sa ligne de commande ; en effet certaines bibliothèques utilisées par ZSDX sont susceptible de reconnaître des arguments de la ligne de commande.

On peut aussi faire ça en utilisant une variable d'environnement au lieu de le mettre en paramètre de la ligne de commande. Qu'en pensent les spécialistes ? ^^

PS : Au fait dans les titres de topic, ce n'est pas la peine d'abuser de la notation entre crochets. Surtout sur ce forum où c'est réservé au numéro de version ou à la mention "Résolu".
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

La solution du script qui appelle le binaire est classique, et adaptée je pense.
Le plus propre c'est évidement un fichier de configuration avec un chemin par défaut pour ce dernier et la possibilité de passer en ligne de commande le chemin vers le fichier de config.
Citation
Ash Nazg Durbatulùk, Ash Nazg Gimbatul,
Ash Nazg Thrakatulùk agh bruzum-ishi krimpatul.
The fellowship of the Ring - J.R.R. Tolkien

Justement j'aimerais bien connaître les manières classiques de procéder ^^
Pour le fichier de configuration : oui, mais où peut-on le placer ? Dans le home de l'utilisateur ? Je veux que le jeu soit accessible par tous les utilisateurs lorsqu'il est installé en root. Dans /etc/zsdx.conf ? Je ne veux pas non plus forcer l'utilisateur qui installe à installer en root :P. Bref, c'est un casse-tête pour moi.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

De toute façon pour écrire dans /usr/share/games tu auras besoin des droits root.
En regardant quelques jeux libres (glob2, wesnoth) les deux sont directement des binaires présents dans /usr/games et leurs données sont dans /usr/share/games.
Wesnoth permet de paramétrer le répertoire de configuration de l'utilisateur en ligne de commande :

  --config-dir <name>          sets the path of the user config directory to
                               $HOME/<name> or My Documents\My Games\<name> for windows.

Je dirai que quand tu en seras à faire des packages pour différentes distrib (enfin si tu comptes le faire :P) ce sera de toute façon installé en root pour pouvoir être dans les répertoires idoines.
Pour parer aux problèmes des différentes distrib et pour permettre à un utilisateur de tout installer dans son home, il faut que tu permettes de préciser dans le configure les différents chemins à la convenance du gars qui compile. IE: bindir=~/bin datadir=~/games/zsdx
Ensuite si tu veux fournir une version compilée multidistrib tu peux par exemple obliger l'installation dans ~/zsdx. Si ça ne convient pas la personne n'a qu'a recompiler ou utiliser un package tout fait.
Citation
Ash Nazg Durbatulùk, Ash Nazg Gimbatul,
Ash Nazg Thrakatulùk agh bruzum-ishi krimpatul.
The fellowship of the Ring - J.R.R. Tolkien

La version 1101 a une option de la ligne de commande pour spécifier le chemin d'accès aux données. Ce chemin est le nom d'un répertoire contenant le fichier de données data.zsdx. Exemple :
zsdx -datapath=/usr/share/games/zsdx
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus