#1 Le 04/01/2019, à 21:49
- Zakhar
[Résolu] Quels outils pour une page de "man" pour packager sur ppa
Bonjour,
j'ai réussi, après moult recherches, à me composer un mode d'emploi pour packager un programme C dans mon PPA.
La documentation est vraiment mal faite et parcellaire, par exemple il n'est expliqué clairement nulle part ce qu'on doit faire dans le "make" pour que le binaire se trouve au bon endroit... ça j'ai dû "deviner" en tâtonnant.
Ma question aujourd'hui, pour le cas où quelqu'un en aurait l'expérience, c'est que j'aimerais, aux côté de mon programme C, livrer une page de man en anglais et en français.
Mais voila, je n'ai trouvé nulle part une documentation claire sur comment faire ça dans le package qu'on donne sur son PPA.
Est-ce que quelqu'un pourrait me donner un lien expliquant comment on procède pour avoir ces deux pages de "man", et me donner des conseils d'outils pour une page (tant que ce n'est qu'une page... c'est peut-être plus rapide "à la main" que d'apprendre un outil me direz-vous !) et aussi éventuellement l'outil/principes de traduction.
Merci d'avance si par hasard il y a quelqu'un de "pointu" qui a déjà fait ça et peut prendre le temps de me mettre un lien.
Dernière modification par Zakhar (Le 09/01/2019, à 00:31)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#2 Le 05/01/2019, à 10:44
- Hizoka
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Salut,
je suis d'accord avec toi, c'est un sacré merdier...
Pour les man, perso je fais ça :
les man de mon mkv-extractor-qt5 sont dans un dossier man :
mkv-extractor-qt5/man/mkv-extractor-qt5.1
mkv-extractor-qt5/man/mkv-extractor-qt5.fr.1
et le dossier debian doit contenir le fichier manpages
mkv-extractor-qt5/debian/mkv-extractor-qt5.manpages
et celui-ci contient :
man/mkv-extractor-qt5.1
man/mkv-extractor-qt5.fr.1
En espérant que ça puisse t'aider.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 05/01/2019, à 15:10
- Zakhar
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Merci Hizoka, je vais tester ça pour voir !
Et une fois qu'on a fait ça, les commandes "bazar" les bien nommées (bzr) vont générer ce qu'il faut dans le "source_change" qui part sur le ppa ?
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#4 Le 05/01/2019, à 18:21
- Hizoka
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Perso je créé les sources avec debuild -S -sa -kXXXX et les manpages sont gérés automatiquement.
je ne connais pas bazar.
Mes softs sont en bash ou en python.
Dernière modification par Hizoka (Le 05/01/2019, à 18:22)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 06/01/2019, à 20:16
- Zakhar
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Le dernière commande de mon "walkthrough", trouvé sur la documentation en ligne pour publier sur le ppa est :
bzr builddeb -S
Ca correspond donc sans doute à peu près à ce que tu fais.
Je n'utilise pas les builds locaux en réalité, j'upload sur le ppa, et je récupère le build créé par les serveurs du Launchpad.
Je vais tester pour voir si ça fonctionne.
Dernière modification par Zakhar (Le 06/01/2019, à 20:18)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#6 Le 07/01/2019, à 00:26
- Zakhar
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
J'ai un peu galéré à trouver de la documentation pour créer la page de man... puis j'ai trouvé : help2man
Génial :
help2man mon_programme
... et on a déjà une page sympathique avec tout le balisage, composée à partir de ce que donne
mon_programme --help
Plus qu'à la modifier avec nano... le seul éditeur que j'ai trouvé qui fait la coloration du nroff.
Dernière modification par Zakhar (Le 07/01/2019, à 00:27)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#7 Le 07/01/2019, à 08:58
- Hizoka
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Perso, je ne compile rien en local, ça me crée différents fichiers tar.gz dont debian et le soft, j'uploade le tout sur le ppa qui va faire la compilation.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#8 Le 08/01/2019, à 00:06
- Zakhar
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Et où as-tu trouvé ton "mode d'emploi" pour packager des scripts ?
Avec le C il y a une complexité additionnelle, c'est faire le Makefile pour qu'il pose le compilé au bon endroit. Mais ça j'ai trouvé. ;-)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#9 Le 08/01/2019, à 18:31
- Hizoka
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
J'ai trouvé sur les doc debian sur le net et 1 ou 2 personnes m'ont aidé en autre avec la création du fichier rules
#!/usr/bin/make -f
%:
dh ${@} --parallel --with python3
override_dh_python3:
dh_python3 --ignore-shebangs
override_dh_pysupport:
override_dh_builddeb:
# Compression du dossier data du paquet debian
dh_builddeb -- -Zxz
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 08/01/2019, à 22:48
- Zakhar
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Humm... c'est pas complet, parce que ça devrait finir par un dput sur ton ppa !
Voici mon "how to" (documentation Launchpad)
How to make a package for Launchpad, customisé par exemple pour mon paquet astreamfs
# Make the tar:
$ cd ~/dev/astreamfs/ # Le répertoire de développement
$ cp astreamfs.c astreamfs_util.c astreamfs_util.h LICENSE *.md /tmp
$ cp Makefile /tmp/Makefile
$ cd /tmp
$ tar cf astreamfs.tar astreamfs.c astreamfs_util.c astreamfs_util.h LICENSE Makefile README.md TODO.md
# Initialize:
$ mkdir build
$ cd build
$ bzr dh-make astreamfs 0.9.0~Xenial /tmp/1fichierfs.tar
# Response: s y
# Prepare:
$ cd astreamfs
$ rm debian/*.ex debian/*.EX
$ cp ~/dev/astreamfs/debian/co* debian/
# Mettre à Jour le fichier changelog en prenant modèle sur celui stocké dans le répertoire de développement
$ bzr add debian/source/format
$ bzr commit -m "0.9.0 Le but de ce commit"
$ bzr builddeb -- -us -uc
$ bzr builddeb -S
$ cd ..
$ dput ppa:alainb06/astreamfs astreamfs_0.9.0~Xenial-1_source.changes
Le Makefile contient les instructions de compilation classiques, mais surtout :
install:
ifdef DESTDIR
mkdir -p $(DESTDIR)/usr/bin/
cp $(TARGET) $(DESTDIR)/usr/bin/
else
cp $(TARGET) /usr/bin/
endif
En effet, les outils de packaging debian utilisent une "fakeroot", et pour cela il envoient le paramètre DESTDIR à la commande make.
Pour que l'exécutable se retrouve donc, un fois installé par le package, dans /usr/bin, il faut bien utiliser ce DESTDIR.
L'autre branche du test est utilisée quand on compile le package en local.
A la phase marqué "Mettre à jour le changelog", ce qui est important c'est de mettre le nom de la version cible. Les outils étant fait pour debian, par défaut on se retouve avec "unstable".
On remplace sont "unstable" par la version ciblée, ici "xenial" (ou "bionic", etc...)
On modifie également le message indiquant ce qu'on a changé... qui en principe devrait correspondre avec ce qu'on a mis dans le commit.
Si on saute cette phase, le ppa va rejeter l'upload en disant : "je ne connais pas la version 'unstable' dans laquelle vous voulez construire ce paquet"
Donc on a construit le package dans /tmp/build/nom_du_package
... et j'imagine qu'à un moment il faut que je trouve où insérer le foutu "man"... à moins qu'il faille le coller dans le "tar" d'origine...
Un truc pénible aussi avec les outils "bzr", c'est qu'ils tiennent à passer "lintian" (vérification qu'on a bien tout fait ce qu'il faut)... mais celui-ci échoue visiblement parce qu'ils ont mis des IP en dur et que le serveur a dû changer. Mais du coup ça bloque pendant 3 minutes (sans doute le temps du time out). C'est un script perl, et comme je ne suis pas trop à l'aise dans ce langage, je n'ai pas trouvé où le "commenter" (je n'en ai pas besoin)... du coup à chaque fois je me paye l'attente.
Bon, je vais continuer à tenter avec la méthode qui a l'air "officielle ubuntu", et essayer de trouver à quelle étape je peux coller le "man" pour qu'il se retrouve au bon endroit.
Le bon candidat a l'air d'être au moment où on prépare le répertoire "debian" du build.
Dernière modification par Zakhar (Le 08/01/2019, à 22:54)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#11 Le 08/01/2019, à 23:09
- Hizoka
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
oui oui, je fais un dput manuel à la fin pour l'envoyer sur le ppa.
pour le man, le mec qui me l'avait dit semblait plutôt bien calé dans le domaine.
si tu veux voir mes sources : https://launchpad.net/~hizo/+archive/ub … /+packages
je lance pour la 1ere fois : debuild -S -sa -kXXXX (qui va intégrer les sources)
puis une boucle me change les versions ubuntu du fichier changelog comme tu le signales et exécute debuild -S -sd -kXXXX (qui ne va prendre en compte que le dossier debian et pas les sources car déjà existantes)
puis un dput -U "${ppa}" ./"*.changes" pour envoyer le tout.
Dernière modification par Hizoka (Le 08/01/2019, à 23:17)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#12 Le 09/01/2019, à 00:23
- Zakhar
Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa
Eh bien en fait avec "bazar" ta méthode ne fonctionne absolument pas.
Hélas, il se fiche qu'on mette un "progname.manpages" dans /debian, il n'en tient même pas compte dans le commit.
Pas plus que ne fonctionne le fait de mettre la manpage dans un sous répertoire du tar. C'est pire, ça plante tout.
... mais j'ai trouvé une solution toute bête !...
Je ne sais pas si c'est un "hack" ou si c'est bien comme ça qu'on est sensé faire, mais en tout cas ça marche.
-1) Rajouter le "progname.1.gz" (manpage) dans le tar qu'on compose avant de lancer bzr. On rajoute "à plat" (sans créer un sous répertoire)
-2) Modifier le makefile ainsi
ifdef DESTDIR
mkdir -p $(DESTDIR)/usr/bin/
cp $(TARGET) $(DESTDIR)/usr/bin/
mkdir -p $(DESTDIR)/usr/share/man/man1/
cp $(TARGET).1.gz $(DESTDIR)/usr/share/man/man1/
else
cp $(TARGET) /usr/bin/
cp man/$(TARGET).1.gz $(DESTDIR)/usr/share/man/man1/
endif
Voila, ça fait le job.
C'est le make install qui créée dans la "fakeroot" du paquet debian les répertoires et copie les fichiers qu'on y attend.
Le jour où j'ai écrit la deuxième page en français, je rajoute 3 lignes dans le make et le tour est joué !
Merci pour l'aide en tout cas Hizoka, même si elle était inapplicable à mon "how to".
Je mets en "résolu"... même si ce n'est pas la "méthode officielle"... en attendant de tomber sur une hypothétique documentation qui décrirait la méthode "officielle" !
Dernière modification par Zakhar (Le 09/01/2019, à 00:26)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne