Forum : 2 - Les distributions et les noyaux

librazik 2 : probleme de droits sur un repertoire de borderlands

olof utilisateur non connecté
je rencontre un souci avec l'installation de borderlands dans librazik :

les échantillons qui servent au "paysage sonore" de borderlands sont stockés dans un repertoire loops qui a été mis dans dans la distrib dans /usr/share/borderlans/loops

or, ce repertoire n'est accessible en ecriture/modification qu' au compte root

mais c'est avec le compte utilisateur qu'on a besoin d'alimenter ce repertoires en echantillons.

serait il envisageable que celui ci se trouve plutot dans un repertoire .borderlands par exemple situé dans mon repertoire utilsateur, ou bien quelque chose m'a t'il echappé dans la manip du repertoire usr/share ?

olinuxx utilisateur non connecté France
Je confirme le soucis.

C'est un des problèmes de ce logiciel, et c'est décrit ici : dans sa page de documentation LZK2  Image .


olof écrit :
serait il envisageable que celui ci se trouve plutot dans un repertoire .borderlands par exemple situé dans mon repertoire utilsateur,


Pour cela, il faudrait que quelqu'un développe cette fonctionnalité et la partage.

olof utilisateur non connecté
bon, jed me suis connecte en superutilisateur, ai lancé caja, suis allé changer les droits du repertoire en question poiur les mettre au groupe audio (put etre cela peut il etre le cas a l'install, je n'y connais rien en la matiere)
on peut aussi creer un lien virtuel apres vers un repertoir .borderlands ...
mais tout cela n'est pas pour les néophytes.
developper de nouvelles fonctionnalités pour ce logiciel m'atire bien aussi, mais cela est une autre histoire... encore faut il que je sache comment programmer autour et dedans, et aussi dans quel cadre je peux le faire...

olinuxx utilisateur non connecté France
olof écrit :
bon, jed me suis connecte en superutilisateur, ai lancé caja, suis allé changer les droits du repertoire en question poiur les mettre au groupe audio


C'est une solution (techniquement fonctionnelle) de contournement. Ceci dit, c'est déconseillé de toucher aux permissions des répertoires se trouvant dans /usr/ sans avoir pleinement conscience de ce que l'on fait.

Pour précision, tu as modifié les permissions de /usr/share/ ou de /usr/share/borderland/ ?


olof écrit :
(put etre cela peut il etre le cas a l'install, je n'y connais rien en la matiere)


Comme dit ci-dessus, c'est une solution qui ne me plaît pas (à priori) en tant qu'intégrateur/développeur car elle me demande de dériver de ce que Debian fourni. C'est peut être pas très grave (je ne connais pas suffisamment le FHS pour en juger), mais ça veut dire qu'il faudrait que je gère/maintienne moi même tout ce qui pourrait être impacté à ce niveau.


olof écrit :
on peut aussi creer un lien virtuel apres vers un repertoir .borderlands ...


Si tu penses au répertoire .borderlands de ton home, alors je vois un gros problème de suite en cas de machine avec plusieurs utilisateurs. Prenons comme exemple une machine avec un utilisateur user1 et un autre user2.

Si un lien /usr/share/borderlands est fait vers /home/user1/.borderland, c'est bon pour user1 car il y a les droits sur /home/user1/.borderland .

Par contre, si la machine est démarrée sur une session de user2, alors user2 n'aura pas accès (en écriture) à /usr/share/borderland, celui ci étant un lien vers /home/users1 .



Ce qu'il faudrait idéalement, c'est que borderland prenne en charge l'utilisation des ressources communes à tous les utilisateurs du système se trouvant dans /usr/share/borderlands et aussi les ressources individuelles se trouvant quelque part dans le /home/ de chaque utilisateur. Pour info, il me semble que le standard XDG recommande à de telles données d'être placées dans le répertoire  
~/.local/share/data/borderland

olof utilisateur non connecté
merci olinux pour ces precisions

alors oui, je me suis contenté de changer les droits sur /usr/share/Borderlands/loops, même pas sur le repertoire Borderland

lors de ma prmiere install de Borderlands, en le compilant a partir des sources, le repertoire des echantillons, n'etait pas à cet endroit, mais dans le sous-repertoire lopps du repertoire ou j'avais mis les sources, donc je ne sais pas si l'implantation de loops est forcement dans usr/share/Borderlands

j'ai bien pris note de tes réserves et de tes avertissements pour le cas de plusieurs utilisateurs, et en effet, j'aimerais pouvoir utiliser Borderlands sur plusieurs utilisateurs differents et donc des repertoires differents pour les loops, dans un contexte d'enseignement.

j'ai songé à me pencher sur la programmation pour ajouter les fonctionnalités que je cherche, et suis à l'etude de la question, mais c'est loin d'etre simple pour moi, en attendant, il faut que change les roues d'un train en marche, c'est a dire que je trouve des solutions immediates, meme si elles manquent d'elegance.

je songe à ce stade à desinstaller Borderlands , et à le compiler/installer sur chaque utilisateur, penses tu que cette piste est possible et viable ?

olinuxx utilisateur non connecté France
olof écrit :
alors oui, je me suis contenté de changer les droits sur /usr/share/Borderlands/loops, même pas sur le repertoire Borderland


Bon principe de précaution, ça limite d'éventuelles casses.


olof écrit :
lors de ma prmiere install de Borderlands, en le compilant a partir des sources, le repertoire des echantillons, n'etait pas à cet endroit, mais dans le sous-repertoire lopps du repertoire ou j'avais mis les sources, donc je ne sais pas si l'implantation de loops est forcement dans usr/share/Borderlands


C'est moi qui ai rustiné l'installation du paquet de LibraZiK-2 pour qu'il soit dans un répertoire commun à tous les utilisateurs d'un système (le /usr/share/borderlands). J'ai fait cela en modifiant le fichier Borderlands.cpp pour info.



olof écrit :
je songe à ce stade à desinstaller Borderlands , et à le compiler/installer sur chaque utilisateur, penses tu que cette piste est possible et viable ?


Ça me paraît inutile. Mieux vaut faire comme tu as fait pour l'instant, c'est à dire changer les droits du répertoire /usr/share/borderlands/loops .


Note que peut être qu'en posant une demande dans la section du forum de développement de linuxmao.org, il pourrait y avoir un développeur motivé qui pourrait fournir une rustine pour ce que j'ai proposé plus haut ? Car le projet amont est plutôt mou j'ai l'impression.

olof utilisateur non connecté
peut etre serais je moi meme capable de le faire, mais je n'ai aucune experience de ce principe de rustines. comment met on cela en oeuvre ?
et si tu as toi meme modifié le source, pourquoi ne pas avoir fait ce que tu preconisais ?

olinuxx utilisateur non connecté France
olof écrit :
et si tu as toi meme modifié le source, pourquoi ne pas avoir fait ce que tu preconisais ?


Parce que j'ai su modifier le code qui disait "va chercher les échantillons dans répertoire1" pour "va chercher les échantillons dans répertoire2", mais je n'ai pas su lui dire "va chercher dans répertoire1 puis dans répertoire2".

olof utilisateur non connecté
mais à mon avis, il ne faut pas aller chercher les échantillons dans le repertoire 1 et dans le 2 mais seulement dans le 2 :
si on va chercher les echantillons dans un repetoire commun ou l'utilisateur n'a pas les droits, on va a chaque fois avoir des echantillons qui ne sont pas ceux que l'utilisateur veut utiliser qui seront affichés. meme si on pouvait avoir aussi ceux qu'on veut venant d'un autre repertoire, ça encombrerait l'espace de travail pour rien

là, j'ai essayé de faire un peu plus propre :

j'ai carrement supprimé en superutilisateur le repertoire /usr/share/Borderlands/loops
j'ai créé un répertoire .Borderlands et un repertoire .Borderlands/loops sous mon compte utilisateur, et j'ai ensuite créé un lien symbolique vers celui ci dans /usr/share/Borderlands sous le nom de loops
ainsi je peux mettre/enlever comme je veux selon la sceance de travail les echantillons avec un compte utilisateur.

une question : ta rustine, comment pourrais je en avoir les sources ? j'ai telecharge les sources du site de borderlands, mais je ne pense pas que tes modifications y figurent ?

olinuxx utilisateur non connecté France
Hm, je vois. J'affine la proposition en tenant compte de tes remarques.

Le fait d'avoir des échantillons de base dans /usr/share/Borderlands/loops est utile pour une raison principale : ça permet de pouvoir utiliser le logiciel dès le premier lancement sans rien faire d'autre (= facilité d'utilisation).

Alors pour concilier la facilité d'utilisation, et l'utilisation par utilisateur, je propose ceci : lors du lancement du logiciel, le logiciel regarde s'il y a des échantillons dans ~/.borderlands . S'il y en a, il les charge. S'il n'y en a pas, il charge les échantillons d'usines présents dans /usr/share/Borderlands/loops .



olof écrit :
une question : ta rustine, comment pourrais je en avoir les sources ?


apt source borderlands




olof écrit :
j'ai telecharge les sources du site de borderlands, mais je ne pense pas que tes modifications y figurent ?


Non, elles ne figurent pas dans les sources amont de borderlands car ce sont des modifications spécifiques pour le projet LibraZiK-2. Si jamais on réussi (toi, ou un autre dév) à améliorer le comportement de borderlands comme décrit ci-dessus, alors ça vaudra le coup de remonter ça en amont.

olof utilisateur non connecté
ta proposition me semble excellente en effet.
je vais regarder si j'ai possibilité de me pencher sur la question a partir de tes sources.

olof utilisateur non connecté
bon, je sais creer le repertoire .Borderlands/loops dans le repertoire utilisateur s'il n'existe pas et faire en sorte que borderlands pointe sur celui ci pour les echantillons. cela permet donc a chaque utilisateur d'avoir son repertoire loops a lui sans qu'il n'y ait de bug.

il peut suffire de rajouter un petit message clignotant a la page de depart ou il ya a
clic pour demarrer et echap pour quitter

disant :

mettre les echantillons dans le repertoire .Borderlands/loops


par exemple, et le programme serait quasi pret a l'emploi des le premier lancement pour tout le monde

comme il me semble que c'est toi qui as mis la version française de tout ça dans borderlands, tu sais ou se trouvent ces messages ?

qu'en penses tu ?

olinuxx utilisateur non connecté France
olof écrit :
comme il me semble que c'est toi qui as mis la version française de tout ça dans borderlands, tu sais ou se trouvent ces messages ?


C'est dans le fichier Borderlands.cpp .

Tu as réussi à faire en sorte que Borderlands utilise les fichiers dans /usr/share/borderlands s'il n'y a rien dans le ~ utilisateur ?

olof utilisateur non connecté
non, ça, pour le moment, je sais creer le repertoire .Borderlans/loops s'il n'existe pas, mais je n'ai pas encore trouvé comment tester l'existance des fichiers audio dedans (je suis absolument débutant en c++ et c'est quand même un langage qui manque singulierement de clareté, je trouve à primabord... mais je ne désespère pas.

olinuxx utilisateur non connecté France
Y'a probablement des développeurs C++ ici qui peuvent t'aider à ça. Où également, je sais que les logiciels de rncbc (genre Qjackctl, Qsynth) font ça.

olof utilisateur non connecté
c'est bon, j'ai trouvé, et ça fonctionne :
- si le répertoire .Borderlands/loops n'existe pas, il est créé
- s'il est vide, ce sont les échantillons de /usr/share/Borderlands/loops qui sont chargés
- j'ai rajouté un message clignotant à l'ecran de depart disant de mettre les echantillons dans .Borderlands/loops

j'ai donc modifié le fichier Borderlands.cpp uniquement.

veux tu le tester ?
veux tu mettre cette version dans librazik ?
comment dois je procéder pour te le communiquer ?
et que faut il faire pour faire un patch (j'ai vu que tes modifications sont listéees, elles, cela est il fait automatiquement par un programme, si oui lequel, et qui doit le mettre en oeuvre ? moi ou toi ?

et si je désire travailler sur Borderlands pour ajouter d'autres fonctionnalités à l'avenir, sachant que ce ne sera qu'en version linux, quelle serait la bonne démarche ?

olinuxx utilisateur non connecté France
Super si tu as trouvé comment faire.

olof écrit :
veux tu le tester ?


Oui.


olof écrit :
veux tu mettre cette version dans librazik ?


Je vais le tester d'abord smile


olof écrit :
comment dois je procéder pour te le communiquer ?


Tu peux mettre ce fichier "Borderlands.cpp" quelque part sur la toile et filer un lien ensuite ?


olof écrit :
et que faut il faire pour faire un patch (j'ai vu que tes modifications sont listéees, elles, cela est il fait automatiquement par un programme, si oui lequel, et qui doit le mettre en oeuvre ? moi ou toi ?


Je ne suis pas sûr de comprendre de quoi tu parles ici. Si c'est de LibraZiK, file moi le fichier, ou une rustine, et je me débrouillerai avec. Pour info, j'utilise quilt pour faire des rustines, mais il doit y avoir d'autres possibilités (en fait, j'utilise "dquilt" précisément, mais c'est presque la même chose).


olof écrit :
et si je désire travailler sur Borderlands pour ajouter d'autres fonctionnalités à l'avenir, sachant que ce ne sera qu'en version linux, quelle serait la bonne démarche ?


Probablement mettre un dépôt de ton fork en ligne.

olof utilisateur non connecté
ok , je l'ai telechargé dans la section projets : ici

la question au sujet des rustines est due au fait que je ne sais pas quelles sont les habitudes en matieres de rustines.

j'ai utilisé une librairie supplementaire en rajoutant un include du fichier dirent.h, que l'on trouve dans le paquet libc6-dev

là j'ai donc juste fourni le fichier tel quel comme je l'ai modifié. je regarderai ce que dquilt fait pour d'eventuels apports futurs.

olinuxx utilisateur non connecté France
olof écrit :
ok , je l'ai telechargé dans la section projets : ici


Je l'ai téléchargé et l'ai appliqué (après l'avoir modifié) au paquet dans LibraZiK-2 où il est maintenant en test. Ça fonctionne, bravo olof. Je le passerai dans le dépôt utilisateur probablement lors de la prochaine mise à jour hebdomadaire (aux alentours du week end prochain si tout roule normalement).


olof écrit :
la question au sujet des rustines est due au fait que je ne sais pas quelles sont les habitudes en matieres de rustines.


OK


olof écrit :
j'ai utilisé une librairie supplementaire en rajoutant un include du fichier dirent.h, que l'on trouve dans le paquet libc6-dev


OK


olof écrit :
là j'ai donc juste fourni le fichier tel quel comme je l'ai modifié. je regarderai ce que dquilt fait pour d'eventuels apports futurs.


dquilt, c'est surtout pour moi en tant qu'empaqueteur. Pour toi en tant que codeur, probablement que "quilt" ou "patch" sont plus indiqués.


Quelques remarques concernant les changements :
  • j'ai remplacé les lettres accentuées par des lettres sans accent car il me semble de mémoire (je n'ai pas revérifié) que borderlands n'aime pas les accents, il ne doit pas prendre en charge l'UTF8 probablement
  • je ne comprends pas l'utilité des 2 dernières modifications (autour du "goto cleanup")


Encore bravo !

PS : j'ai mis un commentaire pointant vers ici dans la page borderlands

olof utilisateur non connecté
olinuxx écrit :
je ne comprends pas l'utilité des 2 dernières modifications (autour du "goto cleanup")

tu parles de ces lignes ?
fichierLu = readdir(rep); /* On lit le premier répertoire du dossier (.) */
    fichierLu = readdir(rep); /* On lit le deuxieme répertoire du dossier (..) */
    if ((fichierLu = readdir(rep)) == NULL) {
        cout << "Pas d'échantillons dans le répertoire utilisateur, chargement des sons par défaut" << endl;    
        g_audioPath = g_audioPathDefault;
        }


olinuxx utilisateur non connecté France
Non, je parle de ça :

if (newFileMgr.loadFileSet(g_audioPath) == 1){
-        goto cleanup;
+       goto cleanup;
     }
-    
+  
     mySounds = newFileMgr.getFileVector();
     cout << "Succes du chargement des sons..." << endl;


Page : 1/2