Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 02-03-2014 00:16:15

temps
Adhérent(e)
Inscription : 02-03-2014

[packaging] demande d'aide lm3jo en deb

Bonjour,
Je suis le mainteneur du paquet lm3jo.deb
les sources sont ici
http://www.letime.net/vocale/paquet_deb … deb.tar.gz

Je n'arrive pas malgré tous mes efforts à construire un paquet bien construit.
Pouvez-vous m'aider ?

L'application est libre sous linux, bien qu'elle contienne un format audio propriétaire.

La forme du paquet actuel est ici :

http://www.letime.net/vocale/paquet_deb/lm3jo.deb
(elle contient les fichiers audio au format jo manquant dans les sources)

Cordialement

Pour mieux comprendre voici le tutoriel d'utilisation de l'application

Une fois installé il faut ouvrir un terminal.
Pendant son fonctionnement lm3jo crée des fichiers audio de manière à ce que les créateurs de nouveaux sons puissent les récupérer.
De manière à ne pas créer des fichiers audio dans une zone limité il est conseillé de créer un répertoire et de se placer à l'intérieur
mkdir mysound
cd mysound
Pour lancer l'application, il faut entrer dans le terminal
lm3jo
Une fois lancée l'application s'ouvre sur un clavier 78 touches.

1) Mode piano virtuel (Acapela, Flute, Drum, basse, Guitare, saxo, Orgue, piano, fun, violon, Guit.Elec., Nature)

12 boutons au dessus permettent de changer les sons se trouvant derrière le clavier 78 touches soient 936 sons de base clavier.
Les sons peuvent être joués à la sourie, et au clavier qwerty. Le clavier qwerty reprend les 26 touches du clavier du bas, il est possible de jouer plusieurs touches en même temps.
Les Bibliothèque de base sont en cours de construction et plusieurs des sons sont encore expérimentaux.

2)  Mode joa à jo

Le mode joa à jo sert à créer facilement sa bibliothèque de base de 2704 sons
Ses bases pourront être partagées ou utilisées à convenance par chaque créateur.
Pour créer un son au format jo, il faut cliquer sur le bouton joa à joUne fois installé il faut ouvrir un terminal.
Pendant son fonctionnement lm3jo crée des fichiers audio de manière à ce que les créateurs de nouveaux sons puissent les récupérer.
De manière à ne pas créer des fichiers audio dans une zone limité il est conseillé de créer un répertoire et de se placer à l'intérieur
sudo mkdir mysound
cd mysound
Pour lancer l'application, il faut entrer dans le terminal
lm3jo
Une fois lancée l'application s'ouvre sur un clavier 78 touches.

1) Mode piano virtuel (Acapela, Flute, Drum, basse, Guitare, saxo, Orgue, piano, fun, violon, Guit.Elec., Nature)

12 boutons au dessus permettent de changer les sons se trouvant derrière le clavier 78 touches soient 936 sons de base clavier.
Les sons peuvent être joués à la sourie, et au clavier qwerty. Le clavier qwerty reprend les 26 touches du clavier du bas, il est possible de jouer plusieurs touches en même temps.
Les Bibliothèque de base sont en cours de construction et plusieurs des sons sont encore expérimentaux.

2)  Mode joa à jo

Le mode joa à jo sert à créer facilement sa bibliothèque de base de 2704 sons
Ses bases pourront être partagées ou utilisées à convenance par chaque créateur.
Pour créer un son au format jo, il faut cliquer sur le bouton joa à jo
Il faut ouvrir un tableur et crée deux colonnes composées de valeurs entre 30 et 220.
La première valeur sert à indiquer l'amplitude du front acoustique.
La deuxième valeur sert à indiquer la durée du front acoustique en 1/44100 seconde.
Dans la fenêtre ouverte de lm3jo, il faut cliquer sur le premier onglet et faire un copier/coller des deux colonnes dans le fichier texte qui s'ouvre.
Ensuite il faut clique sur le deuxième onglet et donner un nom au fichier audio créé.
Ce nom doit être composé de deux lettres sensibles à la casse. En exemple aA ou aa ou Aa ou AA sons 4 fichiers différents.
Pour finaliser, il faut cliquer sur le troisième onglet qui crée le fichier et donne une première écoute de sa création.
Attention les sons dépendent des lois physiques, des lois physiologiques, et de ce que le cerveau veut bien entendre (l'entendement).
Pour l'entendement, en exemple si nous prenons une voix humaine et que nous enlevons la partie des sons placée juste avant un front de grande amplitude, le cerveau refusera de reconnaître la voix humaine et identifiera fort probablement un son de piano. Un conditionnement automatique des cas possibles très fort est présent en acoustique.


3) Mode composition mix

La bibliothèque interchangeable de premier niveau est composée de deux lettres sensibles à la casse, (en exemple ab, aB, Fj...) soit 2704 sons.
En premier il faut cliquer sur le bouton Mode composition mix. La fenêtre s'ouvre avec à sa droite des bouton d'ouverture de fichiers textes.
Dans ces fichiers textes pouvons associer les sons en créant des suites, pour reprendre l'exemple : abaBFj
Les bouton à droite permettent la lecture de ces fichiers textes.
La ligne 1 est pour une piste.
La ligne 2 est pour 2 pistes, la ligne 1 associée à la ligne 2, ainsi jusqu'à 16 pistes.

4) Mode lecture texte

Pour ouvrir le mode lecture texte, il faut cliquer sur le bouton portant le même nom.
Nous trouvons dans la fenêtre qui s'ouvre que deux boutons.
Le premier bouton sert à enter le texte que l'on veut écouter.
Le deuxième bouton sert à la lecture du texte entré.
Actuellement cette fonction est en construction sur la langue française.
Il est prévue plus tard d’ajouter d'autres langues.

5) Mode format Adn

Le mode format Adn est une des meilleures représentation du format abadie jo
Pour l'utiliser, il faut cliquer sur le bouton
Avec seulement trois octets nous pouvons produire un grand nombre des marteaux acoustiques.

Pour ouvrir la fenêtre il faut cliquer sur format Adn
La fenêtre Adn est composé de 8 boutons pour la création, d'un bouton pour lire le fichier audio créé et d'un bouton pour effacer le fichier audio.

Le premier bouton sert à créer les marteaux acoustiques.
Il faut entrer 3 valeurs sans qu'aucune ne dépasse 220.
La première pour indiquer la variation d'amplitude.
La deuxième pour indiquer la variation de durée
La troisième pour indiquer la durée totale.
Le deuxième bouton sur la même ligne pour écrire une fois le son créé dans le fichier audio.

Le troisième bouton sert à créer la licorne.
Il faut entrer 9 valeurs.
le quatrième bouton sert à créer le fichier son créé dans le fichier audio

Le cinquième bouton sert à créer le mariage
Il faut entrer 19 valeurs.
Le sixième bouton sert à créer le fichier son créé dans le fichier audio

Le septième bouton sert à créer la vinaigrette
Il faut entrer 4 valeurs.
Le huitième bouton sert à créer le fichier son créé dans le fichier audio

Le neuvième bouton sert à écouter le contenue du fichier audio

Le dixième bouton sert à effacer le contenue du fichier audio

Bonus Lm3jo
Une suite de 50 fronts qui peuvent être pilotés avec des curseurs.
Un curseur pou la force, un curseur pour l'amplitude et un curseur pour la durée.

Pour simplifier, nous pouvons conclure que les sons sont composés vide pour entendre les fronts d'onde importants.
Plusieurs causes peuvent avoir le même effet.
Que la même cause a des effets différents selon la façon dont elle est entourée.
Que les sons sont associés avec les sciences physiques, sont associés à la physiologie, et toujours associés avec les lois de l'entendement humain.
Pour créer les sons, j'ai utilisé les techniques de pensées de nos ancêtres gaulois. Nous ne pouvons pas le faire avec des concepts de fréquence ou d'algèbre.
Il faut ouvrir un tableur et crée deux colonnes composées de valeurs entre 30 et 220.
La première valeur sert à indiquer l'amplitude du front acoustique.
La deuxième valeur sert à indiquer la durée du front acoustique en 1/44100 seconde.
Dans la fenêtre ouverte de lm3jo, il faut cliquer sur le premier onglet et faire un copier/coller des deux colonnes dans le fichier texte qui s'ouvre.
Ensuite il faut clique sur le deuxième onglet et donner un nom au fichier audio créé.
Ce nom doit être composé de deux lettres sensibles à la casse. En exemple aA ou aa ou Aa ou AA sons 4 fichiers différents.
Pour finaliser, il faut cliquer sur le troisième onglet qui crée le fichier et donne une première écoute de sa création.
Attention les sons dépendent des lois physiques, des lois physiologiques, et de ce que le cerveau veut bien entendre (l'entendement).
Pour l'entendement, en exemple si nous prenons une voix humaine et que nous enlevons la partie des sons placée juste avant un front de grande amplitude, le cerveau refusera de reconnaître la voix humaine et identifiera fort probablement un son de piano. Un conditionnement automatique des cas possibles très fort est présent en acoustique.


3) Mode composition mix

La bibliothèque interchangeable de premier niveau est composée de deux lettres sensibles à la casse, (en exemple ab, aB, Fj...) soit 2704 sons.
En premier il faut cliquer sur le bouton Mode composition mix. La fenêtre s'ouvre avec à sa droite des bouton d'ouverture de fichiers textes.
Dans ces fichiers textes pouvons associer les sons en créant des suites, pour reprendre l'exemple : abaBFj
Les bouton à droite permettent la lecture de ces fichiers textes.
La ligne 1 est pour une piste.
La ligne 2 est pour 2 pistes, la ligne 1 associée à la ligne 2, ainsi jusqu'à 16 pistes.

4) Mode lecture texte

Pour ouvrir le mode lecture texte, il faut cliquer sur le bouton portant le même nom.
Nous trouvons dans la fenêtre qui s'ouvre que deux boutons.
Le premier bouton sert à enter le texte que l'on veut écouter.
Le deuxième bouton sert à la lecture du texte entré.
Actuellement cette fonction est en construction sur la langue française.
Il est prévue plus tard d’ajouter d'autres langues.

5) Mode format Adn

Le mode format Adn est une des meilleures représentation du format abadie jo
Pour l'utiliser, il faut cliquer sur le bouton
Avec seulement trois octets nous pouvons produire un grand nombre des marteaux acoustiques.

Pour ouvrir la fenêtre il faut cliquer sur format Adn
La fenêtre Adn est composé de 8 boutons pour la création, d'un bouton pour lire le fichier audio créé et d'un bouton pour effacer le fichier audio.

Le premier bouton sert à créer les marteaux acoustiques.
Il faut entrer 3 valeurs sans qu'aucune ne dépasse 220.
La première pour indiquer la variation d'amplitude.
La deuxième pour indiquer la variation de durée
La troisième pour indiquer la durée totale.
Le deuxième bouton sur la même ligne pour écrire une fois le son créé dans le fichier audio.

Le troisième bouton sert à créer la licorne.
Il faut entrer 9 valeurs.
le quatrième bouton sert à créer le fichier son créé dans le fichier audio

Le cinquième bouton sert à créer le mariage
Il faut entrer 19 valeurs.
Le sixième bouton sert à créer le fichier son créé dans le fichier audio

Le septième bouton sert à créer la vinaigrette
Il faut entrer 4 valeurs.
Le huitième bouton sert à créer le fichier son créé dans le fichier audio

Le neuvième bouton sert à écouter le contenue du fichier audio

Le dixième bouton sert à effacer le contenue du fichier audio

Bonus Lm3jo
Une suite de 50 fronts qui peuvent être pilotés avec des curseurs.
Un curseur pou la force, un curseur pour l'amplitude et un curseur pour la durée.

Pour simplifier, nous pouvons conclure que les sons sont composés de vide pour entendre les fronts d'onde importants.
Plusieurs causes peuvent avoir le même effet.
Que la même cause a des effets différents selon la façon dont elle est entourée.
Que les sons sont associés avec les sciences physiques, sont associés à la physiologie, et toujours associés avec les lois de l'entendement humain.
Pour créer les sons, j'ai utilisé les techniques de pensées de nos ancêtres gaulois. Nous ne pouvons pas le faire avec des concepts de fréquence ou d'algèbre.

Dernière modification par temps (02-03-2014 00:28:37)

Hors ligne

#2 02-03-2014 00:38:49

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Salut,

J'ai regardé tes deux archives, je ne vois aucun programme d'installation.

La première chose à faire pour toi est un Makefile, permettant 1) la compilation via make et 2) l'installation où il fait via make install.

C'est un préalable à la construction d'un paquet Debian.

Tu vois comment faire ça ?

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#3 02-03-2014 01:13:25

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Merci pour la réponse.
Je vois bien que dans mon deb j'ai pas de rules et qu'il manque quelque chose.
Non je ne sais pas comment faire mon makefile
Actuellement j'ai les code en C pour faire les applications à placer dans le bin , la bibliothèque à placer dans share et le fichier de control qui indique la version du paquet.
Pour faire le deb j'ai suivit un tutoriel de openclassrooms

La particularité est que la fenêtre graphique est sous qt

Comment fait-on un makefile ?

Cordialement

Dernière modification par temps (02-03-2014 01:18:27)

Hors ligne

#4 02-03-2014 02:50:10

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

J'ai commencé à regarder ce qu'est un makefile par l'exemple.
Si j'ai bien compris,c'est un bash qui compile les sources
Si je liste les éventuelles difficultés
1) comme l'application lm3jo fait de nombreuses choses différentes, elle possède de nombreuses sous applications. est-il possible d'en faire un seul deb ?
2) S'il est possible de faire un seul deb, comment gérer le fait que certaines applications soient en C++, d'autres en C, et d'autres en bash ?
3) Qu"elle est l'avantage de faire un makefille (que je ne sais pas encore faire) par rapport à la technique de openclassrooms qui crée un deb facilement à partir des applications déjà compilées ? quitte à ajouter à coté un tar.gz qui indiquent les codes sources pour que chacun puisse adapter à son linux ?
Cordialement

Un premier jet de makefille


# construction d'un Makefile pour lm3jo sous Qt

Programme : lm3jo.o aasynthe1.o aasynthe2.o aasynthe3.o aasynthe4.o aasynthe5.o aasynthe6.o aasynthe7.o aasynthe8.o aasynthe9.o aasynthe10.o aasynthe11.o aasynthe12.o aasynthe13.o aasynthe14.o aasynthe15.o aasynthe16.o aasynthe17.o aasynthe18.o aasynthe19.o aasynthe20.o aasynthe21.o aasynthe22.o aasynthe23.o aasynthe24.o aasynthe25.o aasynthe26.o


        gcc lm3jo.o aasynthe1.o aasynthe2.o aasynthe3.o aasynthe4.o aasynthe5.o aasynthe6.o aasynthe7.o aasynthe8.o aasynthe9.o aasynthe10.o aasynthe11.o aasynthe12.o aasynthe13.o aasynthe14.o aasynthe15.o aasynthe16.o aasynthe17.o aasynthe18.o aasynthe19.o aasynthe20.o aasynthe21.o aasynthe22.o aasynthe23.o aasynthe24.o aasynthe25.o aasynthe26.o  -o Programme
       
  aasynthe1.o : aasynthe1.c
        gcc -c aasynthe1.c -o aasynthe1.o        
        aasynthe2.o : aasynthe2.c
        gcc -c aasynthe2.c -o aasynthe2.o
        aasynthe3.o : aasynthe3.c
        gcc -c aasynthe3.c -o aasynthe3.o
        aasynthe4.o : aasynthe4.c
        gcc -c aasynthe4.c -o aasynthe4.o
        aasynthe5.o : aasynthe5.c
        gcc -c aasynthe5.c -o aasynthe5.o
        aasynthe6.o : aasynthe6.c
        gcc -c aasynthe6.c -o aasynthe6.o
        aasynthe7.o : aasynthe7.c
        gcc -c aasynthe7.c -o aasynthe7.o
        aasynthe8.o : aasynthe8.c
        gcc -c aasynthe8.c -o aasynthe8.o
        aasynthe9.o : aasynthe9.c
        gcc -c aasynthe9.c -o aasynthe9.o
        aasynthe10.o : aasynthe10.c
        gcc -c aasynthe10.c -o aasynthe10.o
        aasynthe11.o : aasynthe11.c
        gcc -c aasynthe11.c -o aasynthe11.o
        aasynthe12.o : aasynthe12.c
        gcc -c aasynthe12.c -o aasynthe12.o
        aasynthe13.o : aasynthe13.c
        gcc -c aasynthe13.c -o aasynthe13.o
        aasynthe14.o : aasynthe14.c
        gcc -c aasynthe14.c -o aasynthe14.o
        aasynthe15.o : aasynthe15.c
        gcc -c aasynthe15.c -o aasynthe15.o
        aasynthe16.o : aasynthe16.c
        gcc -c aasynthe16.c -o aasynthe16.o
        aasynthe17.o : aasynthe17.c
        gcc -c aasynthe17.c -o aasynthe17.o
        aasynthe18.o : aasynthe18.c
        gcc -c aasynthe18.c -o aasynthe18.o
        aasynthe19.o : aasynthe19.c
        gcc -c aasynthe19.c -o aasynthe19.o
        aasynthe20.o : aasynthe20.c
        gcc -c aasynthe20.c -o aasynthe20.o
        aasynthe21.o : aasynthe21.c
        gcc -c aasynthe21.c -o aasynthe21.o
        aasynthe22.o : aasynthe22.c
        gcc -c aasynthe22.c -o aasynthe22.o
        aasynthe23.o : aasynthe23.c
        gcc -c aasynthe23.c -o aasynthe23.o
        aasynthe24.o : aasynthe24.c
        gcc -c aasynthe24.c -o aasynthe24.o
        aasynthe25.o : aasynthe25.c
        gcc -c aasynthe25.c -o aasynthe25.o
        aasynthe26.o : aasynthe26.c
        gcc -c aasynthe26.c -o aasynthe26.o

LM3JO = lm3jo

INCLUDEDIRS = \
  -I/usr/share/include \



LIBDIRS = \
  -L$(lm3jo)/bin \


LIBS = \
  -lqt -lsox

CXXSOURCES = lm3jo.cpp
CXXOBJECTS = $(CXXSOURCES:.cpp=.o)
CXXFLAGS = -DESRI_UNIX $(INCLUDEDIRS)
CXX = g++

LDFLAGS = $(LIBDIRS) $(LIBS)

all: $(LM3JO)


$(LM3JO): $(CXXOBJECTS)
  $(CXX) -o $@ $(CXXOBJECTS) $(LDFLAGS)

lm3jo.o: lm3jo.cpp lm3jo.h
  $(CXX) $(CXXFLAGS) -c -o lm3jo.o lm3jo.cpp


clean:
  $(RM) -f $(CXXOBJECTS) $(LM3JO)


run:
          ./$(LM3JO)




 

Dernière modification par temps (02-03-2014 05:36:19)

Hors ligne

#5 02-03-2014 12:15:13

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Le Makefile est effectivement un script qui compile les sources et les installe. Cependant, ce n'est pas un fichier shell script.

Je vais reprendre ton exemple avec toi.

Pour les difficultés que tu soulèves:

temps a écrit :

Si je liste les éventuelles difficultés
1) comme l'application lm3jo fait de nombreuses choses différentes, elle possède de nombreuses sous applications. est-il possible d'en faire un seul deb ?


Oui

temps a écrit :

2) S'il est possible de faire un seul deb, comment gérer le fait que certaines applications soient en C++, d'autres en C, et d'autres en bash ?


Cela n'importe qu'à la compilation, et c'est justement le Makefile qui gère ça

temps a écrit :

3) Quel est l'avantage de faire un makefille (que je ne sais pas encore faire) par rapport à la technique de openclassrooms qui crée un deb facilement à partir des applications déjà compilées ? quitte à ajouter à coté un tar.gz qui indiquent les codes sources pour que chacun puisse adapter à son linux ?


Faire un deb à partir d'une application déjà compilée, c'est bon pour installer sur sa machine, mais ça n'est pas redistribuable. C'est le niveau 0 du paquet Debian, celui qu'on garde pour soi parce qu'il ne marche pas sur la machine du voisin smile

# construction d'un Makefile pour lm3jo sous Qt

# les flags pour le linker
LDFlAGS+=-lqt -lsox
# les flags pour le compilo C++
CXXFLAGS+=-DESRI_UNIX

# les compilos
CXX ?= g++
CC ?= gcc

# les dossiers d'installation
PREFIX=$(BASEDIR)/usr
BINDIR=$(PREFIX)/bin
SHAREDIR=$(PREFIX)/share/lm3jo

# les fichiers sources
CFILES=$(wildcard *.c lm3jo_qt/*.c)
CXXFILES=$(wildcard *.cpp lm3jo_qt/*.cpp)

# les objets générés
OBJECTS=$(CFILES:%.c=%.o) $(CXXFILES:%.cpp:%.o)

# La première cible, c'est à dire la cible par défaut, va construire tous les binaires (intiquer les autres binaires à la suite)
all: aasynthe1 aasynthe2

# Comment faire un .o à partir d'un .c
%.o: %.c
  $(CC) -c $(CFLAGS) $(CPPFLAGS) $^

# Comment faire un .o à partir d'un .cpp
%.o: %.cpp
  $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $^

# Comment produire les exécutables finals (à indiquer pour tous les exécutables)
aasynthe1: aasynthe1.o
  $(LD) -o $@ $(LDFLAGS) $^

aasynthe2: aasynthe2.o
  $(LD) -o $@ $(LDFLAGS) $^



# Règle de nettoyage
clean:
  rm -f $(OBJECTS)

# Nettoyage complet : rajouter tous les exécutables
cleanall: clean
  rm -f aasynthe2 aasynthe2

# Règle d'installation
install:
  install -D -m0755 aasynthe1  $(BINDIR)/aasynthe1
  install -D -m0755 aasynthe2  $(BINDIR)/aasynthe2
  # Rajouter une ligne pour chaque binaire
  for f in *.sh ; do \
    install -D -m0755 $$f $(BINDIR)/$$f;\
  done
  for f in *.bmp *.png ; do \
    install -D -m0644 $$f $(SHAREDIR)/image/$$f;\
  done
  for f in *.jo ; do \
    install -D -m0644 $$f $(SHAREDIR)/audio/$$f;\
  done
  for f in *.txt ; do \
    install -D -m0644 $$f $(SHAREDIR)/texte/$$f;\
  done

# Règle de désinstallation
uninstall:
  rm  $(BINDIR)/aasynthe1
  rm  $(BINDIR)/aasynthe2
  # Rajouter une ligne pour chaque binaire
  rm -r $(SHAREDIR)
 


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#6 02-03-2014 12:40:45

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Merci pour ces précieux enseignements, j'avais bien avancé dans la création du makefile, mais à la lecture du dernier post, je m’aperçois que ce n'était pas dans la bonne direction.
A la lecture de la raison d'un makefile, il va de soit qu'il faut en créé un, puisque la démarche est de donner les codes pour linux de manière à ce que chaque tux puisse les adapter à sa convenance.

Je me pose encore une question, elle concerne les bash que j'utilise (aapour1.sh ...). Comment les placer dans le makefile ? et est-ce que les bonnes pratiques  les placent dans /usr/bin ?

Cordialement

Hors ligne

#7 02-03-2014 14:06:54

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Salut,

La science des Makefile vient avec la pratique. J'en ai encore appris sur la syntaxe le mois dernier, alors que ça fait plus de 8 ans que j'ai découvert ça smile

Pour ce qui est des binaires et des scripts, et comme tu abordes les bonnes pratiques, parlons-en.

Un paquet qui installe zéro, un ou cinq binaires, c'est acceptable.
Un paquet qui en installe 162, non.
D'autant que je ne saisis pas vraiment l'utilité de chacun.

Prenons le cas des scripts shell. Tu en as 106. Voici un moyen de réduire leur nombre à 2 :
fichier «aapour.sh»

#!/bin/sh

A=$1
shift

case $A in
  "1")
  aasynthe1 $1 &
  ;;
  "2")
  aasynthe2 $1 &
  ;;
# rajouter la suite des possibilités ici.
esac
exit 0



Idem pour jorisspe.sh.

Cependant, je ne suis pas sûr de comprendre la raison d'être de ces scripts shell. Il servent visiblement à lancer une autre application. Pourquoi lancer un script qui lance une autre application plutôt que de lancer directement l'autre application ?


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#8 02-03-2014 16:05:33

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Merci pour la réponse.
De fait la construction dans le répertoire est empirique. Il n'y a pas eu de réflexion sur qui va faire quoi et comment cela va être entrepris.
J'ai poussé les codes au fur et à mesure afin d'obtenir l'effet désiré.
Pour plus de détails, les bash me permettent de lancer l'audio en sous tache car la fenêtre graphique gel facilement. Et cette technique ma permis d'éviter les gel.
La série de 26 aasynthe permet le multitouche sur les touches du clavier, mais en fait ce sont exactement les mêmes applications, il n'y a que le nom du fichier de sortie qui change. Si comme sox il est possible de lancer de multiple fois cette appli il suffit de mettre le nom du fichier de sortie en argument pour ne l'avoir qu'une fois. C'est la même chose pour les synthemix ou les synthqt
Concernant les bash, ils sont construit sur le même principe que les binaires, ce sont des répétitions de la même fonction, s'il est possible de lancer plusieurs fois en même temps le même bash en changeant les arguments, il est possible d'obtenir le même effet avec très peu de bash.

Avant de continuer sur la construction du makefile, je vais reprendre les codes de manière à utiliser qu'une seule fois la même fonction et mettre le fichier de sortie en argument, et ensuite de tester la même chose avec les bash.
Quand ces tests seront fini, je reviendrai pour la réalisation d'un makefile répondant mieux aux usages.

En regardant les 12 fenêtres principales de qt, c'est aussi la même chose, il n'y a que les noms des fichiers audio qui changent, il y a la peut-être aussi un meilleur usage pour écrire les codes.

Cordialement

Dernière modification par temps (02-03-2014 16:15:11)

Hors ligne

#9 02-03-2014 17:43:10

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Voici le retour de test des bin et des bash
C'est positif, j'ai modifier la première fenêtre sous qt pour appeler toujours le même bash

#/bin/bash
aasynthe $1 $2 &
exit 0


qui récupère deux arguments, ces deux argument sont transmis toujours au même binaire qui change le nom de sortie en lui donnant le nom du premier argument.
Donc 1 seul bash aapour.sh à la place des 76 précédement et un seul aasynthe à la place des 26 précédement.
Je vais déployer la technique pour toutes les fenêtres qt, et corriger les autres bash et binaires. Ensuite je change le contenue de mon répertoire source et je reviendrai reprendre le travail sur le makefile.
Cordialement

Dernière modification par temps (02-03-2014 17:44:34)

Hors ligne

#10 02-03-2014 17:51:15

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Ah, super, ça va devenir bien plus élégant comme ça.
Une dernière chose: il est possible de lancer une appli en sous-tâche directement depuis ton code C via le code suivant :

if(!fork()) {
  execlp();
  perror("Ceci ne devrait pas arriver.");
  exit(-1);
}


J'ai mis execlp, mais tu peut utiliser la commande d'exécution que tu veux.

Pense à rajouter (pour ce code)

#include <unistd.h>
#include <stdio.h>


s'ils ne sont pas présents.

Edit: pour lancer deux applications en tâches de fond :

if(!fork()) {
  execlp(); // tâche 1
  perror("Ceci ne devrait pas arriver.");
  exit(-1);
}
if(!fork()) {
  execlp(); // tâche 2
  perror("Ceci ne devrait pas arriver.");
  exit(-1);
}


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#11 03-03-2014 09:55:20

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Voici un premier résultat :
http://www.letime.net/vocale/paquet_deb … deb.tar.gz
soit 2 bash et 10 binaires. les 4 binaires de adn peuvent être regroupé et certainement que les 12 fenêtres principales de qt aussi, mais ce sera après que j'ai amélioré d'autre points que je juge plus important, (format Adn, bibliothèque ...)

Au sujet des fork je testerai plus tard, mais j'ai mis en veille le synthé curseur de fronts qui suivait les sons des curseurs en direct, car il utilisait des fork, et cela gelait la fenêtre graphique

Cordialement

Hors ligne

#12 03-03-2014 12:30:21

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Bien, on y voit plus clair. Donc maintenant, le Makefile smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#13 03-03-2014 14:29:27

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Je faisais une petite pause. Je viens de reprendre.
En premier j'ai mis en ligne le makefile avec toutes les sources contenues dans le deb sous le répertoire sharehttp://www.letime.net/vocale/paquet_deb … deb.tar.gz
et voici la première tentative de makefile (je ne pense qu'elle puisse marcher car je ne sais pas gérer l'aspect graphique lm3jo et les bibliothèque que j'ai laissé dans le répertoire share.

# construction d'un Makefile pour lm3jo sous Qt
#creer avec l'aide des intervenants du forum de http://debian-facile.org/

# les flags pour le linker
LDFlAGS+=-lqt -lsox
# les flags pour le compilo C++
CXXFLAGS+=-DESRI_UNIX

# les compilos
CXX ?= g++
CC ?= gcc

# les dossiers d'installation
PREFIX=$(BASEDIR)/usr
BINDIR=$(PREFIX)/bin
SHAREDIR=$(PREFIX)/share/lm3jo

# les fichiers sources
  CFILES=$(wildcard *.c lm3jo_qt/*.c)
  CXXFILES=$(wildcard *.cpp lm3jo_qt/*.cpp)

# les objets générés
OBJECTS=$(CFILES:%.c=%.o) $(CXXFILES:%.cpp:%.o)

# La première cible, c'est à dire la cible par défaut, va construire tous les binaires (intiquer les autres binaires à la suite)
all: aasynthe adnlicorne adnmariage adnmarteau adnnetoie adnvinaigrette joa-a-jo synthemix synthevocal synthqt

# Comment faire un .o à partir d'un .c
%.o: %.c
  $(CC) -c $(CFLAGS) $(CPPFLAGS) $^

# Comment faire un .o à partir d'un .cpp
%.o: %.cpp
    $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $^

# Comment produire les exécutables finals (à indiquer pour tous les exécutables)
aasynthe: aasynthe.c
  $(LD) -o $@ $(LDFLAGS) $^

adnlicorne: adnlicorne.c
    $(LD) -o $@ $(LDFLAGS) $^
adnmariage: adnmariage.c
    $(LD) -o $@ $(LDFLAGS) $^
adnmarteau: adnmarteau.c
    $(LD) -o $@ $(LDFLAGS) $^
adnnetoie: adnnetoie.c
    $(LD) -o $@ $(LDFLAGS) $^
adnvinaigrette: adnvinaigrette.c
    $(LD) -o $@ $(LDFLAGS) $^
joa-a-jo: joa-a-jo.c
    $(LD) -o $@ $(LDFLAGS) $^
synthemix: synthemix.c
    $(LD) -o $@ $(LDFLAGS) $^
synthqt: synthqt.c
    $(LD) -o $@ $(LDFLAGS) $^

# Règle de nettoyage
clean:
    rm -f $(OBJECTS)

# Nettoyage complet : rajouter tous les exécutables
cleanall: clean
    rm -f aasynthe adnlicorne adnmariage adnmarteau adnnetoie adnvinaigrette joa-a-jo synthemix synthevocal synthqt lm3jo

# Règle d'installation
install:
    install -D -m0755 aasynthe  $(BINDIR)/aasynthe
    install -D -m0755 adnlicorne  $(BINDIR)/adnlicorne
      install -D -m0755 adnmariage  $(BINDIR)/adnmariage
        install -D -m0755 adnmarteau  $(BINDIR)/adnmarteau
          install -D -m0755 adnnetoie  $(BINDIR)/adnnetoie
            install -D -m0755 adnvinaigrette  $(BINDIR)/adnvinaigrette
              install -D -m0755 joa-a-jo  $(BINDIR)/joa-a-jo
                install -D -m0755 synthemix  $(BINDIR)/synthemix
                  install -D -m0755 synthevocal  $(BINDIR)/synthevocal
                    install -D -m0755 synthqt  $(BINDIR)/synthqt
                      install -D -m0755 lm3jo  $(BINDIR)/lm3jo
  # Rajouter une ligne pour chaque binaire
    for f in *.sh ; do \
      install -D -m0755 $$f $(BINDIR)/$$f;\
    done
    for f in *.bmp *.png ; do \
      install -D -m0644 $$f $(SHAREDIR)/image/$$f;\
    done
    for f in *.jo ; do \
      install -D -m0644 $$f $(SHAREDIR)/audio/$$f;\
    done
    for f in *.txt ; do \
      install -D -m0644 $$f $(SHAREDIR)/texte/$$f;\
    done

# Règle de désinstallation
uninstall:
    rm  $(BINDIR)/aasynthe
    rm  $(BINDIR)/adnlicorne
      rm  $(BINDIR)/adnmariage
        rm  $(BINDIR)/adnmarteau
          rm  $(BINDIR)/adnnetoie
            rm  $(BINDIR)/adnvinaigrette
              rm  $(BINDIR)/joa-a-jo
                rm  $(BINDIR)/synthemix
                rm  $(BINDIR)/synthevocal
                rm  $(BINDIR)/synthqt
                rm  $(BINDIR)/lm3jo
    # Rajouter une ligne pour chaque binaire
    rm -r $(SHAREDIR)
 



 


Et j'obtiens

 make
ld -o aasynthe  aasynthe.c
aasynthe.c: file not recognized: Format de fichier non reconnu
make: *** [aasynthe] Erreur 1
 




Cordialement

Dernière modification par temps (03-03-2014 18:06:11)

Hors ligne

#14 03-03-2014 22:58:51

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Salut,

«  adnlicorne: adnlicorne.c »
En fait, c'est
«  adnlicorne: adnlicorne.o »

J'avais fait une typo dans le premier Makefile.


Attention aussi aux espaces, ils comptent.
Donc, pas de ligne vide à l'intérieur d'une règle.
Deux espaces de tabulation à l'intérieur des règles.
Pas d'espace de tabulation ailleurs.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#15 03-03-2014 23:26:01

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonsoir,
merci, l'erreur venait bien de là, j'arrivai pas à trouver un message d'erreur similaire sur internet.
Mais maintenant que make se lance, c'est pour me donner des messages d'erreurs sur le code des appli, comme si j'avais oublié de mettre les include

make
cc -c   aasynthe.c
ld -o aasynthe  aasynthe.o
ld: AVERTISSEMENT: ne peut trouver le symbole d'entrée _start; utilise par défaut 0000000008048094
aasynthe.o: dans la fonction « FonctionEntete »:
aasynthe.c:(.text+0x95): référence indéfinie vers « fopen »
aasynthe.c:(.text+0xbf): référence indéfinie vers « printf »
aasynthe.c:(.text+0xcb): référence indéfinie vers « exit »
aasynthe.c:(.text+0xe6): référence indéfinie vers « fgetc »
aasynthe.c:(.text+0x178): référence indéfinie vers « fgetc »
aasynthe.c:(.text+0x199): référence indéfinie vers « fclose »
aasynthe.c:(.text+0x248): référence indéfinie vers « fopen »cqttiaix
aasynthe.c:(.text+0x29f): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x2c5): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x309): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x34d): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x391): référence indéfinie vers « fwrite »
aasynthe.o:aasynthe.c:(.text+0x3c7): encore plus de références indéfinies suivent vers « fwrite »
aasynthe.o: dans la fonction « FonctionEntete »:
aasynthe.c:(.text+0x569): référence indéfinie vers « fclose »
aasynthe.c:(.text+0x589): référence indéfinie vers « __stack_chk_fail »
aasynthe.o: dans la fonction « fonctionconvertisseur »:
aasynthe.c:(.text+0x1bf8): référence indéfinie vers « fopen »
aasynthe.c:(.text+0x1c22): référence indéfinie vers « printf »
aasynthe.c:(.text+0x1c2e): référence indéfinie vers « exit »
aasynthe.c:(.text+0x1c7b): référence indéfinie vers « fgetc »
aasynthe.c:(.text+0x1dbb): référence indéfinie vers « fopen »
aasynthe.c:(.text+0x1eb2): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x1eda): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x20da): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x2102): référence indéfinie vers « fwrite »
aasynthe.c:(.text+0x22d8): référence indéfinie vers « fwrite »
aasynthe.o:aasynthe.c:(.text+0x2300): encore plus de références indéfinies suivent vers « fwrite »
aasynthe.o: dans la fonction « fonctionconvertisseur »:
aasynthe.c:(.text+0x28e1): référence indéfinie vers « fclose »
aasynthe.c:(.text+0x290f): référence indéfinie vers « fgetc »
aasynthe.c:(.text+0x2930): référence indéfinie vers « fclose »
aasynthe.c:(.text+0x295f): référence indéfinie vers « sprintf »
aasynthe.c:(.text+0x296d): référence indéfinie vers « system »
aasynthe.c:(.text+0x2988): référence indéfinie vers « __stack_chk_fail »
make: *** [aasynthe] Erreur 1
 



Après plusieurs recherches et tests sans succès, j'en suis arrivé à la conclusion qu'il fallait tout placer dans le même répertoire.
Ensuite puisqu'il y a un .pro de qt, d'entrer en terminal qmake, ce qui va générer un Makefile (il y a une majuscule), ensuite intégrer à ce makefile les applications en C.
Je vais faire une pause dans la recherche de création de deb, parce que j'ai une erreur 1 qui apparaît sur lm.o , alors qu'en compilant avec d'autres techniques elle n'apparait pas, parce qu'encore je ne sais pas mettre les bash ou les bibliothèques. Je préfère pour l'instant ajouter une bascule de banque sons, (des répertoires contenant chacun 52x52 sons) pilotée par une fonction piloté par un bouton de la première fenêtre. En exemple pos1 donne 2704 son de tel type, pos 2 2704 autres sons .... je vois bien une grille que j'active à chaque 2704 sons ajoutés. Je pense que c'est plus utile que de chercher à faire un deb avec un makefile que je ne sais pas faire

pour l'instant je vais garder le deb actuel, il n'est peut-être pas parfais, mais il fonctionne sur les machines que j'ai croisé.

Cordialement

Dernière modification par temps (04-03-2014 02:59:13)

Hors ligne

#16 04-03-2014 09:48:35

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Salut,

Ok.

Faire les choses proprement et certes plus délicat et plus compliqué, mais cela te permet aussi de mieux comprendre et faire comprendre comment les choses marches.
Si tu mets tout dans le même dossier, c'est l'horreur.
Déjà, tous des fichiers multimédia gagneraient à être rangé (dans les sources) dans un dossier « data/ » ou « share » ou que sais-je.
Ensuite, si les applications ne nécessitent pas d'être linkées entre elles, tu gagnes à les mettre chacune dans un dossier différent.

Enfin, pour les problèmes ci-dessus, il semblerait que « #include <stdio.h> » manque dans aasynthe.c smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#17 04-03-2014 11:25:56

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Merci pour la réponse,
je modifierai le répertoire sources dans la journée, mais je ne pense pas pouvoir avoir un makefile qui fonctionne (ce sera celui créé par qmake que j'ai adapté).
Quand je parle de mettre tout dans le même répertoire, j'entends les c++ de qt avec les 10 appli en C et 2 bash, que les binaire.
Pour LM.o c'est un reste de mes fork et qthread qui se compile très bien sous qt qui n'était pas digéré par make, je l'ai enlevé car inutile, la partie virtuelle de LM n'est pas utilisée.
Au sujet des appli en C, c'est problème de linkage, car si je n'avais pas les bonnes include avec des appli qui ouvrent et ferment les fichiers, cela fait longtemps que je m'en serait aperçu.
Voila pour plus de détail et ou j'en suis dans la recherche d'un deb correspondant aux usages.

Hors ligne

#18 04-03-2014 11:36:27

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

temps a écrit :

Bonjour,
Merci pour la réponse,
je modifierai le répertoire sources dans la journée, mais je ne pense pas pouvoir avoir un makefile qui fonctionne (ce sera celui créé par qmake que j'ai adapté).


Un Makefile peut en appeler un autre. L'idée est d'avoir un Makefile global dans le dossier racine, qui va appeler les différents autres Makefile pour construire les différents binaires.
Le Makefile de qmake ne devrait pas être modifié, puisque si tu changes tes sources il te faudra le regénérer, et le re-patcher…

temps a écrit :

Quand je parle de mettre tout dans le même répertoire, j'entends les c++ de qt avec les 10 appli en C et 2 bash, que les binaire.


Que les sources des binaires tu veux dire?
Les binaires en eux-même ne doivent pas être présents dans les sources.
Et les sources n'ont inversement pas à être dans le paquet binaire Debian.

temps a écrit :

Pour LM.o c'est un reste de mes fork et qthread qui se compile très bien sous qt qui n'était pas digéré par make, je l'ai enlevé car inutile, la partie virtuelle de LM n'est pas utilisée.
Au sujet des appli en C, c'est problème de linkage, car si je n'avais pas les bonnes include avec des appli qui ouvrent et ferment les fichiers, cela fait longtemps que je m'en serait aperçu.
Voila pour plus de détail et ou j'en suis dans la recherche d'un deb correspondant aux usages.


Comme indiqué, si tu veux pouvoir générer un .deb pour différentes archi, différentes versions de debian, et de bonne qualité, il te faut un Makefile permettant de générer les binaires à partir des sources seules, et de permettre l'installation des binaires et autres.

Si tu es fâché avec les Makefile, tu peux toujours faire un script shell qui fait ça, même si tu t'écartes alors de la méthode recommandée.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#19 04-03-2014 12:13:53

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Je lis la réponse avec intérêt.

Je me suis aperçu que j'ai oublié de dire quelque chose d'important dans mon premier message, c'est par ignorance sur les makefile pour deb et pas par volonté.
J'ai compris à force de lire et relire le fil sur le forum que le makefile est directement attaché à la logique de construction de l'appli, je ne le savais pas.
Je ne le savais pas et je ne l'ai pas donné, alors qu'il me semble indispensable pour construire son makefile
Le voici :
J'ai créé mes fenêtres graphiques (car pour moi c'est ce que je maitrisais le moins) d'ou le nom lm3jo issue du regroupement des fenêtres graphiques
ensuite j'ai créé mes bash pour appeler les application en C
ensuite j'ai créé mes application en C
en fin j'ai placé un répertoire nommé lm3jo contenant 4 répertoires de data (audio, texte, image, doc)

De fait le makefile dois je pense en premier construire :
les fenêtres graphiques, ensuite placer les bash dans bin ....
reprendre l'ordre logique de construction

désolé quand j'ai utilisé le terme binaire, c'est une erreur j'entendais les sources c correspondantes

je dois actuellement encore lier les makefile, car chacune de mes appli possède son main et de fait j'ai créé un répertoire par appli possédant son propre makefile, et ceci dans le répertoire des fenêtres qt

voici en exemple le makefile de adnlicorne

# construction d'un Makefile pour lm3jo sous Qt
#creer avec l'aide des intervenants du forum de http://debian-facile.org/

# les flags pour le linker
LDFlAGS+=-lqt -lsox
# les flags pour le compilo C++
CXXFLAGS+=-DESRI_UNIX

# les compilos
CXX ?= g++
CC ?= gcc

# les dossiers d'installation
PREFIX=$(BASEDIR)/usr
BINDIR=$(PREFIX)/bin
SHAREDIR=$(PREFIX)/share/lm3jo

# les fichiers sources
SRC= $(wildcard *.c)

# les objets générés
OBJ= $(SRC:.c=.o)

# -------------------------------



# La première cible, c'est à dire la cible par défaut, va construire tous les binaires (intiquer les autres binaires à la suite)


all: adnlicorne.o
          gcc adnlicorne.o -o adnlicorne


# Comment faire un .o à partir d'un .c
%.o: %.c
  $(CC) -c $(CFLAGS) $(CPPFLAGS) $^

# Comment faire un .o à partir d'un .cpp
%.o: %.cpp
    $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $^

# Comment produire les exécutables finals (à indiquer pour tous les exécutables)
adnlicorne.o: adnlicorne.c
  gcc -c adnlicorne.c -o adnlicorne.o
%.o: %.c
  @$(CC) -o $@ -c $< $(CFLAGS)
 
 
# Règle de nettoyage
clean:
    rm -f $(OBJECTS)

# Nettoyage complet : rajouter tous les exécutables
cleanall: clean
    rm -f adnlicorne

# Règle d'installation
install:
    install -D -m0755 adnlicorne  $(BINDIR)/adnlicorne

  # Rajouter une ligne pour chaque binaire
    for f in *.sh ; do \
      install -D -m0755 $$f $(BINDIR)/$$f;\
    done
    for f in *.bmp *.png ; do \
      install -D -m0644 $$f $(SHAREDIR)/image/$$f;\
    done
    for f in *.jo ; do \
      install -D -m0644 $$f $(SHAREDIR)/audio/$$f;\
    done
    for f in *.txt ; do \
      install -D -m0644 $$f $(SHAREDIR)/texte/$$f;\
    done

# Règle de désinstallation
uninstall:

    rm  $(BINDIR)/adnlicorne

    # Rajouter une ligne pour chaque binaire
    rm -r $(SHAREDIR)
 
 



je mettrai tout dans le répertoire sources demain




Cordialement

Dernière modification par temps (05-03-2014 03:47:42)

Hors ligne

#20 10-03-2014 23:06:08

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
J'ai repris le code donné après de nombreuses tentatives qui m'ont permis de mieux connaitre makefile (erreur principale espace entre les gcc que je mettais jusqu'à ce soir).
Et j'ai un makefile qui marche code donné au dessous. Que dois-je faire maintenant pour avoir un deb au format debian ?
Cordialement


# construction d'un Makefile pour lm3jo sous Qt
#creer avec l'aide des intervenants du forum de http://debian-facile.org/

# les flags pour le linker
LDFlAGS+=-lqt -lsox
# les flags pour le compilo C++

# les compilos
CXX ?= g++
CC ?= gcc
QMAKE ?= /usr/local/qt/bin/qmake

# les dossiers d'installation
PREFIX=$(BASEDIR)/usr
BINDIR=$(PREFIX)/bin
SHAREDIR=$(PREFIX)/share/lm3jo

# les fichiers sources
  CFILES=$(wildcard *.c lm3jo/*.c)
  CXXFILES=$(wildcard *.cpp lm3jo/*.cpp)

# les objets générés
  OBJECTS=$(CFILES:%.c=%.o) $(CXXFILES:%.cpp:%.o)
# La partie qt
lm3jo_DIR=lm3jo
EXEC=$(lm3jo_DIR)/lm3jo
# La partie data
QUIESTU   := $(USER)
# La première cible, c'est à dire la cible par défaut, va construire tous les binaires (intiquer les autres binaires à la suite)
all: aasynthe.o adnlicorne.o adnmariage.o adnmarteau.o adnnetoie.o adnvinaigrette.o joa-a-jo.o synthemix.o synthevocal.o adnvinaigrettelongue.o synthqt.o $(EXEC)
          gcc aasynthe.o -o aasynthe
          gcc adnlicorne.o -o adnlicorne
          gcc adnmariage.o -o adnmariage
          gcc adnmarteau.o -o adnmarteau
          gcc adnnetoie.o -o adnnetoie
          gcc adnvinaigrette.o -o adnvinaigrette
          gcc joa-a-jo.o -o joa-a-jo
          gcc synthemix.o -o synthemix
          gcc synthevocal.o -o synthevocal
          gcc synthqt.o -o synthqt
          gcc adnvinaigrettelongue.o -o adnvinaigrettelongue
# Comment faire un .o à partir d'un .c
%.o: %.c
  $(CC) -c $(CFLAGS) $(CPPFLAGS) $^

# Comment faire un .o à partir d'un .cpp
%.o: %.cpp
  $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $^

# Comment produire les exécutables finals (à indiquer pour tous les exécutables)
aasynthe: aasynthe.c
  $(LD) -o $@ $(LDFLAGS) $^
adnlicorne: adnlicorne.c
  $(LD) -o $@ $(LDFLAGS) $^
adnmariage: adnmariage.c
  $(LD) -o $@ $(LDFLAGS) $^
adnmarteau: adnmarteau.c
  $(LD) -o $@ $(LDFLAGS) $^
adnnetoie: adnnetoie.c
  $(LD) -o $@ $(LDFLAGS) $^
adnvinaigrette: adnvinaigrette.c
  $(LD) -o $@ $(LDFLAGS) $^
joa-a-jo: joa-a-jo.c
  $(LD) -o $@ $(LDFLAGS) $^
synthemix: synthemix.c
  $(LD) -o $@ $(LDFLAGS) $^
synthqt: synthqt.c
  $(LD) -o $@ $(LDFLAGS) $^
adnvinaigrettelongue: adnvinaigrettelongue.c
  $(LD) -o $@ $(LDFLAGS) $^
$(EXEC):
  @(cd $(lm3jo_DIR) && qmake && $(MAKE))
# Règle de nettoyage
clean:
  rm -f $(OBJECTS)

# Nettoyage complet : rajouter tous les exécutables
cleanall: clean
  rm -f aasynthe adnlicorne adnmariage adnmarteau adnnetoie adnvinaigrette joa-a-jo synthemix synthevocal synthqt adnvinaigrettelongue lm3jo

# Règle d'installation
install:
  install -D -m0755 aasynthe  $(BINDIR)/aasynthe
  install -D -m0755 adnlicorne  $(BINDIR)/adnlicorne
  install -D -m0755 adnmariage  $(BINDIR)/adnmariage
  install -D -m0755 adnmarteau  $(BINDIR)/adnmarteau
  install -D -m0755 adnnetoie $(BINDIR)/adnnetoie
  install -D -m0755 adnvinaigrette  $(BINDIR)/adnvinaigrette
  install -D -m0755 joa-a-jo  $(BINDIR)/joa-a-jo
  install -D -m0755 synthemix $(BINDIR)/synthemix
  install -D -m0755 synthevocal $(BINDIR)/synthevocal
  install -D -m0755 synthqt $(BINDIR)/synthqt
  install -D -m0755 adnvinaigrettelongue  $(BINDIR)/adnvinaigrettelongue
  install -D -m0755 lm3jo/lm3jo $(BINDIR)/lm3jo
  # Rajouter une ligne pour chaque binaire
  for f in *.sh ; do \
    install -D -m0755 $$f $(BINDIR)/$$f;\
  done
  for f in image/*.png ; do \
    install -D -m0644 $$f $(SHAREDIR)/$$f;\
  done
  for f in audio/temps/*.jo ; do \
    install -D -m0644 $$f $(SHAREDIR)/$$f;\
  done
  for f in audio/*.jo ; do \
    install -D -m0644 $$f $(SHAREDIR)/$$f;\
  done
  for f in texte/*.txt ; do \
    install -D -m0644 $$f $(SHAREDIR)/$$f;\
  done
  QUIESTU=$(grep bash /etc/passwd | cut -f1 -d:);\
  chown -R $(QUIESTU) $(SHAREDIR)

 
# Règle de désinstallation
uninstall:
  rm  $(BINDIR)/aasynthe
  rm  $(BINDIR)/adnlicorne
  rm  $(BINDIR)/adnmariage
  rm  $(BINDIR)/adnmarteau
  rm  $(BINDIR)/adnnetoie
  rm  $(BINDIR)/adnvinaigrette
  rm  $(BINDIR)/joa-a-jo
  rm  $(BINDIR)/synthemix
  rm  $(BINDIR)/synthevocal
  rm  $(BINDIR)/synthqt
  rm  $(BINDIR)/adnvinaigrettelongue
  rm  $(BINDIR)/lm3jo
  # Rajouter une ligne pour chaque binaire
  rm -r $(SHAREDIR)
 
 


Pour installer il faut se placer dans le répertoire
faire make
puis faire make install en root
puis donner les droits de lectures écriture au contenue du répertoire /usr/share/lm3jo

Dernière modification par temps (15-03-2014 05:49:00)

Hors ligne

#21 11-03-2014 13:59:06

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Salut temps,

Bien, je vois que tu prends le coup smile

Je n'ai pas trop de temps en ce moment pour continuer mon ébauche de tuto à ce sujet, je t'invite à regarder ce tuto : http://doc.ubuntu-fr.org/tutoriel/creer … ier_paquet

N'hésite pas à poser des questions ici s'il y a des étapes que tu ne comprends pas.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#22 15-03-2014 08:56:13

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
J'ai suivit le lien, et j'ai suivit le tutoriel.
Tout c'est bien déroulé jusqu'à la création d'un répertoire contenant le .tar.xz, le .dsc ...
Ce qui je pense ne veut pas forcément dire que j'ai fait comme il faut à l’ intérieur.
Quand j'essaie de compiler les sources avec

sudo pbuilder build *.dsc


j'obtiens

E: pbuilder-satisfydepends failed.
 


avec au dessus

Depends: sox (>= 12.17.7)qt (>= 4.0.0)debhelper (>= 8.0.0)


Je ne sais pas pourquoi, peut-être est-ce qu'il faut indiquer le nom de la librairie  sox ou qt autrement
C'est un premier jet, je corrigerai le numéro de version plus tard pour l'instant j'ai gardé celle indiquée dans l'exemple
Cordialement

Dernière modification par temps (17-03-2014 21:33:53)

Hors ligne

#23 18-03-2014 01:32:12

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,
Effectivement le problème venait de là, il faut des virgules en plus sox ne se place pas dans build mais dans depend tout seul.
voici fichier control

Source: lm3jo
Section: sound
Priority: extra
Maintainer: Abadie joris temps.jo@gmail.com
Build-Depends: libqt4-dev (>= 4:4.6.2-0ubuntu5.3), qt4-qmake (>= 4:4.6.2-0ubuntu5.3), debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: http://www.letime.net/vocale
#Vcs-Git: git://git.debian.org/collab-maint/lm3jo.git
#Vcs-Browser: http://git.debian.org/?p=collab-maint/lm3jo.git;a=summary

Package: lm3jo
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, sox
Description: Piano virtuel au format audio abadie.jo sous qt
 Lm3jo is a command line lm3jo that can
 play audio files on several linux platforms.


Package: lm3jo-doc
Architecture: all
Description: documentation for lm3jo
 <insert long description, indented with spaces>



J'ai corrigé cette erreur mais il en apparait une autre juste avant la fin dans l'installation, en utilisant le deb qui n'apparaissait pas avant.

make[1]: Entering directory `/tmp/buildd/lm3jo-0.1.5'
install -D -m0755 aasynthe  /usr/bin/aasynthe
install: cannot create regular file '/usr/bin/aasynthe': Permission denied



De plus je me suis aperçu qu'il ne faut pas faire la gestion des data comme je le fait dans le makefile, car sinon l'utilisateur perd le droit d'écriture indispensable à la création de nouveaux sons.
Et comme le but est de produire des mélodies issues de l'imagination, sans aucune forme d'imitation, sans les contraintes physiques existantes avant mes découvertes, c'est sure que ça fait pas.

Je me pose aussi plusieurs questions pour bien remplir
1- faut-il mettre la licence qt ?
2- faut-il mettre la licence sox ?
3- mon paquet utilise un format audio propriétaire libre d'utilisation sous linux, mais le paquet est indépendant du format audio, je donne les codes.
Est-ce que le fait que le format audio soit non libre impose automatiquement que le paquet est non libre ?

J'ai le sentiment de perdre beaucoup trop de temps avec la création d'un paquet deb aux usages, alors que j'ai tellement de développements à faire sur le format adn.
Je vais arrêter cette démarche, pour me concentrer sur d'autres taches :
dev du format adn
article sur les lois de l'entendement (relations entre ce qu'entend le cerveau et les sons captés par les sens, effet mémoire de conditionnement, effet par rapport langue maternelle ...) avec des démos de lm3jo
amélioration des codes comme retouche du bash (une simple boucle changeant les noms de sorties) pour améliorer la compatibilité d'une touche clavier maintenue

Je continue à donner les sources et comment les utiliser, si quelqu'un veut en faire un paquet deb, il est le bienvenue

Cordialement

Dernière modification par temps (19-03-2014 23:28:59)

Hors ligne

#24 23-03-2014 11:56:00

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [packaging] demande d'aide lm3jo en deb

Salut,

1) Tu dois mettre dans ton paquet les licences des fichiers présents dans le paquet. Pour Qt, si tu fais des #include mais ne places pas physiquement de fichiers Qt dans le paquet, pas besoin. (et tu ne devrais pas placer physiquement de fichiers Qt dans ton projet)
2) Même chose

3) Cela dépend de plusieurs points:
a) comment as-tu généré ces fichiers audio ? si tu as fais un enregistrement directement dans le format, ou directement converti dans ce format, alors les fichiers sont considérés comme des sources libres
b) comment le logiciel lit-il ces fichiers audio ? s'il y arrive en n'utilisant que des logiciels libres, alors il est libre smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#25 23-03-2014 20:50:57

temps
Adhérent(e)
Inscription : 02-03-2014

Re : [packaging] demande d'aide lm3jo en deb

Bonjour,

Merci pour la réponse.
Aux moments libres je regarde des sources (surtout comment elles sont construites).
J'ai regroupé les 12 fenêtres qt identiques à l'aide d'un switch.

Au sujet du logiciel et à la lecture de la réponse, je pense pouvoir le présenter comme libre.
Pour bien comprendre comment j'arrive à cette conclusion :
Je ne travaille pas sur les effets "les fichiers audio" ( car plusieurs causes peuvent avoir le même effet et ce serait un signe de folie). Je travaille sur les causes.
L'outil que je présente (lm3jo)  peut s'écrire de plusieurs manières et ma démarche n'est pas de donner un outil passe partout, mais de donner un outil (en expliquant son fonctionnement) que les tux puissent adapter à leur besoins.
Donnée 1 : Pour revenir sur l'audio, le cerveau fait filtre des nombreuses informations qui lui parviennent et l'audio en fait partie. Donc nous n'entendons pas la même chose selon la manière dont nous conditionnons notre cerveau
Données 2 : Je n'ai pas créé de modéliseur performant car ce serait un outil d'imitation, et qui dit imitation dit croyance, dit abrutissement. Le contraire de mes motivations. Les acoustiques produites sont toutes droites sorties de l'imagination, même si le naturelle pousse à s'inspirer de sons déja entendus
Données 3 : J'ai découvert de super arrangements qui ont des effets sur mon chat, mon but n'est pas de donner ces arrangements, mon but est que chacun puisse créer ses acoustiques selon ses imaginations. 5une manière d'agrandir le patrimoine accoustique ou chacun puisse créer et ouvrir l'esprit de son voisin).

Les restrictions sont sur le format audio créé par l'outil, pas sur l'outil lui-même.
D'ailleurs en plusieurs lieux, j'indique clairement que les créateurs de sons acoustiques peuvent commercialiser les oeuvres créées avec l'outil.

Pour résumer en théorie l'outil est libre, mais comme il a pour effet de produire un format audio restreint à linux et freeBSD, il ne peut être utilisé en dehors de linux et freeBSD, ce qui le rend non libre au sens entendue par la licence GNU. L"esprit du libre est conservé avec les codes donnés mais il y a une adaptation différente de la GNU aux lois ; des lois imposées par le système commerciale propriétaire.

De la réussite de cette démarche, dépend la création de nombreux projets du libre en attente (carte audio linux, moteur de recherche de paquet, moteur de recherche système expert, ...). Ceux-ci sont dépendant d'un système à économie non-libre de fait qui a consolidé le choix de cette forme imposé par les premiers DEV qui m'avaient rejoins sur ce projet, il y a 4 ans quelques mois après que j'ai créé le format.

Cordialement

Dernière modification par temps (24-03-2014 07:51:06)

Hors ligne

Pied de page des forums